Viz.js – Web上でGraphvizをSVGでレンダリング
フローチャートなどの高度なグラフを描こうと思った時に使われるのがGraphvizです。テキストベースで記述していくだけでできるというのはやはり手軽です。しかしローカルソフトウェアをインストールしたり、セットアップしたりするのは面倒と感じる人も多いでしょう。 そこでさらに再利用性を高めてくれるのがViz.jsです。WebベースでGraphvizを使えるようにしてくれます。可能にするのはまたしてもEmscriptenなのですが、面白さを体感してください。 例として以下のようにGraphvizのDOT言語をそのままscriptタグに記述します。
<script type="text/vnd.graphviz" id="cluster">
  digraph G {
	subgraph cluster_0 {
	  style=filled;
	  color=lightgrey;
	  node [style=filled,color=white];
	  a0 -> a1 -> a2 -> a3;
	  label = "process #1";
	}
	subgraph cluster_1 {
	  node [style=filled];
	  b0 -> b1 -> b2 -> b3;
	  label = "process #2";
	  color=blue
	}
	start -> a0;
	start -> b0;
	a1 -> b3;
	b2 -> a3;
	a3 -> a0;
	a3 -> end;
	b3 -> end;
	start [shape=Mdiamond];
	end [shape=Msquare];
  }
</script>
Viz.jsで解釈することで次のように変換されます。
さらに他のサンプルを見てみましょう。
中間(?)のxdotファイルとして出力もできます。
Viz.jsが面白いと思えるのはCanvasタグへの出力ではなく、SVGであるということです。
SVGであればJavaScriptと絡めたり、一部のノードだけを色を変えたりすることも容易にできそうです。GraphvizとWebの親和性をさらに高めてくれそうなソフトウェアですね。
テキストベースであればノードの組み替えやフローの変更に伴うグラフの修正も容易に行えるようになるでしょう。グラフを利用する際にチェックしたいソフトウェアです。
Viz.jsはJavaScript製、Eclipse Public Licenseのオープンソース・ソフトウェアです。
Viz.js
mdaines/viz.js