DOT言語

2015年8月24日月曜日

dot UML

クラス図などを書くときにはUMLのモデリングツールや、ソースコードからの自動生成ツールを使うことが多いと思うけど、DOT言語というのを使うとクラス図のようなグラフ図をテキストから生成できる。

Graphviz Documentation
http://www.graphviz.org/Documentation.php
DOTユーザーズガイド日本語訳
http://cbrc3.cbrc.jp/~tominaga/translations/index.html#dot

Doxygenでも図の生成にdotを使用している。
http://www.doxygen.jp/diagrams.html

例えば、以下のようなDOT言語のテキストをsample.dotという名前のファイルに保存して
digraph sample {
    node [ shape = box ];
    edge [ dir = back, arrowtail = onormal, arrowsize = 1.5 ];

    Collection [ label = "<<interface>>\nCollection" ];
    Set        [ label = "<<interface>>\nSet" ];
    SortedSet  [ label = "<<interface>>\nSortedSet" ];
    List       [ label = "<<interface>>\nList" ];
    Queue      [ label = "<<interface>>\nQueue" ];
    Map        [ label = "<<interface>>\nMap" ];
    SortedMap  [ label = "<<interface>>\nSortedMap" ];

    Collection -> Set -> SortedSet;
    Collection -> List;
    Collection -> Queue;
    Map -> SortedMap;

    { rank = same; Set; Map; }
}

dotコマンドに画像を生成させる。
この場合はGIF形式を生成しているけど、PNG,JPEG等、様々な形式に対応している。

$ dot -Tgif sample.dot -o sample.gif

すると以下のような画像が生成される。



ソースコード管理システムでのバージョン管理とも相性良さそうだし、ちょっとした図を書くときなんかに使えるんじゃないだろうか。