ボックスと矢印で関係性を記述したグラフがたいへん簡単に描けるMermaidというツールを使ってみたので紹介します。
構成図が描きたい
ひとつ前の『Nextcloudをロードバランシング』という記事を仲間内で見せたところ、わけわかんねえよ構成図描けよ、と言われたので、気になってたMermaidというグラフマークアップツールを使ってみました。
こいつはテキストで内容物をゴジョゴジョっと書くだけでグラフ(ノードとエッジで構成された数学的な意味のグラフ…なんだけど、実はパイチャートとかも描けるらしい)が描けてしまうというツール。トップページにいろいろ載ってる。
マークアップに必要な文法の解説もいろいろあるんだけど、オレはとりあえずライブエディタにkubernetesのチュートリアルの例を突っ込んで、いろいろいじってカラダで覚えました。
それで出来た図がこれなんだけど:
こいつがこのくらいの記述でできるわけです:
graph LRsubgraph home[家]routerendclassDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000;classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5;class thenet plain;class home,cluster cluster;
ここで使った要素は:
- graph LRで左から右に行く図
- 文字を書くとそのままノードになる(router[<b>FreeBSD</b><br>ルータ兼 <br> ロードバランサ<br>兼Redis<br>Nextcloud予備]のように名称と表記を分けられる)
- 矢印で関係性を記述
- 囲み部分はsubgraph
- 色付けや装飾はclassDefで書いたものをclass宣言で割当て
という感じ。
気に入ったのが、こいつはグラフ(数学的な)記述ツールなので、エッジ(矢印)を適当に足したり引いたりしてやると、関係性のガラっと変わったグラフが一瞬で描けてしまうこと。
上図にたどり着くまでは紆余曲折あるのでお見せしましょう。まずは最初のバージョン。
なんか関係性がヘンです。dbserverはルータじゃなくてNextcloudと通信するでしょ?とかそういうの。それで直したのが次。
一気にわかりやすくなりました。
これでいいじゃんと思ったんだけど、いらんバージョンアップをしてみる。
いやー、Linuxが調子悪かったらFreeBSDからdbserverにアクセスすることもあるんですよ、といいながら足してみたら一挙におかしな感じになりました。
ちょっと矢印の意味が統一されてないよね? アクセスの流れと頻度でやろうかな。ということで整理:
いや、これって単にFreeBSDマシンから見た流れだよね? もうユーザー視点で整理したほうが良くね? ということで出来たのが完成版:
頻度を反映したり
矢印増やしたくない? てことで足したり
みたいなことが、数行のコピペだけでできてしまうわけです。
これらは以下のように、コードの記述的には「linux --> windows」の行を増やしたり
linux --> internet
windows --> client
の2行を足したりしてるだけです。やるなグラフ理論。
Mermaidのページに初めてアクセスしてから最初のバージョンを出すまでに30分くらいかかってますが、そのあと最後の図までの足したり引いたりは、全部で20分とかです。グラフ最高!!
Joplinで使えます
もうひとつ大事なことがあります。最後の2枚はOnline Editorじゃなく、Joplinに標準で入ってるインラインプラグインで描いてるんです。
JoplinはEvernote代替を目指してるノートアプリですが、組み込みのMarkdownエディタがたいへん強力で、書いたMDが即座にフォーマットされるライブコーディングエディタになってます。
そしてmermaidに関しても、記述が即座に図に反映されてくれます。つまり、だいたい手元で完結してていじり放題です。
さいきんは50人くらいのクラスで授業とかやってるんで、資料作りが大変だったんですが、こんな感じで定形に流し込むだけで関係性を記述できるグラフが簡単に描ける、しかもその場で…! ほとんど夢のようです。
いやー、便利な世の中になったよね。やり放題ですわ〜。