Tech
Astro ブログで Mermaid 図を使う
Astro ブログで Mermaid 図を使う
技術ブログを書いていると、文章だけでは伝えにくい「構造」や「フロー」を図で示したくなる場面があります。この記事では、Markdown のコードブロックから Mermaid ダイアグラムを描画できるようにした仕組みと、実際の使い方を紹介します。
Mermaid とは
Mermaid は、テキストベースの記法で図を描けるライブラリです。GitHub や Notion でもサポートされていて、馴染みのある方も多いのではないでしょうか。
コードブロックに mermaid と指定するだけで、SVG のダイアグラムに変換されます。
フローチャート
処理の流れを示す最も基本的な図です。
シーケンス図
API コールの流れなど、時系列のやり取りを表現するのに便利です。
クラス図
オブジェクトの関係を整理するときに使います。
Git グラフ
ブランチ戦略を視覚的に説明できます。
状態遷移図
テーマ切り替えのような状態管理の説明にも使えます。
円グラフ
簡単な割合の表示にも対応しています。
実装方法
このサイトでの Mermaid 対応は、以下の流れで動作しています。
- Markdown の
```mermaidブロックを Shiki が<code class="language-mermaid">として HTML に変換 MermaidRendererコンポーネントがページ読み込み時に該当ブロックを検出- Mermaid ライブラリを動的 import して SVG に置換
// mermaid ブロックがある場合のみライブラリを読み込む
const blocks = document.querySelectorAll('code.language-mermaid');
if (blocks.length === 0) return;
const { default: mermaid } = await import("mermaid");
ポイントは 動的 import です。Mermaid はバンドルサイズが大きいため、図を含まない記事ではライブラリ自体を読み込みません。
まとめ
Mermaid を使えば、図をわざわざ画像ツールで作る必要がなくなります。テキストで管理できるので Git との相性も良く、記事の更新時に図だけ古いまま……という問題も起きません。
対応している図の種類は他にもあるので、詳しくは Mermaid 公式ドキュメント を参照してください。