43号線を西へ東へ

フリーランスの備忘録、アウトプットの実験場

ブログでチャートを書くMermaid記法

このブログはプロモーションリンクを含むときがあります


ブログやホームページでフローチャートを比較的簡単に作成する方法を調べました。Mermaid(マーメイド)記法と言います。箇条書きのテキストをハイフン----->でつなげたりすることでフローチャートなどの図が作成できます。

シーケンス図やガントチャートなども書けるようです。今のところフローチャートを書いて練習しています。慣れれば手間が減りそうです。

実例

Mermaid記法でチャートを書く段取りをフローチャートにしてみました。出来上がり図、コードの文字列、書き方の順に説明をします。

実際の表示がこちら

flowchart TD
    A[Mermaidを使うのは?] --(はじめて!)--> B[ヘッダにMermaidのコードを記入]
    B  --> D[Meamaid記法のテキストを書く]
    A --(2回目以降) --> D
    D --- E[```mermaid のコードブロックにテキストを挿入]
    E --- F[完成]

    classDef someclass fill:#f96;
    class F someclass

書き方

```mermaid```
上記の様に、Marmaidと明記したバッククオート3つで前後を囲んでコードブロックを作ります。その中にMermaid記法で文字列を書いてチャートを作成します。

```mermaid

flowchart TD
    A[Mermaidを使うのは?] --(はじめて!)--> B[ヘッダにMermaidのコードを記入]
    B --> D[Meamaid記法のテキストを書く]
    A -- (2回目以降) --> D
    D --- E[```mermaid のコードブロックにテキストを挿入]
    E --- F[完成]

    classDef someclass fill:#f96;
    class F someclass

```

フローチャートの書き方

  • flowchart:フローチャートを書くことを明示
  • TDは上→下、LRは左→右
  • アルファベットは関数、分岐する時は必須?
  • []はタイトル、()は分岐条件など?
  • --はライン、-->矢印
  • classを指定することで色を変えることができる

Mermaid記法を確認しながらかけるサイト

ライブプレビューが可能なMermaid記法のエディタサイトです。

サンプルを編集しながら、試すことができます。

はてなブログ公式のリファレンス

はてなブログJavaScriptCSSなどをご自身で記載し、自由にカスタムできるプラットフォームです。Mermaidの対応も、少し設定を加えることでご自身のブログに導入することが可能です。
現在のところ、はてなブログとしてMermaid記法に対応する予定はございません。これはMermaid記法が主に技術者に向けた機能であり、一般に広く使われることを想定しないこと、利用ライブラリの変更、バージョンを指定したいなどの事情を考慮したものです。

技術者向けの機能なので公式対応はしていないが、カスタマイズの範囲でできるので、やれる人はやってくださいとのことですね。

ヘッダーに入れるコード

はてなブログブログの詳細設定 要素にメタデータを追加で下記のコードをコピーペーストします。

<script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>

Mermaid記法でかけるチャートの例

シーケンス図とガントチャートのサンプルを表示します。

シーケンス図の例

シーケンス図は、異なるオブジェクトがどのようにやり取りを行うか、またそれが時間に沿ってどのように進むかを、図を使って見やすく示すのに適しています。

下図ではレストランで注文してから料理が出てくるまでの店内の作業過程をシーケンス図で表したものです。

sequenceDiagram
    actor 顧客
    participant ウェイター
    participant キッチン

    顧客->>ウェイター: 注文する
    ウェイター->>キッチン: 注文を伝える
    loop 料理の準備
        キッチン->>キッチン: 料理を作る
    end
    キッチン->>ウェイター: 料理を提供
    ウェイター->>顧客: 料理を提供
sequenceDiagram
    actor 顧客
    participant ウェイター
    participant キッチン

    顧客->>ウェイター: 注文する
    ウェイター->>キッチン: 注文を伝える
    loop 料理の準備
        キッチン->>キッチン: 料理を作る
    end
    キッチン->>ウェイター: 料理を提供
    ウェイター->>顧客: 料理を提供

ガントチャートの例

ガントチャートとは、プロジェクト管理における視覚的ツールで、のスケジュールと進捗を横棒で表示します。プロジェクトが予定通りに進んでいるかどうかを簡単に判断できるようになっているチャートです。

gantt
    title プロジェクトガントチャート
    dateFormat  YYYY-MM-DD
    section 調査
    市場調査           :done,    des1, 2023-01-01, 2023-01-08
    製品調査          :active,  des2, 2023-01-09, 2023-01-15
    section 設計
    製品設計          :         des3, after des2, 5d
    試作品設計         :         des4, after des3, 5d
    section 実装
    試作品製造         :         des5, after des4, 7d
    製品テスト         :         des6, after des5, 5d
    section 完成
    レビュー           :         des7, after des6, 3d
    製品発売           :         des8, after des7, 5d
gantt
    title プロジェクトガントチャート
    dateFormat  YYYY-MM-DD
    section 調査
    市場調査           :done,    des1, 2023-01-01, 2023-01-08
    製品調査          :active,  des2, 2023-01-09, 2023-01-15
    section 設計
    製品設計          :         des3, after des2, 5d
    試作品設計         :         des4, after des3, 5d
    section 実装
    試作品製造         :         des5, after des4, 7d
    製品テスト         :         des6, after des5, 5d
    section 完成
    レビュー           :         des7, after des6, 3d
    製品発売           :         des8, after des7, 5d

参考にさせていただいたリンク

cartman0.hatenablog.com

まとめ

調べ物をしている最中にMermaidを使ったフローチャートの書き方を見つけました。他のアプリを使う事なくフローチャートが使える便利な仕組みですが、サイトを開いたときに描画がもたつく事があるのが玉に瑕です。

作成したチャートをスクリーンショットして画像に貼り付けるのもいいかもしれません。