Markdown(マークダウン)でシステム設計書、仕様書、APIドキュメント、プロジェクトのREADME、技術ブログを書いていると、「文章だけでなく、処理の流れやシステム構成、スケジュールをきれいな図(ダイアグラム)で分かりやすく伝えたい」という場面が頻繁にあります。
しかし、一般的な作図ツールやデザインソフト(PowerPoint、Figma、draw.ioなど)で作図した画像を貼り付けると、「少し仕様変更があるたびにツールを開いて画像を書き出し、再アップロードする手間がかかる」「Gitで差分(バージョン管理)を追跡できない」といった大きな課題が生じます。
そんな悩みを一挙に解決するのが、テキスト(Markdown)だけで図やグラフを描画できるJavaScriptベースのダイアグラム作成ツール「Mermaid(マーメイド)」です。
Markdown文書の中に ```mermaid とコードを書くだけで、GitHub、Notion、Obsidian、VS Code、Qiita、Zennなどの主要環境で自動的に美しいフローチャートやシーケンス図、ガントチャート、ER図がレンダリングされます。
この記事では、「Mermaid記法(mermaid 記法 / markdown mermaid)」の基本構文から、コピペですぐに使える図表テンプレート集(フローチャート・シーケンス図・ガントチャート・クラス図・ER図)、主要エディタでのプレビュー方法、「図が表示されない・エラーになる時の対処法」まで、初心者にもわかりやすく徹底解説します!
📌 本記事のポイント・要点まとめ
- Mermaidとは: テキストコードからフローチャートやシーケンス図などの各種ダイアグラムを自動生成するオープンソースライブラリ
- Markdownでの書き方:
```mermaidで囲み、1行目に図の種別(flowchartやsequenceDiagram等)を宣言するだけ - 高いメンテナンス性: テキストデータなのでGitでの差分比較(プルリクレビュー)や編集・修正が圧倒的に手軽
- 豊富な図表タイプ: フローチャート、シーケンス図、ガントチャート、クラス図、ER図、状態遷移図、円グラフなど多彩な図に対応
- 抜群のツール対応: GitHub、VS Code、Notion、Obsidianなどで特別な画像ソフトなしに即時プレビュー可能
【早見表】Mermaidで作成できる主な図とMarkdownコード一覧
Mermaidでは、1行目の「図タイプ宣言」を変えるだけで多種多様なダイアグラムを描画できます。まずはどのような図が作れるのか、代表的な図表と構文の概要を早見表で確認しましょう。
| 図の種類 | 宣言キーワード | 主な用途・特徴 |
|---|---|---|
| フローチャート (Flowchart) |
flowchart TDflowchart LR |
業務フロー、アルゴリズム、処理手順、Yes/No条件分岐、決定木 |
| シーケンス図 (Sequence Diagram) |
sequenceDiagram |
システム間通信、APIリクエスト/レスポンス、認証フロー、時系列の処理伝達 |
| ガントチャート (Gantt Chart) |
gantt |
プロジェクトの進捗管理、タスクのスケジュール、依存関係・マイルストーン |
| クラス図 (Class Diagram) |
classDiagram |
オブジェクト指向のクラス設計、プロパティ・メソッド、継承・関連関係 |
| ER図 (Entity Relationship) |
erDiagram |
データベース設計、テーブル定義、1対多/多対多などのリレーションシップ |
| 状態遷移図 (State Diagram) |
stateDiagram-v2 |
ステータス変更フロー、画面遷移、有限オートマトン、ライフサイクル |
| 円グラフ (Pie Chart) |
pie |
データの割合・内訳の可視化、アンケート結果、リソース配分 |
Mermaidとは?Markdownで図やチャートを描く基本の書き方
Mermaid(マーメイド)は、Markdownテキストのようなシンプルな構文でダイアグラムやチャートを生成できるオープンソースのJavaScriptライブラリです。2014年にSvein Ove Aas氏によって開発がスタートし、現在ではGitHubの公式Markdownレンダラーにも標準採用されるなど、エンジニア・テクニカルライターの業界標準ツールとして広く普及しています。
なぜMarkdown×Mermaidが選ばれるのか?(3大メリット)
従来の画像ファイル(PNGやJPEG)による作図と比較して、Markdown内でMermaid記法(mermaid markdown)を使うことには以下のような圧倒的なメリットがあります。
1. テキスト完結・画像作成ソフト不要
専用のドローソフトを起動することなく、Markdownエディタ上でコードを書くだけで綺麗な図が完成します。
2. Gitで差分(バージョン)管理ができる
画像と違ってテキストなので、GitHubのPull Requestなどで「どこが修正されたのか」が1行単位で明確にレビュー可能です。
3. 修正コストが極めて小さい
仕様変更が発生しても、テキストを1行書き換えるだけで図が自動更新。画像の再書き出し・再アップロードの手間がゼロになります。
基本構文:“`mermaid ブロックの書き方
Markdown内でMermaid図を記述するルールはとてもシンプルです。通常の Markdownコードブロック記法 と同様に、バッククォート3つ(```)に続けて言語名として mermaid と指定します。
```mermaid
[ここにMermaid構文を記述]
```
▼ 最もシンプルな記述例(フローチャート)
```mermaid
flowchart LR
A[開始] --> B[処理実行]
B --> C[完了]
```
▼ レンダリング結果のイメージ
──▶
処理実行
──▶
完了
Mermaidの基本ルール(図タイプ宣言・インデント・コメント)
Mermaidコードを書く際は、以下の3つの基本ルールを押さえておくとスムーズです。
- 1. 1行目に図タイプを宣言する:
flowchart TDやsequenceDiagramなど、どの種類の図を描くかを必ず最初に明記します。 - 2. インデントで構造を見やすくする: 構文上はスペースやインデントは厳密に強制されませんが、半角スペース2〜4個でインデントすると構造が把握しやすくなります。
- 3. コメント行の書き方(
%%): 行頭に%%(パーセント記号2つ)を付けると、その行はコメントとなりレンダリング時に無視されます。
```mermaid
flowchart TD
%% これはコメントです(画面には描画されません)
Node1[ノード1] --> Node2[ノード2]
```
【コピペで使える】フローチャート(処理フロー・分岐図)の書き方
Mermaidで最もよく使われるのが「フローチャート(flowchart)」です。業務プロセスの可視化、プログラムのロジック、アルゴリズムの分岐などを直感的に表現できます。
※以前は graph というキーワードも使われていましたが、現在ではより高機能な flowchart を使用することが公式で推奨されています。
1. グラフの方向指定(TD / LR / BT / RL)
flowchart の直後にアルファベット2文字を指定することで、図が伸びる方向(上から下、左から右など)をコントロールします。
| 指定キーワード | 方向 | 主な使い分け |
|---|---|---|
TD または TB |
Top to Down / Bottom(上から下) | 上から下へ流れる一般的な処理フロー、階層ツリー |
LR |
Left to Right(左から右) | 横長のタイムライン、パイプライン処理、横スクロール向け |
BT |
Bottom to Top(下から上) | ボトムアップの集計フロー、積み上げツリー |
RL |
Right to Left(右から左) | 逆方向のフィードバックフローなど |
2. ノードの形状一覧(四角・丸・ひし形・DB等)
ノード(箱)を囲む括弧の種類を変えるだけで、さまざまな形の図形を表現できます。ノードIDの後ろに対応する括弧を記述します。
| 形状名 | 構文コード | 特徴・用途 |
|---|---|---|
| 長方形(四角) | id[テキスト] |
標準的な処理ステップ・通常ノード |
| 角丸四角形 | id(テキスト) |
開始や終了、緩やかなステップ |
| スタジアム型(角丸長丸) | id([テキスト]) |
フローの開始点・終了点(Start / End)に最適 |
| サブルーチン(二重枠) | id[[テキスト]] |
外部関数、サブルーチン、別プロセス呼び出し |
| 円形(丸) | id((テキスト)) |
中間ポイント、状態、コネクタ |
| ひし形(ダイヤモンド) | id{テキスト} |
条件分岐(Yes / No、If文判定)に必須 |
| 六角形 | id{{テキスト}} |
準備処理、ループの開始/終了 |
| 平行四辺形 | id[\テキスト/] |
入力・出力(Input / Output)データ |
| 円柱(データベース) | id[(テキスト)] |
データベース、ストレージ、ファイル保存先 |
3. 矢印と線の種類(実線・破線・太線・ラベル付き)
ノード同士をつなぐ線や矢印にも多様なバリエーションが用意されています。
```mermaid
flowchart LR
A1[実線矢印] --> B1[ノード]
A2[ラベル付き矢印] -->|条件テキスト| B2[ノード]
A3[破線・点線] -.-> B3[ノード]
A4[ラベル付き破線] -.->|注釈| B4[ノード]
A5[太線矢印] ==> B5[ノード]
A6[ラベル付き太線] ==>|重要ルート| B6[ノード]
A7[矢印なし実線] --- B7[ノード]
A8[双方向矢印] <--> B8[ノード]
```
4. 条件分岐を含む実践フローチャート例(ユーザーログイン処理)
ノード形状、矢印ラベル、条件分岐を組み合わせた実践的なログイン処理フローチャートです。コピペしてそのまま利用できます。
```mermaid
flowchart TD
Start([ユーザーがログイン画面にアクセス]) --> Input[/ID・パスワードを入力/]
Input --> Check{入力内容の検証}
Check -->|OK| AuthDB[(認証DBへ照会)]
Check -->|未入力・形式不正| Error1[エラーメッセージ表示]
Error1 --> Input
AuthDB --> AuthResult{一致するか?}
AuthResult -->|一致(成功)| IssueToken[JWTトークン発行 / セッション確立]
IssueToken --> Dashboard[マイページ・ダッシュボードへ遷移]
Dashboard --> Finish([ログイン完了])
AuthResult -->|不一致(失敗)| RetryCount{失敗回数チェック}
RetryCount -->|3回未満| Error2[パスワード不一致警告]
Error2 --> Input
RetryCount -->|3回以上| LockAccount[アカウント一時ロック]
LockAccount --> FinishFail([ロック画面表示])
```
▼ レンダリング構造のポイント解説
([開始/完了])でスタートとゴールをスタジアム型で表現[/ID・パスワード入力/]でユーザー入力を平行四辺形に設定{一致するか?}のひし形でYes/Noの条件分岐を作成し、-->|条件|で矢印にラベルを付与[(認証DBへ照会)]でデータベースへのアクセスを一目でわかる円柱デザインに設定
5. サブグラフ(subgraph)でシステムや処理単位をグループ化する
システム構成やマイクロサービス設計など、複数のノードを「フロントエンド」「バックエンド」「データベース」のように枠で囲んでまとめたい場合は subgraph 構文を使用します。
```mermaid
flowchart TB
subgraph Client["クライアント環境(ブラウザ / アプリ)"]
UI[Reactフロントエンド]
end
subgraph Server["バックエンドAPIサーバー"]
API[Node.js / Express API]
AuthService[認証マイクロサービス]
end
subgraph Storage["データ永続化層"]
DB[(PostgreSQL)]
Cache[(Redisキャッシュ)]
end
UI -->|HTTPSリクエスト| API
API -->|認証確認| AuthService
API -->|SQLクエリ| DB
API -->|高速読み取り| Cache
```
6. ノードの色やスタイルをカスタマイズする(style / classDef)
特定のノードを目立たせたい場合や、エラーノードを赤色、成功ノードを緑色に塗りたい場合は、CSSライクなスタイル指定が可能です。
```mermaid
flowchart LR
A[通常ノード] --> B[成功ノード]
A --> C[警告・エラーノード]
%% 個別スタイル指定(ノードIDに対して指定)
style B fill:#d4edda,stroke:#28a745,stroke-width:2px,color:#155724
style C fill:#f8d7da,stroke:#dc3545,stroke-width:2px,color:#721c24
```
💡 クラス定義(classDef)でまとめてスタイル適用
複数のノードに同じ色を適用したい場合は、classDef success fill:#d4edda,stroke:#28a745; とクラスを定義し、class B,D success; または B:::success と指定するとコードがスッキリします。
【コピペで使える】シーケンス図(時系列・システム間通信)の書き方
APIの通信シーケンス、マイクロサービス間のメッセージやり取り、ユーザー認証フローなど、「誰と誰が、どのような順番でメッセージをやり取りするか(時系列)」を表現するのに最適なのが「シーケンス図(sequenceDiagram)」です。
1. 参加者(participant / actor)の定義とエイリアス
登場人物やシステムを participant(四角形)または actor(人型アイコン)で宣言します。as を使うことで、コード内では短い英字エイリアスを使いつつ、画面上には分かりやすい日本語を表示させることができます。
```mermaid
sequenceDiagram
actor U as ユーザー
participant F as フロントエンド (SPA)
participant B as バックエンドAPI
participant D as データベース
U->>F: ボタンをクリック
F->>B: GET /api/users
B->>D: SELECTクエリ発行
D-->>B: ユーザーデータ返却
B-->>F: JSONレスポンス (200 OK)
F-->>U: 画面に一覧を描画
```
2. メッセージ矢印の種類(同期・非同期・点線応答)
シーケンス図のメッセージ矢印は、線の種類(実線 - / 破線 --)と矢印の形状(塗りつぶし >> / 開き矢印 > / 矢印なし)の組み合わせで指定します。
| 構文記号 | 矢印の見栄え | UMLにおける意味・主な使い所 |
|---|---|---|
->> |
実線 + 塗りつぶし矢印(➔) | 同期呼び出し・同期メッセージ(最も一般的) |
-->> |
破線 + 塗りつぶし矢印(⇢) | 応答・レスポンス(Returnメッセージ) |
-) |
実線 + 非同期矢印 | 非同期メッセージ・イベント送信 |
--) |
破線 + 非同期矢印 | 非同期の応答メッセージ |
-x |
実線 + 末尾バツ印(✖) | 同期メッセージの消失・タイムアウト失敗 |
--x |
破線 + 末尾バツ印(✖) | 応答メッセージの送信失敗 |
3. 処理ブロック(ライフラインのアクティブ化:activate / deactivate)
サーバーが処理を行っている期間を視覚的に表す長方形(アクティベーションバー)を表示するには、activate ノード名 と deactivate ノード名 を記述します。矢印の末尾に +(開始)や -(終了)を付ける短縮記法も便利です。
```mermaid
sequenceDiagram
participant C as クライアント
participant S as サーバー
C->>+S: データ処理リクエスト(処理開始)
Note over S: データベース集計中...
S-->>-C: 処理完了レスポンス(処理終了)
```
4. 条件分岐(alt / else)、オプション(opt)、ループ(loop)
処理の分岐や繰り返しは、枠で囲む制御構文で簡単に表現できます。
alt ... else ... end: 条件分岐(if-else)。成功時とエラー時の処理分岐に利用opt ... end: 任意の処理(Optional)。特定の条件でのみ実行する処理loop ... end: 繰り返し処理(for / while / ポーリング通信など)par ... and ... end: 並列処理(Parallel)。同時に実行される複数の非同期処理
5. 実践例:OAuth 2.0認証フローのシーケンス図
条件分岐(alt)、ノート(Note)、背景グループ(box)を網羅した実践的な認証フローのシーケンス図です。
```mermaid
sequenceDiagram
autonumber %% メッセージに自動で通し番号(1, 2, 3...)を付与
box rgb(245, 247, 250) クライアントサイド
actor User as ユーザー
participant Browser as Webブラウザ
end
box rgb(240, 249, 255) サーバーサイド
participant AppServer as 自社Webサーバー
participant AuthServer as OAuth認証プロバイダ (Google/GitHub等)
end
User->>Browser: 「外部アカウントでログイン」をクリック
Browser->>AppServer: ログインリクエスト
AppServer-->>Browser: 認証プロバイダの認可URLへリダイレクト (302)
Browser->>AuthServer: 認可画面を要求
AuthServer-->>Browser: ログイン&同意画面を表示
User->>AuthServer: ID・パスワード入力&アクセス許可
AuthServer-->>Browser: 認可コード付きでコールバックURLへリダイレクト
Browser->>AppServer: 認可コードを送信
AppServer->>+AuthServer: 認可コード+クライアントシークレットを送信 (POST /token)
alt 認証成功の場合
AuthServer-->>AppServer: アクセストークン & ユーザー情報を返却 (200 OK)
AppServer->>AppServer: ユーザーセッション作成
AppServer-->>Browser: ログイン成功・マイページへリダイレクト
Browser-->>User: マイページ画面を表示
else 認証失敗(不正なコードまたは期限切れ)
AuthServer-->>-AppServer: エラーレスポンス (400 Bad Request)
AppServer-->>Browser: ログイン失敗画面へリダイレクト
Browser-->>User: エラーメッセージを表示
end
```
💡 便利なテクニック:autonumber
sequenceDiagram の直下に autonumber を1行追加するだけで、各矢印に「1, 2, 3…」と自動で連番が振られます。ドキュメント内で「手順3でエラーが発生した場合」のように言及しやすくなるため、実務で大変重宝します。
【コピペで使える】その他人気図表テンプレート集(ガントチャート・クラス図・ER図)
Mermaidはフローチャートやシーケンス図だけでなく、スケジュール管理、データベース設計、オブジェクト指向設計、データ可視化など幅広い図表に対応しています。
1. ガントチャート(gantt:プロジェクト進捗・スケジュール管理)
プロジェクトのスケジュールやタスク日程を直感的に可視化できます。crit(クリティカルパス)、done(完了済み)、active(進行中)、after タスク名(依存関係指定)などの属性を指定できます。
```mermaid
gantt
title Webサイトリニューアル プロジェクト計画
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 要件定義・設計
要件ヒアリング :done, des1, 2026-09-01, 2026-09-07
ワイヤーフレーム作成 :done, des2, after des1, 5d
UIデザイン設計 :active, des3, after des2, 7d
section 開発フェーズ
フロントエンド実装 :crit, active, dev1, after des3, 10d
バックエンドAPI開発 :crit, dev2, after des3, 12d
データベース移行 : dev3, after dev2, 4d
section テスト・リリース
結合テスト・QA検証 :test1, after dev1, 7d
本番環境デプロイ :milestone, release, after test1, 0d
```
2. クラス図(classDiagram:オブジェクト指向設計)
クラスのプロパティ(属性)、メソッド(関数)、可視性(+ public, - private, # protected)、継承関係(|--)を定義できます。
```mermaid
classDiagram
class User {
+int id
+string name
-string passwordHash
+login(password) bool
+logout() void
}
class AdminUser {
+string role
+deleteUser(userId) bool
}
class Post {
+int id
+string title
+string content
+publish() void
}
User <|-- AdminUser : 継承
User "1" --> "*" Post : 投稿を作成
```
3. ER図(erDiagram:データベース設計・テーブルリレーション)
データベースのテーブル定義と外部キー連携を表現できます。リレーション記号(||--o{ など)で「1対1」「1対多」「多対多」を明確に示せます。
```mermaid
erDiagram
USERS ||--o{ ORDERS : "1人のユーザーは複数の注文を持つ"
ORDERS ||--|{ ORDER_ITEMS : "1つの注文は1つ以上の商品明細を持つ"
PRODUCTS ||--o{ ORDER_ITEMS : "1つの商品は複数の明細に含まれる"
USERS {
int id PK "ユーザーID"
string email "メールアドレス"
string name "氏名"
datetime created_at "登録日時"
}
ORDERS {
int id PK "注文ID"
int user_id FK "ユーザーID"
datetime order_date "注文日時"
int total_amount "合計金額"
}
ORDER_ITEMS {
int id PK "明細ID"
int order_id FK "注文ID"
int product_id FK "商品ID"
int quantity "数量"
int unit_price "単価"
}
PRODUCTS {
int id PK "商品ID"
string name "商品名"
int price "価格"
int stock "在庫数"
}
```
4. 状態遷移図(stateDiagram-v2:ステータス管理)
開始状態([*])、通常状態、終了状態を矢印で結び、ステータス変更の条件やイベントを定義します。
```mermaid
stateDiagram-v2
[*] --> 下書き : 新規作成
下書き --> レビュー待ち : 申請提出
レビュー待ち --> 下書き : 差し戻し
レビュー待ち --> 公開中 : 承認・公開
公開中 --> アーカイブ : 非公開化
アーカイブ --> [*] : 削除完了
```
5. 円グラフ(pie:データ比率の可視化)
シンプルなデータ集計やアンケート結果を円グラフとしてMarkdown内に手軽に埋め込めます。
```mermaid
pie title チーム内で使われているMarkdownエディタ割合
"VS Code" : 48
"Obsidian" : 26
"Notion" : 16
"その他エディタ" : 10
```
各ツール・エディタでのMermaid対応状況とプレビュー設定
Mermaidの大きな魅力は、多くの開発ツールやノートアプリが標準または簡単な拡張機能の追加だけでサポートしている点です。主要な環境での設定方法とプレビュー手順をまとめました。
1. GitHub(Issue / Pull Request / README / Discussions)
設定不要・完全標準対応です。GitHub上の README.md、Issue、Pull Requestのコメント、Discussionsなどに ```mermaid ブロックを書くだけで、GitHubが自動的にSVG画像としてレンダリングしてくれます。
2. VS Code(Visual Studio Code)
VS Code の標準Markdownプレビュー機能(Ctrl + Shift + V または Cmd + Shift + V)でMermaidを表示させるには、無料の公式・定番拡張機能を1つ導入するのが最もおすすめです。
おすすめVS Code拡張機能:
- Markdown Preview Mermaid Support(Bierner氏作):VS Code標準のMarkdownプレビュー画面にMermaid描画機能を追加する必須プラグイン
- Mermaid Preview:エディタの横にMermaidのプレビュー専用ペインを開く拡張機能
- Mermaid Editor:GUIでノードを編集・エクスポートできる拡張機能
3. Obsidian
ナレッジ管理ツール「Obsidian」は、初期状態からMermaidにネイティブ対応しています。ライブプレビューモードでコードを書いた瞬間からリアルタイムに図がレンダリングされ、内部リンク([[ノート名]])と組み合わせたナレッジネットワーク構築にも威力を発揮します。
4. Notion
Notion では、スラッシュコマンド /mermaid と入力するか、通常のコードブロックを配置して言語選択を「Mermaid」に設定することで、即座に図表プレビューとコード編集の切り替え表示が可能です。
主要プラットフォーム対応比較まとめ一覧表
| ツール・環境 | Mermaid対応状況 | 設定方法・備考 |
|---|---|---|
| GitHub | ◎ 標準対応 | リポジトリ内の.md、PR、Issueで自動レンダリング |
| VS Code | ◯ 拡張機能で対応 | 「Markdown Preview Mermaid Support」をインストール |
| Obsidian | ◎ 標準対応 | 追加設定なしでライブプレビュー可能 |
| Notion | ◎ 標準対応 | コードブロックで言語「Mermaid」を選択 |
| Qiita / Zenn | ◎ 標準対応 | 記事執筆時のコードブロック内で自動描画 |
| GitLab | ◎ 標準対応 | MR、Wiki、リポジトリ文書で標準サポート |
Mermaidで図が表示されない・エラーになるときの原因と解決法
Mermaidのコードを書いていて「Syntax error in text」と表示されたり、図が真っ白になってレンダリングされない場合、以下の5つのポイントを順にチェックしてください。
① 特殊文字(括弧・コロン・引用符)をダブルクォートで囲んでいない
ノードの表示名の中に、丸括弧 ()、角括弧 []、波括弧 {}、コロン :、不等号 <> などの記号を含めると、Mermaidパーサーが「構文記号」と誤認してエラーになります。
❌ エラーになる書き方
flowchart TD
A[ユーザー登録(必須入力)] --> B
%% 括弧 () が構文と衝突してエラー
⭕ 正しい解決策(ダブルクォートで囲む)
flowchart TD
A["ユーザー登録(必須入力)"] --> B
%% ダブルクォートで囲めば安全に描画
② 全角スペースや全角記号が混入している
インデントや矢印の周辺に全角スペース( )や全角ハイフン(ー)、全角矢印(>)が混ざっていると、構文エラーが発生します。エディタの空白文字可視化機能を有効にして、すべて半角文字に統一してください。
③ 予約語(end, sub, graph 等)をノードIDに使っている
end、graph、subgraph、style、call、click などのMermaid制御用キーワードをそのままノードの変数名(ノードID)として使用するとパーサーが混乱します。node_end[終了] や E1[end] のように別の識別子を割り当ててください。
④ 最速デバッグ方法:Mermaid Live Editorを活用する
エラーの原因がどうしても分からない場合は、公式が提供している無料のブラウザツール「Mermaid Live Editor(mermaid.live)」にコードを貼り付けてみましょう。何行目のどの文字で文法エラーが発生しているかがリアルタイムで赤字表示されるため、一瞬で修正箇所を特定できます。
Markdown Mermaidに関するよくある質問(FAQ)
Q1. 作成したMermaid図をPNG画像やSVG画像としてダウンロード・エクスポートできますか?
A. はい、簡単にエクスポート可能です。「Mermaid Live Editor」の「Download PNG / SVG」ボタンから直接保存できるほか、コマンドラインツール @mermaid-js/mermaid-cli(mmdc コマンド)を使用すれば、CI/CDパイプラインやビルドスクリプトでMarkdownから画像を一括自動生成することもできます。
Q2. ノードの中で改行したい場合はどうすればいいですか?
A. ノードのテキスト内で <br/> または <br> タグを記述すると、ノード内で改行されます。
例:A["1行目のテキスト<br/>2行目の補足説明"]
Q3. Mermaid図のテーマ(ダークモード・配色)を変更することはできますか?
A. コードブロックの先頭にディレクティブ %%{init: {'theme':'dark'}}%% や %%{init: {'theme':'neutral'}}%% を記述することで、図全体のテーマ配色(default, dark, neutral, forest, base)を切り替えることができます。
Q4. PlantUMLとの違いは何ですか?どちらを使うべきですか?
A. 手軽さ・Web親和性・導入のしやすさならMermaid、非常に大規模で厳密なUMLクラス構造や詳細レイアウト制御ならPlantUMLが適しています。GitHubやNotion、Obsidianで追加ソフト(JavaやGraphviz等)なしですぐ動く利便性から、近年のWeb開発やドキュメント作成ではMermaidの採用が圧倒的に優勢です。
まとめ:Markdown Mermaidを活用してドキュメント作成を効率化しよう
この記事では、Markdown内でダイアグラムを描けるMermaid記法(mermaid 記法 / markdown mermaid)の基本構文、フローチャートやシーケンス図、ガントチャートの実践テンプレート、エディタ環境、トラブルシューティングまで網羅して解説しました。
📝 今回の振り返りポイント
- コードブロックで宣言:
```mermaidで囲み、1行目にflowchart TDやsequenceDiagramを書く - フローチャート: 括弧の形状(
[]、()、{}、[()])と矢印(-->|条件|)で自在に作図 - シーケンス図:
participant、actor、メッセージ矢印(->>、-->>)、altによる条件分岐を活用 - 特殊文字対策: エラーが出たら記号をダブルクォート
["..."]で囲み、Live Editorで即座に検証
Mermaidを取り入れることで、「仕様変更に強く、Gitでレビューしやすく、誰でも手軽にメンテナンスできるドキュメント」が簡単に実現できます。
まずはこの記事のテンプレートをコピーして、GitHubのREADMEやVS Code、Notionで動かしてみてください。テキストだけで直感的に図が描ける快適さを実感できるはずです!