Mermaid
Markdown 内にテキストベースで図表を記述し、自動的にレンダリングするダイアグラム記法
Mermaid とは
Mermaid は、テキストベースの記法でフローチャート、シーケンス図、ER 図、ガントチャート、クラス図などを記述し、自動的に SVG にレンダリングするダイアグラムツールである。2019 年に Knut Sveidqvist が開発し、GitHub、GitLab、Notion が Markdown 内の Mermaid 記法をネイティブにサポートしている。
画像編集ツールで図を作成する代わりに、コードとして図を管理できる。Git で差分を追跡でき、プルリクエストで図の変更をレビューできる。
主要な図の種類
フローチャート
graph TD
A[ユーザーリクエスト] --> B{認証済み?}
B -->|Yes| C[API 処理]
B -->|No| D[401 Unauthorized]
C --> E[レスポンス返却]
シーケンス図
sequenceDiagram
Client->>API Gateway: POST /orders
API Gateway->>Lambda: Invoke
Lambda->>DynamoDB: PutItem
DynamoDB-->>Lambda: Success
Lambda-->>API Gateway: 201 Created
API Gateway-->>Client: Response
ER 図
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ ORDER_ITEM : contains
ORDER_ITEM }|--|| PRODUCT : references
状態遷移図
stateDiagram-v2
[*] --> Draft
Draft --> Pending: confirm
Pending --> Paid: pay
Paid --> Shipped: ship
Draft --> Cancelled: cancel
Pending --> Cancelled: cancel
GitHub での活用
GitHub の Markdown ファイル (README.md、Issue、PR) で Mermaid を直接レンダリングできる。
```mermaid
graph LR
A[S3] --> B[CloudFront] --> C[ユーザー]
```
ADR (Architecture Decision Record) での活用
アーキテクチャの意思決定を記録する ADR に、Mermaid でシステム構成図やデータフローを埋め込む。テキストベースなので、アーキテクチャの変更履歴を Git で追跡できる。
Mermaid vs 他のツール
Mermaid と他のツールの違いを以下にまとめる。
| ツール | 形式 | 特徴 |
|---|---|---|
| Mermaid | テキスト (Markdown 内) | GitHub ネイティブ、Git 管理可能 |
| PlantUML | テキスト | UML に特化、Java 依存 |
| draw.io | GUI | 自由度が高い、XML 形式 |
| Excalidraw | GUI | 手書き風、コラボレーション |
Mermaid はテキストベースで Git 管理できる点が最大の強み。複雑なレイアウトが必要な場合は draw.io や Excalidraw の方が適している。
よくある落とし穴
複雑すぎる図
Mermaid は自動レイアウトのため、ノードが多すぎると見づらくなる。1 つの図に 15 ノード以上は避け、複数の図に分割する。
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
関連する記事
DevOps 本ガイド - CI/CD とインフラ自動化を学ぶ技術書の選び方
DevOps の文化・原則から CI/CD、IaC、オブザーバビリティまで学べる技術書の選び方と学習順序を紹介します。
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、特定の技術書の影響が色濃く反映されています。OSS のコードと技術書の関係を知ると、両方の理解が深まります。
会議中に「あの本のあの図」が頭に浮かぶ瞬間
設計会議やアーキテクチャレビューの最中に、過去に読んだ技術書の図やダイアグラムが頭に浮かぶことがあります。この現象が起きる仕組みと、図を記憶に残す読書法を解説します。