Mermaid構文チートシート

mermaidのリファレンスは広大ですが、実際に描かれる図のほとんどは、その中のごく一部でカバーできます。このページはまさにその一部です ― 形状、矢印、グループ化、色、そして図の種類ごとのコピペ用サンプル。以下のスニペットはそのまま描画されます。エディタに貼り付けて確認してください。

最短で動くフローチャート

フローチャートには宣言行1つと矢印1つがあれば十分です。TDは上から下(top-down)を意味し、横に広いプロセスにはLR(左から右)が向いています。

flowchart TD
  A[Start] --> B{Ready?}
  B -->|Yes| C[Ship it]
  B -->|No| A
3つのノードからなる、上から下へのフローチャート。

A、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 --> C1行で書く連鎖
A --> B & C1つの起点から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
それぞれが独自のストアを持つ、2つのサービス。

色とスタイル

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 --> [*]: finish

ER図(実体関連図)

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, 5d

mermaidが単体でレンダリングされる場所

  • 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の構文として文書化されているものはすべてここで動作します。

その他のガイド

  1. MermaidをPNGやSVGに書き出す

    mermaid図から抜け出す4つの方法 ― PNG、SVG、.mmdソース、Markdownブロック ― それぞれが正解になる場面。

  2. Mermaidシーケンス図

    参加者、矢印の種類、アクティベーションバー、ループ、altブロック ― シーケンス図の構文全体を、実行できる実例とともに。

エディタを開いてください。 無料 — 登録不要。

空のキャンバス、コードタブ、すべての書き出しオプション ― 無料で、今すぐブラウザで。