- AI ⚙️
生成AIでMermaid図を作るプロンプト集|図の種類別とエラーの直し方
生成AIに Mermaid の図を頼むときは、「図の種類」「向き」「ノード数の上限」「ラベルは二重引用符で囲む」の4点を指定すると、崩れにくいコードが返ってきます。 Mermaid は文字で図を書く記法なので、AI が出した文字をそのまま貼れば図になり、直したいところは文字を直すだけで済みます。
この記事では、6種類の図について「頼み方のテンプレート」と「期待する形のコード」を対で載せ、エラーになる書き方を実際に描画してエラー文ごと再現しました。記法そのものの一覧ではなく、AI への頼み方と直し方に絞っています。
確認環境:@mermaid-js/mermaid-cli 12.0.0(同梱の mermaid 12.1.0)、Node.js 22.22.2、Chromium(Playwright 用ビルド 1194)。掲載したコードとエラー文は、この環境で SVG に描画して確かめたものです。確認日 2026-10-05。
この記事の結論
- 指定するのは4点です。図の種類(例:flowchart)、向き(TD か LR)、ノード数の上限(例:12個まで)、ラベルは二重引用符で囲むこと。
- ID は半角英数字、表示名は日本語と分けるよう頼みます。エラーの多くは、ラベルの中の括弧や記号、全角の記号が原因でした。
- エラーが出たら、エラー文とコードの両方を貼って直してもらいます。 エラー文には行番号と位置の印が入っているので、そのまま渡すのが近道です。
- エラーにならずに図だけが変わる書き方もあります。 描画できたあとも、ノード名と矢印の数を元の依頼と見比べます。
Mermaid を AI に頼むときの早見表
| 指定すること | 書き方の例 | 指定する理由 |
|---|---|---|
| 図の種類 | 1行目は flowchart TD とする | 宣言が抜けると図の種類を判定できず描画されない |
| 向き | 上から下は TD、左から右は LR | 横長・縦長を先に決めると貼る場所に収まる |
| ノード数の上限 | ノードは12個まで | 多すぎる図は読みにくく、直す箇所も増える |
| ラベルの囲み方 | 表示する文字はすべて二重引用符で囲む | 括弧・記号を含むラベルがそのまま通る |
| ID の付け方 | ID は半角英数字(A、B、user など) | 全角記号や空白の混入を防ぐ |
| 出力の形 | mermaid のコードブロック1つだけ。説明文は付けない | 貼り付けるときに余分な文字が混ざらない |
| 使わない書き方 | 小文字の end というノード名、スラッシュ2つのコメント | どちらもエラーになる(後述) |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIでMermaid図を作るプロンプト集|図の種類別とエラーの直し方」
すべての図に付ける共通ルール
どの図を頼むときも、次の枠をプロンプトの最後に付けます。以降のテンプレートでは「共通ルール」と書いた位置にこの枠を貼ってください。
# 共通ルール
- 出力は mermaid のコードブロック1つだけにする。前後に説明文を付けない。
- 1行目に図の種類を宣言する。
- ID は半角英数字とアンダースコアだけにする。日本語は表示名(ラベル)にだけ使う。
- 表示する文字はすべて半角の二重引用符で囲む。
- 記号(括弧、矢印、コロン、引用符)は半角にする。全角の記号を記法の部分に使わない。
- end という小文字だけの ID は使わない。
- コメントが必要なら行頭に %% を付ける。
- 書かれていない情報は足さない。不明な点はコードの後ではなく、コードの前に質問として1行で書く。
図の種類別プロンプトと期待するコード
題材は架空の「備品予約システム」です。角かっこの部分を自分の内容に置き換えて使います。プロンプトは筆者が用意したテンプレートで、その下のコードは「この形で返ってくれば合格」という見本です。見本はすべて描画できることを確かめています。
フローチャート
次の手順を Mermaid のフローチャートにしてください。
# 図の指定
- 種類と向き:flowchart TD
- ノードは12個まで。分岐はひし形にし、分岐の矢印には「ある」「ない」のように条件を書く。
- 開始と完了を1つずつ置く。
# 手順
[例:利用者が予約を申請する。同じ時間帯に予約があれば別の時間帯を選び直す。なければ予約を登録し、確認メールを送って完了する。]
# 共通ルール
(共通ルールの枠を貼る)
flowchart TD
A["予約を申請する"] --> B{"同じ時間帯に予約があるか"}
B -- "ある" --> C["別の時間帯を選ぶ"]
C --> A
B -- "ない" --> D["予約を登録する"]
D --> E["確認メールを送る"]
E --> F(["完了"])
シーケンス図
次のやり取りを Mermaid のシーケンス図にしてください。
# 図の指定
- 種類:sequenceDiagram
- 登場するのは [利用者、予約画面、予約API、データベース] の4つ。participant で短い ID と表示名を分ける。
- 依頼は実線の矢印(->>)、応答は点線の矢印(-->>)にする。
- 条件で分かれるところは alt と else で書く。メッセージは15個まで。
# やり取り
[例:利用者が備品と時間帯を入力する。予約画面が予約APIに登録を依頼する。APIは重なる予約を検索し、なければ保存して完了を返す。あれば重複を知らせる。]
# 共通ルール
(共通ルールの枠を貼る。シーケンス図ではメッセージの文は引用符で囲まず、コロンの後にそのまま書く)
sequenceDiagram
autonumber
actor U as 利用者
participant W as 予約画面
participant A as 予約API
participant D as データベース
U->>W: 備品と時間帯を入力する
W->>A: 予約を登録する
A->>D: 重なる予約を検索する
D-->>A: 検索結果
alt 重なる予約がない
A->>D: 予約を保存する
A-->>W: 登録完了
else 重なる予約がある
A-->>W: 重複のお知らせ
end
W-->>U: 結果を表示する
ER図
次のテーブルを Mermaid の ER図にしてください。
# 図の指定
- 種類:erDiagram
- エンティティ名とカラム名は半角英字。日本語名はカラムの後ろに二重引用符で付ける。
- カラムは「型 名前 キー 日本語名」の順。キーは PK、FK、UK を使う。
- リレーションには必ずラベルを付ける(例:USER ||--o{ RESERVATION : "予約する")。
- エンティティは8個まで。
# テーブル
[例:利用者(ID、氏名、メール)、備品(ID、置き場所、備品名)、会議室(ID、会議室名)、予約(ID、利用者、備品、開始日時、終了日時)。利用者1人に予約は0件以上。]
# 共通ルール
(共通ルールの枠を貼る)
erDiagram
USER ||--o{ RESERVATION : "予約する"
EQUIPMENT ||--o{ RESERVATION : "予約される"
ROOM ||--o{ EQUIPMENT : "置かれる"
USER {
int user_id PK "利用者ID"
string name "氏名"
string email UK "メールアドレス"
}
EQUIPMENT {
int equipment_id PK "備品ID"
int room_id FK "置き場所"
string name "備品名"
}
ROOM {
int room_id PK "会議室ID"
string name "会議室名"
}
RESERVATION {
int reservation_id PK "予約ID"
int user_id FK "利用者"
int equipment_id FK "備品"
datetime start_at "開始日時"
datetime end_at "終了日時"
}
状態遷移図
次の状態の移り変わりを Mermaid の状態遷移図にしてください。
# 図の指定
- 種類:stateDiagram-v2、向きは direction LR
- 状態は state "表示名" as ID の形で先に定義する。ID は半角英字。
- 矢印には「何をしたら移るか」をコロンの後に書く。
- 開始と終了は [*] で表す。状態は10個まで。
# 状態と移り変わり
[例:予約は申請中から始まる。承認すると承認済み、利用を始めると利用中、返却すると返却済みで終わる。申請中と承認済みからは取り消しができる。]
# 共通ルール
(共通ルールの枠を貼る)
stateDiagram-v2
direction LR
state "申請中" as requested
state "承認済み" as approved
state "利用中" as in_use
state "返却済み" as returned
state "取り消し" as cancelled
[*] --> requested : 申請する
requested --> approved : 承認する
requested --> cancelled : 取り消す
approved --> in_use : 利用を開始する
approved --> cancelled : 取り消す
in_use --> returned : 返却する
returned --> [*]
cancelled --> [*]
ガントチャート
次の作業を Mermaid のガントチャートにしてください。
# 図の指定
- 種類:gantt
- dateFormat は YYYY-MM-DD、目盛りは axisFormat %m/%d、土日は excludes weekends で除く。
- 作業は「作業名 :ID, 開始日または after 前の作業ID, 日数」の形にする。ID は半角英数字。
- 作業名にコロンを入れない。section で工程を分ける。作業は15個まで。
- 節目は milestone として0日で置く。
# 作業
[例:2026-10-05 から画面設計5日、続けてテーブル設計3日。その後に予約登録の改修6日と一覧画面の改修4日を並行。予約登録の改修の後に結合テスト5日、その後リリース。]
# 共通ルール
(共通ルールの枠を貼る。ガントでは作業名を引用符で囲まない)
gantt
title 備品予約システム 改修スケジュール
dateFormat YYYY-MM-DD
axisFormat %m/%d
excludes weekends
section 設計
画面設計 :des1, 2026-10-05, 5d
テーブル設計 :des2, after des1, 3d
section 開発
予約登録の改修 :dev1, after des2, 6d
一覧画面の改修 :dev2, after des2, 4d
section テスト
結合テスト :test1, after dev1, 5d
リリース :milestone, rel, after test1, 0d
クラス図
次のクラスを Mermaid のクラス図にしてください。
# 図の指定
- 種類:classDiagram、向きは direction LR
- クラス名・属性・メソッドは半角英字。関連のラベルだけ日本語にする。
- 属性は「+型 名前」、メソッドは「+名前(引数) 戻り値の型」の形にする。引数に型やコロンを書かない。
- 総称型は山かっこではなくチルダで書く(例:List~Reservation~)。
- 多重度は "1" や "0..*" のように二重引用符で書く。クラスは8個まで。
# クラス
[例:利用者は備品を期間を指定して予約する。予約は期間を1つ持ち、取り消せる。期間は他の期間と重なるかを判定できる。備品は期間を渡すと空いているかを返す。]
# 共通ルール
(共通ルールの枠を貼る)
classDiagram
direction LR
class User {
+int id
+String name
+reserve(equipment, period) Reservation
}
class Equipment {
+int id
+String name
+isAvailable(period) bool
}
class Reservation {
+int id
+Period period
+cancel() void
}
class Period {
+DateTime startAt
+DateTime endAt
+overlaps(other) bool
}
User "1" --> "0..*" Reservation : 予約する
Equipment "1" --> "0..*" Reservation : 予約される
Reservation *-- Period : 持つ
どの図を選ぶか:伝えたい内容から決める判断表
| 伝えたい内容 | 選ぶ図 | 1行目の宣言 |
|---|---|---|
| 手順と分岐(〜なら〜する) | フローチャート | flowchart TD |
| 誰が誰に、どの順番で何を送るか | シーケンス図 | sequenceDiagram |
| テーブルとその関係 | ER図 | erDiagram |
| 1つのものの状態がどう移り変わるか | 状態遷移図 | stateDiagram-v2 |
| 作業の日程と前後関係 | ガントチャート | gantt |
| クラスの持ち物と関連 | クラス図 | classDiagram |
迷ったときは「主語が1つで状態が変わる話」なら状態遷移図、「主語が複数でやり取りする話」ならシーケンス図、「手順の分岐が中心の話」ならフローチャート、と分けると決まります。種類を AI に任せたい場合は、次のように先に選ばせます。
次の内容を図にしたいです。フローチャート、シーケンス図、ER図、状態遷移図、ガントチャート、クラス図のうち、どれが合うかを1つ選び、理由を1文で答えてください。コードはまだ書かないでください。
[図にしたい内容]
エラー早見表
実際に描画して、エラーになった書き方と直し方です。
| よくある原因 | 壊れた書き方 | エラー文の出だし | 直し方 |
|---|---|---|---|
| ラベルの中の括弧・記号 | A[申請(下書き)] |
Parse error … got 'PS' | ラベルを二重引用符で囲む |
| ラベルの中の二重引用符 | A["備品"プロジェクター"を選ぶ"] |
Parse error … got 'STR' | 中の引用符を #quot; と書く |
| 小文字の end というノード名 | check --> end |
Parse error … got 'end' | ID を finish などに変え、表示名で end と書く |
| 矢印の書き間違い | A -> B |
Parse error … got 'MINUS' | フローチャートは --> |
| 種類宣言の抜け | 1行目が A --> B |
UnknownDiagramError | 1行目に flowchart TD などを書く |
| 種類のつづり違い | flowchat TD |
UnknownDiagramError | flowchart に直す |
| コードブロックの記号ごと貼った | 1行目が ```mermaid | UnknownDiagramError | 記号の行を除いて中身だけ貼る |
| 全角記号の混入 | A["申請"] --> B |
Lexical error … Unrecognized text | 記法の記号を半角にする |
| シーケンス図の全角コロン | A->>B: 登録する |
Parse error … Expecting 'TXT' | コロンを半角にする |
| シーケンス図のメッセージ中のセミコロン | A->>B: 検索; 並べ替え |
Parse error … got 'NEWLINE' | #59; と書く |
| スラッシュ2つのコメント | A --> B // 承認へ |
Parse error … got 'NODE_STRING' | 行を分けて %% で書く |
| ER図のリレーションにラベルがない | USER ||--o{ RESERVATION |
Parse error … Expecting 'COLON' | 末尾に : "予約する" を付ける |
ラベルの中の括弧や記号
壊れたコード
flowchart TD
A[申請(下書き)] --> B[承認]
エラー文
Error: Parse error on line 2:
...lowchart TD A[申請(下書き)] --> B[承認]
----------------------^
Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', …(省略)… 'TEXT', 'TAGSTART', got 'PS'
直したコード
flowchart TD
A["申請(下書き)"] --> B["承認"]
丸かっこはノードの形を表す記号でもあるため、ラベルの中に裸で書くと記法として読まれます。ひし形の中に 数量 >= 1 (個) と書いた場合も同じエラーになり、二重引用符で囲むと描画できました。
ラベルの中に二重引用符そのものを入れたいときは、#quot; と書きます。
壊れたコード
flowchart TD
A["備品"プロジェクター"を選ぶ"] --> B["予約"]
エラー文
Error: Parse error on line 2:
...D A["備品"プロジェクター"を選ぶ"] --> B["予約"]
----------------------^
Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', …(省略)… 'TEXT', 'TAGSTART', got 'STR'
直したコード
flowchart TD
A["備品#quot;プロジェクター#quot;を選ぶ"] --> B["予約"]
小文字の end というノード名
壊れたコード
flowchart TD
start --> check
check --> end
エラー文
Error: Parse error on line 3:
...check check --> end
----------------------^
Expecting 'AMP', 'COLON', 'PIPE', 'TESTSTR', 'DOWN', 'DEFAULT', 'NUM', 'COMMA', 'NODE_STRING', 'BRKT', 'MINUS', 'MULT', 'UNICODE_TEXT', got 'end'
直したコード
flowchart TD
start --> check
check --> finish["end"]
end は subgraph を閉じる言葉として使われています。Mermaid の公式ドキュメントにも、フローチャートのノードに小文字だけの end を書くと図が壊れるので、End や END のように大文字を混ぜるよう注意書きがあります。ID を別の名前にして、表示名として end と書く形が確実です。
矢印の書き間違い
壊れたコード
flowchart TD
A -> B
エラー文
Error: Parse error on line 2:
flowchart TD A -> B
------------------^
Expecting 'SEMI', 'NEWLINE', 'EOF', 'AMP', 'START_LINK', 'LINK', 'LINK_ID', got 'MINUS'
直したコード
flowchart TD
A --> B
図の種類によって矢印の形が違います。シーケンス図に A=>B: 送る と書いた場合も Parse error(got 'INVALID')になり、A->>B: 送る に直すと描画できました。
| 図 | よく使う矢印 |
|---|---|
| フローチャート | -->(矢印)、---(線)、-.->(点線)、==>(太線) |
| シーケンス図 | ->>(依頼)、-->>(応答) |
| 状態遷移図 | --> |
| クラス図 | -->(関連)、*--(合成)、<|--(継承) |
種類宣言の抜け・コードブロックの記号ごと貼った場合
壊れたコード
A["申請"] --> B["承認"]
エラー文
UnknownDiagramError: No diagram type detected matching given configuration for text: A["申請"] --> B["承認"]
直したコード
flowchart TD
A["申請"] --> B["承認"]
同じ UnknownDiagramError は、宣言のつづり違い(flowchat)でも、AI の回答をコードブロックの記号(バッククォート3つと mermaid の行)ごと Mermaid のファイルや専用エディタに貼った場合でも出ました。このエラーを見たら、まず1行目を確かめます。 反対に、GitHub の Markdown に貼るときは、mermaid と指定したコードブロックで囲む必要があります。貼る先に合わせて、囲みを付けるか外すかを決めてください。
全角記号の混入
壊れたコード
flowchart TD
A["申請"] --> B["承認"]
エラー文
Error: Lexical error on line 2. Unrecognized text.
flowchart TD A["申請"] --> B["承認"]
-----------------^
直したコード
flowchart TD
A["申請"] --> B["承認"]
シーケンス図では、コロンが全角になっているだけでエラーになります。
壊れたコード
sequenceDiagram
participant A as 予約画面
participant B as 予約API
A->>B: 予約を登録する
エラー文
Error: Parse error on line 4:
...I A->>B: 予約を登録する
----------------------^
Expecting 'TXT', got 'NEWLINE'
直したコード
sequenceDiagram
participant A as 予約画面
participant B as 予約API
A->>B: 予約を登録する
全角の記号は見た目で気づきにくいので、修正を頼むときに「記法の記号をすべて半角に直す」と書き添えます。
コメントとセミコロン
壊れたコード
flowchart TD
A --> B // 承認へ進む
エラー文
Error: Parse error on line 2:
...hart TD A --> B // 承認へ進む
----------------------^
Expecting 'SEMI', 'NEWLINE', 'EOF', 'AMP', 'START_LINK', 'LINK', 'LINK_ID', got 'NODE_STRING'
直したコード
flowchart TD
%% 承認へ進む
A --> B
シーケンス図のメッセージにセミコロンを書くと、そこで文が区切られてエラーになりました。#59; と書くと、図にはセミコロンとして表示されます。
壊れたコード
sequenceDiagram
A->>B: 検索; 並べ替え
B-->>A: 結果
エラー文
Error: Parse error on line 2:
... A->>B: 検索; 並べ替え B-->>A: 結果
----------------------^
Expecting '()', 'SOLID_OPEN_ARROW', 'DOTTED_OPEN_ARROW', …(省略)… 'DOTTED_POINT', got 'NEWLINE'
直したコード
sequenceDiagram
A->>B: 検索#59; 並べ替え
B-->>A: 結果
ER図のリレーションにラベルがない
壊れたコード
erDiagram
USER ||--o{ RESERVATION
エラー文
Error: Parse error on line 2:
...R ||--o{ RESERVATION
-----------------------^
Expecting 'COLON', 'STYLE_SEPARATOR', got 'NEWLINE'
直したコード
erDiagram
USER ||--o{ RESERVATION : "予約する"
エラーにならずに図が変わる書き方
描画はできるのに、意図と違う図になる書き方も見つかりました。エラー文が出ないので、目で見て確かめる必要があります。
| 書き方 | 描画された結果 | 直し方 | 直した後の表示 |
|---|---|---|---|
フローチャートで dev---ops、dev---xray |
ノード名が ps、ray になった(先頭の o と x が線の端の記号として読まれた) | dev --- ops のように線の前後に空白を入れる |
ops、xray |
状態遷移図で [*] --> 申請 中(状態名に空白) |
「申請」と「中」に分かれた | state "申請 中" as requested と定義する |
申請 中 |
ガントで作業名を 設計:画面とテーブル |
作業名が図に表示されなかった | 作業名のコロンを外す、または全角かっこにする | 設計(画面とテーブル) |
クラス図で +reserve(equipment: Equipment): Reservation |
戻り値の前にコロンが2つ並んだ | +reserve(equipment) Reservation と書く |
+reserve(equipment) : Reservation |
クラス図で総称型を山かっこで書く(List の後に山かっこで Reservation) |
山かっこの中が消えて +List history になった |
List~Reservation~ とチルダで書く |
山かっこ付きで表示された |
1つ目は Mermaid の公式ドキュメントにも注意書きがあり、線の直後のノード名が o か x で始まるときは、空白を入れるか大文字にするよう案内されています。
エラー文を貼って直させる修正用プロンプト
次の Mermaid のコードを描画したらエラーになりました。エラー文を手がかりに直してください。
# エラー文
[エラー文をそのまま貼る。行番号と ^ の位置の行も含める]
# コード
[エラーになったコードをそのまま貼る]
# 直し方の決まり
- 図の内容(ノード、矢印、ラベルの文言)は変えない。記法だけを直す。
- 次の順に確かめる:1行目の種類宣言 → 全角の記号 → ラベルの二重引用符 → end という ID → 矢印の形 → コメントの書き方。
- 表示する文字は半角の二重引用符で囲む。ラベルの中の二重引用符は #quot; と書く。
- 出力は、直したコード(mermaid のコードブロック1つ)と、直した箇所の一覧(行番号、直す前、直した後)だけにする。
エラーは出ないが図が意図と違う場合は、次の形で頼みます。
次の Mermaid のコードは描画できますが、意図と違う図になります。
# 意図と違う点
[例:ノード名 ops が ps と表示される]
# コード
[コードをそのまま貼る]
記法の読まれ方が原因と考えられる箇所を挙げ、内容を変えずに直したコードを mermaid のコードブロック1つで出してください。
手元で描画して確かめる手順
AI が返したコードは、貼る前に描画して確かめると安心です。今回使ったコマンドです。
npm install @mermaid-js/mermaid-cli
npx mmdc -i flow.mmd -o flow.svg
flow.mmd にはコードブロックの記号を含めず、中身だけを保存します。エラーがあれば、この記事に載せたような Parse error がそのまま表示されます。インストール済みのブラウザを使う場合は、-p オプションに実行ファイルの場所を書いた JSON を渡します。
{ "executablePath": "/path/to/chrome", "args": ["--no-sandbox"] }
GitHub では、Issue、Discussion、プルリクエスト、Wiki、Markdown ファイルで、mermaid と指定したコードブロックが図として表示されます(GitHub Docs の記載)。
Mermaid・PlantUML・画像生成の使い分け
| 方法 | 出てくるもの | 向いている場面 | 準備 |
|---|---|---|---|
| Mermaid | 文字のコード。貼った先で図になる | Markdown の文書や GitHub に図を載せる。差分を見ながら直す | 対応した表示先があればそのまま。手元では mermaid-cli |
| PlantUML | 文字のコード(@startuml から @enduml まで) | ユースケース図、コンポーネント図、配置図、タイミング図など UML を広く書く | Java が必要。一部の図は Graphviz も使う(PlantUML 公式サイトの記載) |
| 画像生成 | 画像そのもの | 挿絵やイメージ図など、正確な線や文字より雰囲気を伝える絵 | 画像を作れる AI |
| 条件 | 選ぶもの |
|---|---|
| 設計書や README に貼り、後から文字で直したい | Mermaid |
| Mermaid に無い種類の UML を書きたい、すでに PlantUML の資産がある | PlantUML |
| 箱と矢印の関係を正確に示したい | Mermaid か PlantUML(文字で書く方法) |
| 資料の表紙や説明用のイラストがほしい | 画像生成 |
文字で書く方法は、AI に「この矢印を1本足して」と頼んだときに差分が小さく済み、変更の履歴も残せます。
確かめて分かったこと
- 日本語そのものはエラーの原因になりませんでした。 ER図のカラム名(利用者ID、氏名)、エンティティ名、クラス名、状態名を日本語で書いても描画できました。原因になったのは、括弧・引用符・全角の記号・空白です。それでも ID を半角英数字にそろえるよう頼むのは、空白や全角記号の混入をまとめて防げるためです。
- UnknownDiagramError は「1行目」の合図でした。 宣言の抜け、つづり違い、コードブロックの記号の混入のどれでも同じエラーになります。
- エラー文の ^ の位置は、原因の文字の近くを指していました。 全角記号の例では全角の角かっこ、矢印の例では書き間違えた矢印の位置です。エラー文ごと AI に渡す意味があります。
- エラーにならない崩れ方が5種類見つかりました。 ノード名の先頭が欠ける、状態名が分かれる、作業名が消える、メソッドの表示が乱れる、総称型が消える、の5つです。
- 行頭の全角空白、ラベル中の半角セミコロン(フローチャート)、向きを省いた flowchart は描画できました。 エラーの原因を探すときは、ここより先に早見表の項目を確かめるほうが早く済みます。
よくある質問
Q. ChatGPT や Claude で Mermaid の図は作れますか? A. 作れます。Mermaid は文字で書く記法なので、文章を出力できる生成AIならコードを書けます。図として見るには、Mermaid に対応した表示先(GitHub の Markdown など)に貼るか、mermaid-cli で描画します。
Q. Mermaid でエラーが出て表示できないときは? A. 1行目の種類宣言、全角の記号、ラベルの二重引用符の3つを順に確かめます。直らなければ、エラー文とコードを修正用プロンプトに貼って直してもらいます。
Q. フローチャートとシーケンス図の違いは? A. フローチャートは手順と分岐を、シーケンス図は複数の登場者の間のやり取りと順番を表します。登場者が1つで分岐が中心ならフローチャート、登場者が複数ならシーケンス図が合います。
Q. Mermaid と PlantUML の違いは? A. どちらも文字で図を書く記法で、Mermaid は Markdown に貼って表示できる場所が多く、PlantUML は UML の図の種類が広く Java で動かします。貼る先が Mermaid に対応しているかで決めると選びやすくなります。
Q. 図が大きくなりすぎるときは? A. ノード数の上限を指定し、範囲ごとに図を分けて頼みます。「全体の流れを8ノードで」「そのうち承認の部分だけを詳しく」と2段階にすると、読みやすい大きさに収まります。
まとめ
- 図の種類・向き・ノード数の上限・ラベルの二重引用符の4点を指定して頼みます。
- ID は半角英数字、日本語は表示名だけにすると、全角記号や空白の混入を防げます。
- 6種類の図は、伝えたい内容(手順、やり取り、テーブル、状態、日程、クラス)で選びます。
- エラーは1行目、全角記号、引用符、end、矢印、コメントの順に確かめます。
- エラー文は行番号と位置の印ごと AI に渡し、内容を変えずに記法だけ直すよう頼みます。
- 描画できた後も、ノード名と矢印を元の依頼と見比べます。 エラーにならずに図が変わる書き方があるためです。
参考・出典
- Mermaid 公式ドキュメント「Flowcharts Syntax」 https://mermaid.js.org/syntax/flowchart.html
- GitHub Docs「Creating diagrams」 https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams
- PlantUML 公式サイト「Quick Start Guide」 https://plantuml.com/en/starting
(いずれも 2026-10-05 に確認)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「生成AIでMermaid図を作るプロンプト集|図の種類別とエラーの直し方」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。