2022/03/12

文字で図を描く

まとめ

  • GraphViz はすごい
  • ASCIIFlow もよいよね

 


おはなし

何を言っているんだか、というタイトルになってしまったが、開発ドキュメントのことだ。

私は比較的図を描くのが好きな方だと思う。
図にできないようであれば言葉でも説明できないだろう、と思っているのだろう。

かなりの場合で Excel を使っている。
Windows10 の「新規作成>Excel」でよく使う Excelテンプレートのファイルを作るように変更するくらいには使っている。
いまだに、Excel より使い勝手のよいツールを見つけられていないのだ。

計算もできる、図も描ける。
編集できるのが印刷単位ではないので広く使えるし、なんなら表だって作ることができる。
画像も貼り付けられるし、それでいてファイルサイズはあまり大きくならない。
OpenOffice 系のツールも、Word や Excel の代替としてはよいと思うのだが、図が描きにくいのだ。そういう意味では Web版の Excel は私に合わないかもしれない。

思い返すと、Excel より前に開発でよく使っていたのは Visio だった。
Visio といっても、Microsoft に買収される前だ。
これはよいね、と思って使っていたら Microsoft に買収されて、これはもっとよくなるかと思ったら・・・・、いかんいかん、昔のことは忘れよう。

ともかく、アプリの好き嫌いは個人でけっこう差があるし、マシンスペックによって受ける印象が全然違うこともあるしで、私の目線で話すことは全然客観的ではない、とだけ言わせてもらおう。

 

話を戻して。

履歴管理と画像ファイルの相性はそれほど良くない。
ファイルが変更されたことは分かるが、どの部分が変更されたかがわかりづらいためだ。

図を描くテキストファイルがあるなら、それを履歴管理すれば良いという考え方もある。
筆頭に上がるのは GraphViz だろうか。
なんなのだろうね、このツールは。

私が初めて GraphViz に関わったのは Doxygen だろうか。 Doxygen には class図みたいなものや C言語の include グラフのようなものを出力する機能があるのだ。
call グラフや caller グラフも出力するし、なんだこれは、と衝撃を受けた記憶がある。

PlantUML もそうだ。
あれも PlantUML の書式でファイルを作っていけばシーケンス図やクラス図などが出力できるのだが、最終的には GraphViz を使っているのではなかったか。
なんなんだ、あれは!

 

GraphVizギャラリーがあった。

https://graphviz.org/gallery/

なんかもう、グラフってなんだろう?と思ってしまうくらいにいろいろな出力があるな。
ともかく、文字列で描画を指示できるのであれば、履歴管理しても多少は差分がわかりやすいだろう。


GraphViz はよいとしよう。
それ以外にないだろうか?
つまり、書式では指示しづらいような図だ。

+--------+
|        |
| hiro99 +---+
|        |   |   +------+
+--------+   +--->      |
                 |  ma  |
                 |      |
                  +--+---+
  +--------+         ^
  |        |         |
  | kuma99 +---------+
  |        |
  +--------+

このような図で十分な場合、私は asciiflow legacy を使っている。
"Legacy" が付かない方もあるのだが、うまく使えなかったので legacy の方にしている。

これはいわゆるアスキーアートのような形で図を描いている。
表示が固定幅フォントなどでできるなら、まあそこそこ履歴管理しても相性は悪くないのではないかな。