Mermaid構文チートシート
mermaidのリファレンスは広大ですが、実際に描かれる図のほとんどは、その中のごく一部でカバーできます。このページはまさにその一部です ― 形状、矢印、グループ化、色、そして図の種類ごとのコピペ用サンプル。以下のスニペットはそのまま描画されます。エディタに貼り付けて確認してください。
最短で動くフローチャート
フローチャートには宣言行1つと矢印1つがあれば十分です。TDは上から下(top-down)を意味し、横に広いプロセスにはLR(左から右)が向いています。
flowchart TD
A[Start] --> B{Ready?}
B -->|Yes| C[Ship it]
B -->|No| AA、B、Cはノードid ― 内部的な名前であり、画面には描かれません。角括弧内のテキストがラベルで、角括弧の種類が形状を決めます。
ノードの形状
形状は、ラベルを囲む区切り記号のペアによって決まります。覚えておく価値があるのは次のものです。
| 構文 | 形状 | 主な意味 |
|---|---|---|
A[Text] | 四角形 | 処理・アクション |
A(Text) | 角丸 | 開始・終了地点 |
A([Text]) | ピル型 | 終端 |
A[[Text]] | サブルーチン | 別の処理の呼び出し |
A[(Text)] | 円柱 | データベース・保存領域 |
A((Text)) | 円 | 分岐点 |
A{Text} | ひし形 | 判断 |
A{{Text}} | 六角形 | 準備ステップ |
A[/Text/] | 平行四辺形 | 入力または出力 |
A[/Text\] | 台形 | 手動操作 |
ラベルに角括弧、コロン、引用符が含まれる場合は引用符で囲みます: A["Load (raw) data"]。引用符がないと、パーサーは記号を構文として解釈してしまいます。
矢印
| 構文 | 結果 |
|---|---|
A --> B | 矢印 |
A --- B | 矢じりのない線 |
A -.-> B | 点線の矢印 |
A ==> B | 太い矢印 |
A -->|label| B | ラベル付きの矢印 |
A --> B --> C | 1行で書く連鎖 |
A --> B & C | 1つの起点から2つの対象へ |
矢印の長さにも意味があります。-->は1ランク分、--->は対象をもう1ランク下に押し下げます。mermaidが提供する、最もシンプルなレイアウト制御です。
サブグラフによるグループ化
subgraphはノードの周りにラベル付きの枠を描きます。サブグラフは入れ子にでき、矢印は境界を自由に越えられます。
flowchart LR
subgraph api["API"]
H[Handler] --> S[(Postgres)]
end
subgraph worker["Worker"]
Q[Queue] --> W[Job]
end
H --> Q色とスタイル
styleは1つのノードを彩色します。classDefとclassを組み合わせると複数のノードをまとめて彩色でき、ノードが3〜4個を超えたら使いたくなります。
flowchart TD
A[OK] --> B[Failed]
style A fill:#16a34a,stroke:#333,color:#fff
classDef bad fill:#dc2626,stroke:#333,color:#fff
class B bad色は図のソースの一部なので、書き出し後も保持され、ファイルと一緒に移動します。これはレンダリングするツールのテーマ設定には一切依存しません。
図の種類ごとの実例
シーケンス図
sequenceDiagram
participant User
participant API
participant DB
User->>API: request
API->>DB: query
DB-->>API: rows
API-->>User: responseクラス図
classDiagram
class Animal {
+String name
+move()
}
class Dog {
+bark()
}
Animal <|-- Dog状態遷移図
stateDiagram-v2
[*] --> Idle
Idle --> Running: start
Running --> Idle: stop
Running --> [*]: finishER図(実体関連図)
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
CUSTOMER {
string name
string email
}ガントチャート
gantt
title Project
dateFormat YYYY-MM-DD
section Phase 1
Task 1 :a1, 2026-01-01, 5d
Task 2 :after a1, 5dmermaidが単体でレンダリングされる場所
- GitHub ― フェンス付きの```mermaidブロックが、issue、プルリクエスト、コメント、READMEファイルの中でレンダリングされます。
- GitLab ― 同じフェンス付きブロックが、issue、マージリクエスト、Wikiの中でレンダリングされます。
- Notion ― 言語をMermaidに設定したコードブロックが、ソースの隣にレンダリングされます。
- Obsidian ― フェンス付きのmermaidブロックがプレビューモードでレンダリングされます。
- ドキュメントサイト ― Docusaurus、MkDocs Material、VitePressはいずれもmermaidブロックに対応しています。
これこそが、図を画像ではなくmermaidのまま残しておくべき本当の理由です。図は、それが説明する対象と同じテキストファイルの中に存在し、コードレビューで何が変わったかを確認できます。
このページのどのスニペットも試せます
コードタブに貼り付ければ即座に描画されます ― あるいはキャンバス上で同じ図を作って、構文を逆から読み取ることもできます。
よくある質問
ノードラベルの中で改行するには?
引用符で囲んだラベルの中で<br>を使います: A["First line<br>Second line"]。mermaidはラベルをHTMLとしてレンダリングするため、構文自体はHTMLでなくてもこのタグは機能します。
ラベルのせいで図が壊れるのはなぜ?
ほとんどの場合、ラベル内の角括弧、丸括弧、コロン、引用符が引用符なしで使われていることが原因です。ラベル全体を二重引用符で囲めば、パーサーはその記号を構文として扱わなくなります。
レイアウトを制御できますか?
間接的にのみ可能です。方向(TD、LR、BT、RL)を選び、矢印を長くして(--->)ノード間を広げ、関連するノードをサブグラフにまとめます。残りはmermaidが自動で計算します ― 座標という概念はありません。
このエディタはどのmermaidバージョンを使っていますか?
現行のメジャーバージョンであるmermaid 11を使用しているため、v10とv11の構文として文書化されているものはすべてここで動作します。