nikkie-ftnextの日記

イベントレポートや読書メモを発信

Mermaidの記法で書いたファイルからPNG画像を生成!ありがとう、mermaid-cli

はじめに

秘密はね、最後に明かされるんだよ。 nikkieです。

1日1エントリに忍ばせたちょっとした伏線回収をします(小ネタです)。

目次

Mermaidすげえええ!

記法に沿ってテキストファイルを書くだけで、フローチャートに変換されるのに感動しました。
触ったばかりの頃はPNG画像に変換する方法が分からず、スクショしていました。

数日後に書いたエントリが以下。

Mermaidでフローチャートが作れることが分かったので、Pythonのloggingのドキュメント中のフローチャートを写経しています。
では、このエントリ中のフローチャートの画像はどう作ったでしょう? スクショでしょうか?

mermaid-cliで画像に変換できるぞ!

スクショではなく、変換したPNG画像をブログにアップロードしています。
ここで使ったのが、mermaid-cli

It takes a mermaid definition file as input and generates an svg/png/pdf file as output.

意訳 mermaid-cliは入力としてmermaid記法のファイルを取り、出力としてsvg/png/pdfファイルを生成する

Mermaid記法のテキストファイルを、PNG画像(やSVG画像、PDF)に変換できちゃうんです!

mermaid-cliは非常に簡単🍰

インストール

環境は以下です。

% node --version
v18.13.0
% npm --version
8.19.3

グローバルでなく、作業ディレクトリにインストールしました。

% npm install @mermaid-js/mermaid-cli
% ./node_modules/.bin/mmdc --version
10.1.0

使い方

使い方も非常に簡単!
handler_flow.mmd(テキストファイル)を以下の内容で用意します。
https://gist.githubusercontent.com/ftnext/6d9542623faa9f069f22610b90178ee7/raw/7fad74d4b7d3d38b50fa739ac91c4354720529dc/handler_flow.mmd

PNG画像を生成するコマンドがこちら!

% ./node_modules/.bin/mmdc -i handler_flow.mmd -o handler_flow.png

フローチャートPNG画像ができました!🙌
PuppeteerでChromeをヘッドレスモードで動かしている?ようです。

ドキュメントのExamplesに使いこなしtipsが紹介されています。
https://github.com/mermaid-js/mermaid-cli/tree/10.1.0#examples
こんなこともできる!

  • 標準入力からMermaid記法を受け取る(ヒアドキュメント! ちょっとした図を描くのによさそう)
  • MarkdownファイルのMermaid記法の箇所を、画像を埋め込んだ状態に変換する

終わりに

Mermaidの記法で書いたテキストファイルを、mermaid-climmdcコマンド)でPNG画像に変換する方法を記しました。
Pythonのloggingモジュールのフローチャート写経の秘密は、mermaid-cliだったのです!

Mermaidは非常に感触がよく、発表資料にも活用していきたいな〜と思っています。
また、TwitterGPTと相性がいいとも教えていただき(ありがとうございます!)、ワクワクしています〜