Markdownで図が書きたい。そんな時はMermaid。

Mermaid
Sponsored Link

Markdownで図は書けるのか

Markdownを使っていると、少し図を入れたいなどと思うことがあります。
ありものの図であれば画像ファイル化して埋め込めばいいのですが、自分で作る図となるとそうはいきません。

ちなみに、図といってもフローチャートとかなので「お絵描き」ではありません。

Mermaid

Markdownでは残念ながら図を描くことはできませんが、Mermaidを使えばかけます。

「おいおい。結局Markdownでは書けないのかよ。」と思うかもしれませんが、MermaidはMarkdownの中に記載することができます。

Markdownの中にMermaid?

訳が分からなくなってきていると思いますので、実際の例をお見せしましょう。

Markdownでこんな感じに書いてみます。

    ```mermaid
    flowchart LR
        id((開始)) --> 処理1
        処理1 --> id2{分岐}
        id2{分岐} -- yes --> 処理2
        id2 --no--> 処理3
        処理2 --> 処理3
        処理3 --> id3((終了))
    ```

これでこんな感じの図が書けます。

何が起きているのか

Mermaidのページでは以下のように説明されています。

Diagramming and charting tool

JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.

引用:Mermaid | Diagramming and charting tool

機械翻訳:
作図およびチャート作成ツール

Markdown に着想を得たテキスト定義をレンダリングしてダイアグラムを動的に作成および変更する、JavaScript ベースのダイアグラム作成およびチャート作成ツール。

Mermaid事前に定義されている書式をもとに、文字で記載された情報をJavaScriptを使って図にしています。

つまり、決まった形で記載することでいろいろな図が作れるフォーマットなのです。

Mermaidのフォーマット

Mermaidの書き方は以下のページで確認できます。

About Mermaid | Mermaid
Create diagrams and visualizations using text and code.

この記事を書いている時点で、以下のフォーマットが用意されています。

  • Flowchart(フローチャート)
  • Sequence Diagram(シーケンス図)
  • Class Diagram(クラス図)
  • State Diagram(状態図)
  • Entity Relationship Diagram(エンティティ関係図)
  • User Journey(カスターマージャーニー)
  • Gantt(ガント)
  • Pie Chart(円グラフ)
  • Requirement Diagram(要件図)
  • Gitgraph (Git) Diagram(Gitgraph(Git)ダイアグラム)
  • C4C Diatram (Context)(C4モデル)
  • Mindmaps(マインドマップ)
  • Timeline(タイムライン)

具体的な使い方は次回以降で記事にしていこうと思います。

Visual Studio Code(VSCode)のプレビューで出てこない

「Markdownの中にMermaid?」で書いたサンプルをVSCodeに張り付けて、プレビューを表示してみましょう。

プレビュー表示の仕方などは以下の記事を参照してください。

Visual Studio Code(VSCode)でMarkdownを使うとメモがまとまる話。
Markdownってパソコンでメモを取るときに皆さんは何のソフトを使って、どの形式で保存していますか?多いパターンとしてはこんな感じではないでしょうか。 Windowsのメモ帳を使ってテキストファイルで保存 サクラエディタを使ってテキストフ...

プレビューで図が表示された方は「Mermaid」についてご存じか、一度チャレンジしたことがある方ですね。具体的な書き方は別の記事になるので、そちらをご参照さい。

見事に文字が出た方は、VSCodeに拡張機能を追加する必要があります。

VSCodeは標準状態でMarkdownを解読してきれいに表示することができても、「Mermaid」については標準状態では変換方法を知りません。
そのため、ただのコードとして表示してしまいます。

ここでは「Markdown Preview Mermaid Support」という拡張機能を紹介します。

Markdown Preview Mermaid Support - Visual Studio Marketplace
Extension for Visual Studio Code - Adds Mermaid diagram and flowchart support to VS Code's builtin markdown preview

拡張機能のインストール方法がわからない場合は「Markdown PDF」などと同じなので、過去記事を参照してください。

Markdownで書いたファイルをPDF出力する。(Visual Studio Code拡張機能)
Markdownでメモを取る以前の記事でMarkdownでメモを取ると便利なことを紹介しました。が、とったメモをVisual Studio Code(VSCode)などを利用していない人に共有しても説明が面倒くさいです。 「メモ帳やテキスト...

拡張機能追加後に再度プレビューをするときれいに表示されるはずです。

Markdown PDFを使うとMermaidが表示されない

Markdown PDFを使ってPDFに変換した場合、図がうまく表示されない場合があります。
大体は「インターネットに接続されていない」か「バグ対応を行っていない」のいずれかです。

インターネットに接続されていない

Mermaidの変換にはJavaScriptが使われます。
このJavaScriptは「Markdown PDF」拡張機能の追加でインストールされるわけではなく、インターネット上のMermaid公式のJavaScriptを作成時に参照しています。

「Markdown PDF」では一度HTMLに変換したデータをPDF化しています。
そのため、インターネットに接続されていない状態でPDFに変換しようとしても、JavaScriptが取得できないため、変換が行われません。
なお、どうしてもインターネットに接続できない環境であれば、このJavaScriptをダウンロードしておいて、無理やり埋め込む方法もあります。

バグ対応を行っていない

「Markdown PDF」の設定でMermaidのサーバーを指定していますが、標準状態では昔のサーバーが指定されており、そのURLは現在無効です。
そのため、設定で現在アクセス可能なMermaidサーバーを指定します。

"markdown-pdf.mermaidServer": "https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js",

詳細は以下の記事を参照してください。

Markdownで書いたファイルをPDF出力する。(Visual Studio Code拡張機能)
Markdownでメモを取る以前の記事でMarkdownでメモを取ると便利なことを紹介しました。が、とったメモをVisual Studio Code(VSCode)などを利用していない人に共有しても説明が面倒くさいです。 「メモ帳やテキスト...

バグ情報はこちら。

Mermaid Not Rendering · Issue #313 · yzane/vscode-markdown-pdf
We are using the latest version of VSCode (v1.75.1) along with Markdown PDF (v1.4.4). It appears all mermaid, no matter ...

次回以降でMermaidの具体的な書き方と意味を記事にしたいと思います。

コメント