画像編集ソフトでフローチャートを作っては差し替えが面倒で放置する、を繰り返していました。Mermaidを覚えてからは、図の修正も文章と同じようにテキストの差分で管理できるようになり、随分と気が楽になりました。

⚠️ 今回はVS Code+Mermaidを基準として書いています。

本記事のコード例はPART 02で導入した「Markdown Preview Mermaid Support」拡張機能を前提としています。GitHubなど他のビューワーでの表示についてはPART 05で扱います。

Mermaidとは

Mermaidは、テキストベースの簡易な記法でフローチャート・シーケンス図・ガントチャートなどの図を作成できる、JavaScript製の描画ライブラリです。 PART 03で説明した通り、Markdownのフェンス付きコードブロックの言語名にmermaidを指定することで、対応環境ではその中身が図として描画されます。

画像編集ソフトで図を作る場合と違い、Mermaidはテキストなので差分管理がしやすく、記事の文章と同じGitリポジトリで一緒にバージョン管理できることが大きな利点です。

フローチャートの基本記法

フローチャートはflowchartキーワードから始めます。続けて図の向き(TD=上から下、LR=左から右 など)を指定します。

記法意味
flowchart TD上から下(Top to Down)へ描画するフローチャートの宣言
A[テキスト]四角形のノード(通常の処理)
B{テキスト}ひし形のノード(条件分岐)
A --> BAからBへの矢印(処理の流れ)
B -->|Yes| Cラベル付きの矢印(分岐の条件)

💡 ノードIDと表示テキストは別物

A[記事執筆開始]Aはノードを識別するためのID、[記事執筆開始]が画面に表示されるテキストです。同じIDを使い回すことで、同一ノードへ複数の矢印を向けることができます。

フローチャート例(コードと表示結果)

「記事の執筆フロー」を例に、実際のコードとプレビューでの表示結果を見比べてみます。

Markdown — mermaidフローチャート
```mermaid
flowchart TD
  A[記事執筆開始] --> B
  B{構成は決まった?}
  B -->|Yes| C[執筆する]
  B -->|No| D[構成案を作る]
  D --> B
  C --> E[公開]
```
Mermaidフローチャートのソースコードとプレビュー表示結果の対比イメージ

図1: mermaidコードブロック(左)とVS Codeプレビューでの描画結果(右)

コードを保存すると、拡張機能が自動的にノードと矢印を解析し、四角形・ひし形・矢印ラベルを含む図としてプレビューに描画します。 ノードの位置やレイアウトは自動計算されるため、こちら側で座標を指定する必要はありません。

この自動レイアウトこそがMermaidの最大の利点です。ノードを1つ追加・削除しても、矢印の位置や図全体のバランスは再計算されるため、画像編集ソフトのように配置を手作業で調整し直す必要がありません。 仕様変更でフローが変わった場合も、テキストを数行書き換えるだけで最新の図に更新できます。

まず小さく試す

ノードが3〜4個程度の小さいフローチャートから書き始め、保存するたびにプレビューで確認しながら少しずつ増やしていくと、記法のミスに早く気づけます。

他の図の種類(簡易紹介)

Mermaidはフローチャート以外にも複数の図に対応しています。本シリーズではフローチャートを中心に扱いますが、概要だけ紹介します。

Mermaidで描ける主な図の種類(フローチャート・シーケンス図・ガントチャート・円グラフ)のイメージ

図2: Mermaidで描ける主な図の種類

宣言キーワード図の種類主な用途
sequenceDiagramシーケンス図API通信・処理間のやり取りの時系列表現
ganttガントチャートスケジュール・プロジェクト工程の可視化
erDiagramER図テーブル間のリレーション表現
pie円グラフ割合・構成比の可視化
stateDiagram-v2状態遷移図ステータスの遷移パターンの表現

いずれも基本の書き方は```mermaidで囲む点は共通です。より詳しい記法は Mermaid公式ドキュメント(英語)を参照してください。

表示されないときの対処

Mermaidの図がプレビューに描画されない場合、多くは以下のいずれかが原因です。

症状主な原因と対処
コードブロックがただのテキストとして表示される拡張機能が未インストール、または無効化されている
プレビューを開いても更新されないプレビュータブを一度閉じて開き直す、またはVS Codeを再起動する
矢印やノードの記法でエラーが出る-->/のようなタイプミス、全角文字が混入していないかを確認する
日本語のノード名が文字化けするファイルの文字コードがUTF-8になっているかを確認する

⚠️ 括弧の対応に注意

[ ]{ }( )の開き括弧と閉じ括弧が対応していないと、その行以降の描画が崩れることがあります。エラー時はまず括弧の対応から確認してください。

それでも解決しない場合は、コードブロックの中身だけを一度別ファイルに切り出し、行を減らしながらどこでエラーになるかを二分探索的に絞り込むと原因を特定しやすくなります。 小さな構文ミス1つで図全体が描画されないことが多いため、慌てず1行ずつ確認するのがコツです。

次の章では…

PART 05 では、ここまでの記法がVS Codeプレビューと実際のビューワー(GitHubなど)でどう見えるかを比較し、シリーズ全体を振り返ります。

→ PART 05 — ビューワーでの表示確認とまとめへ