kinkozi マークダウンエディタープラグインでのmermaidを用いたフロー図の書き方について、説明していきます。
もくじ
1. markdown中にmermaidを書くための宣言
```mermaid
---
title: あいうえおかきっくけこさしすせそ
---
flowchart LR
id
```
バッククォート3つにつづけてmermaidと記載し、次に来るバッククォート3つまでがmermaidとして評価されます。
ハイフン3つで囲んだフロントマター(Frontmatter)に title を定義できます。
mermaid自体の記法はこちらのマニュアルにある通りですが、要約してサンプルと合わせて掲載いたします。
なお、フローチャートのためのキーワード flowchart と graph はどちらも同じ動きをします。
2. チャートの方向
チャートの方向性を flowchartキーワードの後にセットします。
- TB - 上から下へ
- TD - トップダウン/上から下と同じ
- BT - 下から上へ
- RL - 右から左
- LR - 左から右
3. ノードの表記方法
```mermaid
flowchart LR
開始 --> 処理 --> 終了
開始@{ shape: rect }
処理@{ shape: rect }
終了@{ shape: rect }
```
ノードを線で結ぶことでフローチャートを作成します。ノード名がそのまま表示文言になります。
四角形や三角形など自由に選ぶことができます。
「開始 --> 処理 --> 終了」 は名前の定義と紐づけ定義部分になり、図形の形は別途、以下のように行います。
ノード名とは別の表示をしたい場合、labelを定義すると上書きできます。
ノード名@{ shape: 形, label: "ラベル"}
この、形の定義は45種類(2025/6/20現在)あるためここでは代表的なものを上げておきます。
詳細はこちらをご覧ください。
# | セマンティック名 (用途) | 表示図形 | shape 指定子 |
主な場面 |
---|---|---|---|---|
1 | プロセス | 矩形 | rect |
一般的な処理ステップ |
2 | 決断 | ひし形 | diam |
Yes/No など条件分岐 |
3 | 開始/終了(小) | 円 | circle |
フローの開始・途中分岐点 |
4 | 停止 | 二重円 | dbl-circ |
フローの完了・停止 |
5 | データベース | シリンダー | cyl |
DB 保存・参照 |
6 | ドキュメント | 書類 | doc |
単票・帳票・レポート出力 |
7 | 手動入力 | 傾斜長方形 | sl-rect |
人手による入力作業 |
8 | フォーク/ジョイン | 塗りつぶし長方形 | fork |
並列処理の分岐/合流 |
9 | イベント/コール | 角丸長方形 | rounded |
トリガー・イベント発火 |
10 | データ入出力 | 右傾台形 | lean-r |
ファイル I/O、端末入出力 |
4.ノード間のリンクの種類
4.1. リンクの種類
1,2,3と文字数を増やしていくことで線を長くすることができます。
長さ | 1 | 2 | 3 |
---|---|---|---|
普通 | --- |
---- |
----- |
矢印付きの通常 | --> |
---> |
----> |
厚い | === |
==== |
===== |
矢が太い | ==> |
===> |
====> |
点在 | -.- |
-..- |
-...- |
矢印の点線 | -.-> |
-..-> |
-...-> |
```mermaid
flowchart LR
開始 ---------> 処理 -......-> 終了
開始@{ shape: rect }
処理@{ shape: rect }
終了@{ shape: rect }%% リンクの色の定義
linkStyle 0,1 stroke:#ffffff,stroke-width:2px
```
サンプルのlinkStyleは5.2で追って説明しますが、矢印の色がデフォルトで黒で見にくいため修正しています。
4.2. リンクの文字
文字付きのリンクの場合、以下のように中間に文字を入れます。
flowchart LR
A == text ==> B
B ==> |OK| C
B ==> |NG| D
4.3. リンクの終端の種類
終端を矢印ではなく〇や×にすることができます。
flowchart LR
A o--o B
B <--> C
C x--x D
linkStyle 0,1,2 stroke:#ffffff,stroke-width:2px
4.4 リンクの終端に名前を付ける
終端(edge)に以下のように名前を付けることができます。edge に対してアニメーションの定義を加えることができます。
flowchart LR
A e1@--> B
以下のように、ノードのshapeやlabelを定義したようにedgeのアニメーションを有効化できます。
flowchart LR
A e1@==> B
e1@{ animate: true }
linkStyle 0 stroke:#ffffff,stroke-width:2px
5. ノードとリンクの修飾
5.1. ノードの装飾
ノードは style にて色や線の太さを変更することができます。
複数のノードに同じスタイルを適用したい場合は classDef にてスタイルを定義したうえで、 class でカンマ区切りでノード名を指定しクラス定義を適用してください。
flowchart LR
start --> process --> stop%% 単体のスタイルの定義
style process fill:#f8f8f8,stroke:#666,stroke-width:2px,font-weight:bold
%% 複数に同じスタイルの定義を適用する場合
classDef startStop fill:#ffcf33,stroke:#cc9900,stroke-width:3px,rx:8,ry:8
class start,stop startStop
linkStyle 0,1 stroke:#ffffff,stroke-width:2px
5.2. リンクの装飾
リンクの色や太さを linkStyle で指定することができます。linkStyleで指定するリンクは定義された順番で連番で0から指定することができます。またはすべて同じ場合はdefaultを指定することができます。
linkStyle 0,1 stroke:#ffffff,stroke-width:2px
linkStyle default stroke:#ffffff,stroke-width:2px
6. サンプル
以下、サンプルとそのキャプチャー画像となります。
```mermaid
graph TD
A e1@-->B
B e2@-->C
C e3@-->|OK| D
C-->|NG| E
D-.->|Reference| F
D e4@--->|メール送信| End
E -->|電話| H
A@{ shape: braces, label: "アプリ起動" }
B@{ shape: manual-input, label: "レコード入力"}
C@{ shape: docs, label: "作業報告アプリ"}
D@{ shape: procs, label: "レポートPDF生成"}
E@{ shape: paper-tape, label: "現場担当者に確認" }
F@{ shape: lin-cyl, label: "PDF保存"}
End@{ shape: cross-circ, label: "End"}
H@{ shape: bolt, label: "Communication link" }%% 矢印(リンク)スタイルの指定(indexは0から)
linkStyle 0,1,4,5 stroke:#ffffff,stroke-width:2px
linkStyle 2 stroke:#8f8
linkStyle 3 stroke:#f88%% アニメーションの定義
e1@{ animate: true }
e2@{ animate: true }
e3@{ animate: true }
e4@{ animate: true }%% ノードの色の定義
classDef className fill :#ffff33 ;
class A,B className
style D fill:#ffaf
```