ジャンル:グラフ作成ソフト 作者:John Ellson氏,Emden Gansner氏ら
ライセンス:Common Public License URL:http://www.graphviz.org/

Graphvizは,テキスト形式で記述したグラフ表現をさまざまな形式の画像に変換するソフトである。サイズの大きなツリー構造やノード数の多いネットワーク構造のデータを自動的に可視化するときに有用である。

 Graphvizは,組織図やソフトウエア・コンポーネントの関係などを示したグラフ図形の作成に向いたソフトウエアだ(写真1)。

写真1●Graphvizの出力例
写真1●Graphvizの出力例
[画像のクリックで拡大表示]

 米Microsoft社のPowerPointやVisio,OpenOffice.orgに含まれるImpressなどを使って対話的にグラフを作成する機会は少なくないだろう。部品から長円や四角を選んで矢印でつなぎ,部品の内側に文字を入れていけばグラフが描ける。Graphvizのアプローチは,これらのソフトとは全く異なる。部品同士の関係をテキスト・ファイルに書き下ろし,コマンドを使って画像ファイルを生成する。写真1のように,多くの部品間の関係を可視化したいときに向くソフトだ。

Graphvizをインストールする

 Graphvizは,Linux版のほか,Mac OS X版,Windows版などが用意されている*1。主要なLinuxディストリビューション向けには,パッケージが用意されている。例えば,Fedora Core 6では,次のようにして簡単にインストールできる。


$ su
# yum install graphviz

グラフを描く

 Graphvizに読み込ませるテキスト・ファイルは,DOT言語で記述する。言語とはいってもプログラミング言語のような複雑なものではなく,設定ファイルと似ている。

 グラフの出力は,GIF,PNG,PS,SVGなど20種類以上の形式を指定可能だ。例えば,図1のテキスト・ファイル(zu01.dot)を記述して保存した後,次のコマンドを実行すると画像ファイル写真2が生成される。

図1●DOT言語のソース・コード例
図1●DOT言語のソース・コード例
写真2のグラフを描くためのコード。ファイル名はzu01.dot。

写真2●図1の出力結果
写真2●図1の出力結果


$ dot -Tpng zu01.dot -o zu01.png

 図1の{}内には部品(ノード)の関係を記す。互いにつながっているノードとノードを「->で結べばよい*2。ノード間の関係が書かれた何らかのテキスト・ファイルが手元にあれば,「A ->B;」という形式にsedコマンドやエディタなどで変換することで,DOT言語用に変換できる。

 図1冒頭の「digraph」とは有向グラフ,つまり向きのある矢印でノード間が結ばれていることを示す*3

 コマンドラインでは,「-T」オプションによって出力する画像形式を選択し,次に,DOTファイルを指定している。最後に「-o」オプションとともに出力する画像ファイル名を記している。