Graphviz とは何か

PlantUML の前調査として Graphviz に関して再調査する。

概要

オープンソースのグラフ描画ソフトウェア。 グラフは DOT と呼ばれるテキスト形式の言語で記述する。 グラフは様々の形式で出力できる。(画像, SVG, PDF など)

DOT ファイルの拡張子には gv を用いる。(※1) ユーザはどういったノードを置くか、どこにエッジを繋ぐかと言ったのみをファイルに記述し、位置や角度と言った配置に関する値は、ライブラリ側がグラフ生成時の自動で決定する。 と言っても、グラフ記述には十分な自由度が用意されていて、矢印ひとつにしても多くのバリエーションの中から適したものを選択できる。

  • ※1: 古くは dot という拡張子が使われていたが、Microsoft Word に取られてしまったため、gv に移行したとのこと。

インストール方法

公式サイトのダウンロードページを参考のこと。 C で書かれているので、ソースインストールならビルドが必要。 Mac なら brew install graphviz で OK。

実行例

例えば、次のような gv ファイルがあるとする。

digraph G {
  main -> parse -> execute;
  main -> init;
  main -> cleanup;
  execute -> make_string;
  execute -> printf
  init -> make_string;
  main -> printf;
  execute -> compare;
  }

dot コマンドを利用して、画像を生成する。

$ dot -Tjpeg graph1.gv -o graph1.jpg

f:id:minagoro0522:20170715155013j:plain

所感

記述した通りのグラフが、画像としてサクッと出力できて驚いた。 もちろん Hello World レベルのサンプルなのだが、 ネイティブ言語で書かれた十分枯れたライブラリという点で、 パフォーマンス面での危惧は必要ないだろう。

印象としては、コマンドが機能ごとに細かく分かれていて圧倒される。 今回は、PlantUML の前調査としてなので、あえて踏み込まないことにするが、どういった体系になっているかなどまたの機会に掘り下げてみたい。

参考