Mermaid で描ける図の種類と書き方の例: 用途から選ぶ一覧
Mermaid で描ける図の種類と、書き方の例をメモしました。普段の文書なら、フローチャート、シーケンス図、状態遷移図、ER 図の4つでたいていの図が描けます。
環境
- Mermaid 11.12.2(このブログで使っているバージョン)
- Mermaid 11.17.2(VS Code 1.144.0 に入っているバージョン)
一覧
図の書き出しの言葉(1行目)で、図の種類が決まります。
| 伝えたいこと | 図 | 書き出し |
|---|---|---|
| 処理の流れ、分岐 | フローチャート | flowchart |
| サービス同士のやり取りの順番 | シーケンス図 | sequenceDiagram |
| 状態の移り変わり | 状態遷移図 | stateDiagram-v2 |
| テーブルの関係 | ER 図 | erDiagram |
| クラスの関係 | クラス図 | classDiagram |
| 予定と期間 | ガントチャート | gantt |
| 出来事の順番 | タイムライン | timeline |
| ブランチの流れ | Git グラフ | gitGraph |
| 考えの整理 | マインドマップ | mindmap |
| インフラの構成 | アーキテクチャ図 | architecture-beta |
| 割合 | 円グラフ | pie |
| パケットの構造 | パケット図 | packet-beta |
書き方の例
迷いやすいのは次の4組です。
フローチャートとシーケンス図
1つの処理の分岐を見せるならフローチャート、複数の登場人物の間のやり取りを見せるならシーケンス図です。
同じ「記事を表示する」という話でも、ログインの有無で分かれる話はフローチャートが向いています。
mermaidflowchart TD
A[開始] --> B{ログイン済み?}
B -->|はい| C[記事を表示]
B -->|いいえ| D[ログイン画面]
ブラウザー、API、データベースの間で何がどの順番に流れるかを見せるなら、シーケンス図です。
mermaidsequenceDiagram
participant B as ブラウザー
participant A as API
participant D as データベース
B->>A: 記事を取得
A->>D: 検索
D-->>A: 結果
A-->>B: JSON
タイムラインとガントチャート
期間や依存関係が要らなければ、タイムラインで足ります。
mermaidtimeline
title サイトの移行
2026年1月 : 調査
2026年2月 : 新環境の構築
2026年3月 : 本番の切り替え
「調査が終わってから構築を始める」という依存関係や日数を表すなら、ガントチャートです。
mermaidgantt
dateFormat YYYY-MM-DD
title 移行の予定
section 準備
調査 :a1, 2026-01-05, 10d
構築 :after a1, 14d
フローチャートと状態遷移図
処理の手順ならフローチャート、「下書き」「公開」のように状態が移り変わる話なら状態遷移図です。
mermaidstateDiagram-v2
[*] --> 下書き
下書き --> 公開: 公開する
公開 --> [*]
ER 図とクラス図
データベースのテーブルの関係なら ER 図、プログラムのクラスの継承や関連ならクラス図です。
mermaiderDiagram
ユーザー ||--o{ 記事 : 書く
ER 図にはテーブルの列も書けます。列の説明は " で囲むと日本語にできます。
mermaiderDiagram
USER ||--o{ POST : writes
USER {
int id
string name "名前"
}
POST {
int id
string title "タイトル"
}
mermaidclassDiagram
class 利用者 {
+名前
+ログインする()
}
利用者 <|-- 管理者
Git グラフ
ブランチの流れを表します。
mermaidgitGraph
commit id: "初回"
branch develop
checkout develop
commit id: "機能の追加"
checkout main
merge develop
マインドマップ
考えの整理に使います。
mermaidmindmap
root((記事))
調査
検索語
公式の案内
手順
動かす
結果
公開
アーキテクチャ図
アイコン付きの構成図です。このブログの 11.12.2 では、英語のラベルだけが通ります。
mermaidarchitecture-beta
group vpc(cloud)[VPC]
service web(server)[Web] in vpc
service db(database)[DB] in vpc
web:R --> L:db
ユーザージャーニー
作業ごとの満足度を表します。
mermaidjourney
title 記事を書く流れ
section 準備
調べる: 5: 筆者
試す: 3: 筆者
section 公開
書く: 4: 筆者
カンバン
作業の状況を列で表します。
mermaidkanban
未着手
t1[記事を書く]
作業中
t2[動かす]
完了
t3[公開する]
パケット図
通信の説明に使います。
mermaidpacket-beta
0-15: "送信元ポート"
16-31: "宛先ポート"
32-63: "シーケンス番号"
円グラフ
割合を見せます。
mermaidpie title 流入の内訳
"検索" : 60
"直接" : 40
ブロック図
配置を自分で決めたいときに使います。
mermaidblock-beta
columns 3
a["ブラウザー"] b["API"] c["データベース"]
a --> b
b --> c
レーダーチャート
複数の軸で比べます。
mermaidradar-beta
title 比較
axis a["速度"], b["安定"], c["価格"]
curve x["案1"]{4,3,2}
curve y["案2"]{2,4,3}
ツリーマップ
全体に対する内訳を面積で表します。
mermaidtreemap-beta
"全体"
"検索": 60
"直接": 30
"その他": 10
XY チャート
棒グラフと折れ線グラフを描けます。横軸の日本語は " で囲みます。
mermaidxychart-beta
title "月別の件数"
x-axis ["1月", "2月", "3月"]
y-axis "件数" 0 --> 100
bar [30, 50, 80]
line [30, 50, 80]
四象限チャート
2つの軸で分類します。
mermaidquadrantChart
title 優先度
x-axis "効果 小" --> "効果 大"
y-axis "手間 小" --> "手間 大"
A: [0.8, 0.2]
B: [0.3, 0.7]
要件図
要件とその関係を表します。
mermaidrequirementDiagram
requirement r1 {
id: 1
text: "ログインできること"
risk: high
verifymethod: test
}
C4 図
システムの全体像を表します。
mermaidC4Context
title 構成
Person(u, "利用者")
System(s, "ブログ")
Rel(u, s, "読む")
サンキー図
流れの量を表します。項目は英語で書きます。
mermaidsankey-beta
search,article,60
direct,article,40
ネットワーク構成図
専用の図はないので、flowchart か architecture-beta を使います。書き方は Mermaid でネットワーク構成図を書く手順 にあります。
注意点
日本語のラベルでエラーになる図
日本語のラベルは、ほとんどの図で使えますが、図によってはそのまま書くとエラーになります。
| 図 | 11.12.2 | 11.17.2 | 日本語を入れた場所 |
|---|---|---|---|
flowchart | 通る | 通る | ノードの名前 |
sequenceDiagram | 通る | 通る | 登場人物、メッセージ |
stateDiagram-v2 | 通る | 通る | 状態の名前 |
erDiagram | 通る | 通る | テーブルの名前 |
classDiagram | 通る | 通る | クラスの名前 |
gantt | 通る | 通る | タスクの名前 |
timeline | 通る | 通る | 出来事の名前 |
mindmap | 通る | 通る | 項目の名前 |
pie | 通る | 通る | 項目の名前 |
journey | 通る | 通る | 作業の名前 |
kanban | 通る | 通る | 列とカードの名前 |
packet-beta | 通る | 通る | 項目の名前 |
block-beta | 通る | 通る | ブロックの名前 |
radar-beta | 通る | 通る | 軸の名前 |
requirementDiagram | 通る | 通る | 要件の本文 |
C4Context | 通る | 通る | 人とシステムの名前 |
treemap-beta | 通る | 通る | 項目の名前 |
quadrantChart | " で囲むと通る | 通る | 軸の名前 |
xychart-beta | " で囲むと通る | " で囲むと通る | 横軸の項目 |
gitGraph | " で囲むと通る | " で囲むと通る | ブランチの名前 |
architecture-beta | エラー | 通る | サービスの名前 |
sankey-beta | エラー | エラー | 項目の名前 |
" で囲むと、次のように書けます。
textgitGraph
commit id: "初回"
branch "開発"
checkout "開発"
commit
textxychart-beta
x-axis ["1月", "2月"]
y-axis "件数" 0 --> 100
bar [10, 50]
architecture-beta は、" で囲んでも 11.12.2 ではエラーになります。sankey-beta は英語の項目を使います。
手元では描けたのに、公開先で描けないとき
手元で描けた図が公開先で描けないときは、表示する環境の Mermaid のバージョンが違います。VS Code 1.144.0 に入っている 11.17.2 で通る図が、11.12.2 ではエラーになることがあります。新しい図を使うときは、公開先で一度表示します。
参考文献
著書
article2026年11月3日VS Code で Mermaid の図をプレビューする手順: 1.121 以降は拡張機能なしで表示できる
article2026年11月3日Mermaid でネットワーク構成図を書く手順: flowchart と architecture-beta の書き方
article2026年11月3日Mermaid で描ける図の種類と書き方の例: 用途から選ぶ一覧
articleMermaid の色・タイポグラフィ設計:ブランドトークンを themeVariables に落とす
articleMermaid class diagram 速習:継承・集約・関連の表し分けとアンチパターン
articleMermaid CLI(mmdc)速攻導入:インストールからバッチ生成・自動リサイズまで
articleClaude Code と Codex を並列で動かしたときの動き: 同じファイルでも書き換えは消えない
articleClaude Code の Stop フックで、終わる前にテストを走らせる手順: 失敗が残ったまま終わらない
articleClaude Code と Codex のスキルの置き場所の動き: .claude/skills と .agents/skills は互いに読まない
articleClaude Code の /security-review で変更を点検する手順: origin/HEAD がないと止まる
articleClaude Code と Codex のスキルを入れる前に中身を確かめる手順: security-audit で見る5か所
articleCloudflare の security-audit スキルを Claude Code と Codex で比較: 3つとも見つけ、進め方に差
