Mermaidのフローチャートを書くには:方向、ノード、矢印。

Mermaidのフローチャートは、コードブロックの中のテキストです。ノードに名前を付け、矢印でつなぐと、図が自動で描かれます。ここではコピーできる例とともに構文を説明します。

macOS 14以降。閲覧は無料で、編集とレビューは1回のお支払いです。

要点

mermaidと付けたコードブロックを始め、flowchartと方向を書き、ノード間のリンクを並べます。TDは上から下、LRは左から右に描きます。四角は[text]、分岐は{text}、矢印は-->です。

```mermaid
flowchart LR
    A[Write spec] --> B{Approved?}
    B -->|Yes| C[Build]
    B -->|No| A
```

·

方向

1行目で図の種類と方向を指定します。flowchartと、古いgraphのどちらも使えます。

  • TDまたはTB:上から下
  • BT:下から上
  • LR:左から右
  • RL:右から左

ページの幅に収まる短い流れにはLR、長い流れにはTDを選びます。

ノードの形

ノードは、IDと、そのあとに括弧で囲んだテキストで書きます。括弧の種類で形が決まります。

flowchart LR
    a[Rectangle]
    b(Rounded)
    c([Stadium])
    d[[Subroutine]]
    e[(Database)]
    f((Circle))
    g{Decision}
    h{{Hexagon}}
    i[/Parallelogram/]

括弧のないノードは、IDがそのまま表示されます。ノードはあとでIDだけで再び指定できるので、形とテキストは1回だけ書けば済みます。

サブグラフ

サブグラフは、ノードをラベル付きの枠にまとめます。subgraphで始まり、endで終わります。

flowchart TD
    subgraph client [Client]
        A[Browser] --> B[App]
    end
    subgraph server [Server]
        C[API] --> D[(Database)]
    end
    B --> C

括弧の中の言葉がタイトルで、その前の言葉がリンク先に指定できるIDです。サブグラフの中に独自のdirection LRの行を書けますが、中のノードが外にリンクしていると、その方向は無視されます。

完全な例

まとめとして、分岐、戻りのループ、グループ化した手順を含む小さなリリースの流れを示します。

flowchart TD
    A([Start]) --> B[Write the change]
    B --> C{Tests pass?}
    C -->|No| B
    C -->|Yes| D[Open a pull request]
    subgraph review [Review]
        D --> E{Approved?}
        E -->|No| B
    end
    E -->|Yes| F[(Merge)]

上から読みます。スタジアム形が開始、ひし形が質問、ラベル付きの矢印が答え、2つのノードを囲む枠がレビューです。分岐を質問、矢印をその答えとして名前を付けると、説明なしで読めるフローチャートになります。

コメントとスタイル

%%で始まる行はコメントで、描画されません。ノードに色を付けるには、クラスを定義して適用します。

flowchart TD
    %% the happy path
    A[Start]:::good --> B[Done]:::good
    classDef good fill:#d4f4dd,stroke:#2d7a46

スタイルは控えめにしましょう。たいていのフローチャートは、色が少ないほうが読みやすく、ライトテーマとダークテーマで見え方が変わることもあります。

よくある間違い

  • 小文字のendをノードのテキストに使うと、図が崩れます。Endと書くか、テキストを引用符で囲みます。
  • リンクのすぐ後ろで、oやxで始まるノードID(A---oBなど)は、円やバツのリンクとして読まれます。スペースを入れるか、大文字にします。
  • ラベルの中の特殊文字。括弧やコロンはダブルクォートで囲む必要があります:A["Save (draft)"]。
  • 1行目がない。flowchart TDがないと何も描かれません。
  • ノードが多すぎる。30個の四角があるフローチャートは読みにくくなります。分割するか、サブグラフを使います。

図が失敗すると、Mermaidがエラーメッセージを表示し、テキストはファイルに残るので修正できます。

描画する

GitHubはMarkdownファイルのMermaidブロックを描画し、DotMDも同様に、オフラインで、ページに合わせたライトまたはダークテーマで描きます。エディタではInsert → Diagramで動作するフローチャートがドキュメントに挿入され、プレビューが入力に合わせて描き直されます。同じガイドで、シーケンス図、クラス図、状態遷移図、ER図、ガント図も扱っています。フェンスの構文については、Markdownのコードブロックをご覧ください。

Mermaidのフローチャートに関するよくある質問

Mermaidでフローチャートを書くには?

mermaidのコードブロックをflowchart TD(またはLR)で始め、A[Start] --> B[End]のようなリンクを1行に1つずつ追加します。

MermaidのフローチャートでTDとLRの違いは?

TD(top down、TBと同じ)は図を上から下へ、LRは左から右へ描きます。

Mermaidで矢印にテキストを付けるには?

矢印の後ろのパイプの間に書くか(A -->|Yes| B)、ハイフンの間に書きます(A -- Yes --> B)。

Mermaidのフローチャートがエラーになるのはなぜ?

よくある原因は、ラベル内の小文字のend、1行目がないこと、ダブルクォートで囲んでいないラベル内の特殊文字です。

その他の質問