メインコンテンツまでスキップ

Mermaidでテキストベースのダイアグラム図を作成する - コードで描く効率的な図の作成方法

· 約7分
Shinya Kato
DayoneLabs管理人、ソフトウェア開発者、OSS開発者

Mermaidでテキストベースのダイアグラム図を作成する - コードで描く効率的な図の作成方法

どうも、Shinyaです。この記事では、テキストベースでダイアグラム図を作成できるライブラリ「Mermaid」について解説します。ExcelやWordでの図作成と比較しながら、Mermaidの基本的な使い方と対応する図の種類を紹介します。

この記事はこんな人にオススメ
  • フローチャートやシーケンス図をテキストベースで作成したい人
  • ExcelやWordでの図の作成・管理に非効率さを感じている人
  • マークダウンに図を統合して管理したい人
  • LLMなどのAI技術と親和性の高い図の作成方法を探している人

従来の図作成の課題

フローチャートやアーキテクチャ図の作成には、ExcelやWordなどのOfficeアプリケーション、または専用のダイアグラムツールが使われることが多いです。しかし、これらのアプリケーションでの図作成にはいくつかの課題があります。

  • 作成・更新に時間がかかる: 図形を一つずつ配置し、矢印で接続する作業が必要
  • 保守性が低い: フローを追加する際に全体の配置を手動で調整する必要がある
  • テキストベースでない: Gitでの差分管理が困難で、LLMなどのテキストを扱う技術との親和性が低い
項目ExcelやWordMermaid
作成方法図形をGUIで配置テキスト(コード)で記述
フローの追加全体の再配置が必要1〜数行のテキスト追加
バージョン管理バイナリファイルのため差分管理が困難テキストのためGitで差分管理が可能
LLMとの親和性低い(バイナリ形式)高い(テキスト形式)
レイアウト手動で調整自動レイアウト

Mermaidとは

Mermaidは、JavaScriptベースのオープンソースライブラリで、テキスト(コード)からダイアグラム図を動的に生成します。マークダウンに統合できるため、ドキュメントと図を一元管理することが可能です。

JavaScript Open Source Awards 2019では「The Most Exciting Use of Technology」として表彰されています。

Mermaidの主な特徴

  • テキストベース: コードで図を記述するため、Gitでのバージョン管理が可能
  • 自動レイアウト: ノードの配置やフローの描画を自動で処理
  • 多様な図に対応: フローチャート、シーケンス図、クラス図など多くの図をサポート
  • 幅広い統合: GitHub、GitLab、VSCode、Docusaurusなど多くのプラットフォームで利用可能

Mermaidの基本的な使い方

Mermaidでは、マークダウンのコードブロック内にmermaidを指定して図を記述します。

フローチャート

フローチャートは、処理の流れや分岐を表現する図です。flowchartキーワードで定義し、TD(上から下)やLR(左から右)で方向を指定します。

以下はMermaid公式サイトで紹介されているコード例です。

```mermaid
flowchart TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
```

このコードをMermaidで描画すると、次のようなフローチャートが生成されます。

構文は直感的で、A[テキスト]でノードを定義し、-->で矢印を描画、|ラベル|でラベルを付与します。[]は四角形、()は角丸、{}はひし形(分岐)を表します。

フローの追加と削除

4番目の選択肢として「Sweet」を追加する場合、1行追加するだけで対応できます。

```mermaid
flowchart TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
C -->|Four| G[Sweet]
```

レイアウトはMermaidが自動で調整するため、ノードの位置を手動で変更する必要はありません。不要なフローを削除する場合も、該当する行を削除するだけです。

シーケンス図

シーケンス図は、システム間のメッセージのやり取りを時系列で表現する図です。API通信や認証フローの可視化に適しています。

クラス図

クラス図は、クラスの構造と関係を表現する図です。オブジェクト指向設計の可視化に利用されます。

状態図

状態図は、オブジェクトの状態遷移を表現する図です。ライフサイクルやワークフローの可視化に適しています。

ER図(エンティティ関係図)

ER図は、データベースのテーブル構造とリレーションを表現する図です。

対応する図の種類

Mermaidはここで紹介した図以外にも、ガントチャート、円グラフ、Git Graph、マインドマップ、タイムラインなど多くの図に対応しています。対応する図の一覧はMermaid公式ドキュメントで確認できます。

Mermaidの導入方法

Mermaidは多くのプラットフォームで利用可能です。代表的な導入方法を紹介します。

Visual Studio Code

VSCodeでは、拡張機能「Markdown Preview Mermaid Support」をインストールすることで、マークダウンのプレビュー画面でMermaid図を描画できます。

VSCodeのインストールについては、HomebrewでVisual Studio Codeをインストールするで解説しています。

GitHub / GitLab

GitHubとGitLabでは、マークダウンファイル内のmermaidコードブロックがネイティブで描画されます。READMEやIssue、Pull Requestの説明文にMermaid図を含めることが可能です。

Docusaurus

Docusaurusでは、@docusaurus/theme-mermaidテーマを導入することでMermaid図を利用できます。docusaurus.config.tsで以下のように設定します。

docusaurus.config.ts
export default {
markdown: {
mermaid: true,
},
themes: ['@docusaurus/theme-mermaid'],
};

Docusaurusの基本的な使い方については、Docusaurusで静的サイトを構築するで解説しています。

Mermaid Live Editor

Mermaid Live Editorは、ブラウザ上でMermaid図を編集・プレビューできる公式ツールです。環境構築不要で、Mermaidの構文を試すことができます。

関連記事

まとめ

この記事では、テキストベースでダイアグラム図を作成できるMermaidについて解説しました。Mermaidを使用することで、フローチャート、シーケンス図、クラス図、状態図、ER図など多様な図をコードで記述でき、Gitでのバージョン管理やLLMとの連携も可能になります。VSCode、GitHub、Docusaurusなど多くのプラットフォームで利用できるため、ドキュメント作成の効率化に有効です。


参考リンク:

免責事項:
当記事は管理人の開発時に書き留められたメモをもとにAIを活用して編纂されたものです。 管理人は記事の公開前に内容の校正・校閲を行い、記事の信頼性と正確性の向上に務めますが、それらを保証するものではありません。 また、当記事の編集時の誤字やコード例の不具合等によって読者が何らかの損害等を被った場合でも、管理人は一切の責任を負いません。 当記事に掲載したコンテンツの利用については自己責任でお願い致します。