テキストから図を作成 - Graphviz
皆さんは、ちょっとした図が必要になったとき、どうされてますか?
エクセルを使って作成したり、文字を駆使してテキストで作成したりでしょうか。ただ、エクセルだとちょっと大仰だったり、テキストだとちょっと面倒だったりといった場合もあるかと思います。
今回はそんな時に便利な Graphviz をご紹介します。
Graphviz - Graph Visualization Softwareは、AT&T研究所が開発したフリーソフトウェアで、DOT言語というグラフ記述言語で書かれたテキストファイルから図を出力することができます。
それでは、早速インストールして使ってみましょう。
Windowsの場合は、
http://www.graphviz.org/Download_windows.php
からダウンロードしてインストールします。
ただ、私の環境ではmsi版は動作しませんでしたので、exe版のほうをインストールしました。
Linuxの場合は、
http://www.graphviz.org/Download_linux.php
からダウンロードしてインストールします。
なお、お使いのディストリビューションがFedoraであれば、
Debianであれば、
で簡単にインストールできます。
では、次のような画面遷移図を作成する場合を例に進めていきます。
まずは下記の内容のファイルを作成します。
sample1.dot
では、図に変換してみましょう。コマンドラインから次のように実行します。
ここではpng形式で出力していますが、jpegやsvgなど、他にもいろいろな形式で出力することができます。
さて、出力されたpngファイルを見てみると、次のような感じになると思います。

なお、sample1は下記のように書くこともできます。
次に、formとconfirmの矢印を両向きにします。
sample2.dot

最後に、枠を四角にして、日本語の名称をつけます。日本語を使う場合は、日本語が表示できるフォントを指定し、dotファイルの文字コードをUTF-8で保存する必要があります。
sample3.dot

完成!!
蛇足ですが、ステートチャート図っぽくするとこんな感じでしょうか。
sample4.dot

さすがにこれはやりすぎですが、例えばsample3へ会員情報一覧画面を追加したいといった場合も、ちょっと修正するだけで簡単に追加できます。
sample5.dot

どうでしょうか。ちょっと繋ぎ先を変更したいといった場合も簡単に修正できますし、もとはテキストファイルですので、Subversionなどのバージョン管理システムで変更箇所の履歴を追うことも簡単です。
Wikiとの親和性も高いと思われますので、各種Wiki用のプラグインもあります。
・MediaWiki用エクステンション Extension:GraphViz
・Trac用プラグイン Graphviz Plugin
・PukiWiki用プラグイン graphviz.inc.php
また、PHPからGraphvizを扱うことが出来る PEAR::Image_GraphViz というPEARパッケージもありますので、PHPを使って大量のデータを可視化することもできます。
使いこなせばとても強力なツールになると思いますので、皆さんもぜひ使ってみてはいかがでしょうか。
エクセルを使って作成したり、文字を駆使してテキストで作成したりでしょうか。ただ、エクセルだとちょっと大仰だったり、テキストだとちょっと面倒だったりといった場合もあるかと思います。
今回はそんな時に便利な Graphviz をご紹介します。
Graphviz - Graph Visualization Softwareは、AT&T研究所が開発したフリーソフトウェアで、DOT言語というグラフ記述言語で書かれたテキストファイルから図を出力することができます。
それでは、早速インストールして使ってみましょう。
Windowsの場合は、
http://www.graphviz.org/Download_windows.php
からダウンロードしてインストールします。
ただ、私の環境ではmsi版は動作しませんでしたので、exe版のほうをインストールしました。
Linuxの場合は、
http://www.graphviz.org/Download_linux.php
からダウンロードしてインストールします。
なお、お使いのディストリビューションがFedoraであれば、
- #
yum install graphviz
Debianであれば、
- #
apt-get install graphviz
で簡単にインストールできます。
では、次のような画面遷移図を作成する場合を例に進めていきます。
- +----------------------+
- |
会員情報入力画面 | - +----------------------+
↑↓ - +----------------------+
- |
会員情報入力確認画面 | - +----------------------+
↓ - +----------------------+
- |
会員情報入力完了画面 | - +----------------------+
まずは下記の内容のファイルを作成します。
sample1.dot
- digraph
sample1 { form -> confirm; confirm -> finish; - }
では、図に変換してみましょう。コマンドラインから次のように実行します。
- $
dot -Tpng -o sample1.png sample1.dot
ここではpng形式で出力していますが、jpegやsvgなど、他にもいろいろな形式で出力することができます。
さて、出力されたpngファイルを見てみると、次のような感じになると思います。
なお、sample1は下記のように書くこともできます。
- digraph
sample1 { form -> confirm -> finish; - }
次に、formとconfirmの矢印を両向きにします。
sample2.dot
- digraph
sample2 { form -> confirm [ dir = both ]; confirm -> finish; - }
最後に、枠を四角にして、日本語の名称をつけます。日本語を使う場合は、日本語が表示できるフォントを指定し、dotファイルの文字コードをUTF-8で保存する必要があります。
sample3.dot
- digraph
sample3 { node [ fontname = "meiryo" shape = box ]; form [ label = "会員情報入力画面" ]; confirm [ label = "会員情報入力確認画面" ]; finish [ label = "会員情報入力完了画面" ]; form -> confirm [ dir = both ]; confirm -> finish; - }
完成!!
蛇足ですが、ステートチャート図っぽくするとこんな感じでしょうか。
sample4.dot
- digraph
sample4 { graph []; node [ fontname = "meiryo" shape = record style = rounded ]; edge [ arrowhead = vee ]; first [ label = "" height = 0.2 shape = circle style = filled fillcolor = black ]; form [ label = "{会員情報入力画面|}" ]; confirm [ label = "{会員情報入力確認画面|}" ]; finish [ label = "{会員情報入力完了画面|}" ]; last [ label = "" height = 0.2 shape = doublecircle style = filled fillcolor = black ]; first -> form; form -> confirm [ arrowtail = vee ]; confirm -> finish -> last; - }
さすがにこれはやりすぎですが、例えばsample3へ会員情報一覧画面を追加したいといった場合も、ちょっと修正するだけで簡単に追加できます。
sample5.dot
- digraph
sample5 { node [ fontname = "meiryo" shape = box ]; list [ label = "会員情報一覧画面" ]; form [ label = "会員情報入力画面" ]; confirm [ label = "会員情報入力確認画面" ]; finish [ label = "会員情報入力完了画面" ]; list -> form -> confirm [ dir = both ]; confirm -> finish -> list; - }
どうでしょうか。ちょっと繋ぎ先を変更したいといった場合も簡単に修正できますし、もとはテキストファイルですので、Subversionなどのバージョン管理システムで変更箇所の履歴を追うことも簡単です。
Wikiとの親和性も高いと思われますので、各種Wiki用のプラグインもあります。
・MediaWiki用エクステンション Extension:GraphViz
・Trac用プラグイン Graphviz Plugin
・PukiWiki用プラグイン graphviz.inc.php
また、PHPからGraphvizを扱うことが出来る PEAR::Image_GraphViz というPEARパッケージもありますので、PHPを使って大量のデータを可視化することもできます。
使いこなせばとても強力なツールになると思いますので、皆さんもぜひ使ってみてはいかがでしょうか。
コメント
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



http://www.mcternan.me.uk/mscgen/
早速使ってみたところ、記法も使い方もGraphviz風で、なかなか素敵なツールですね。
Wikiを使ってみんなでシーケンス図を書く場合などはすごい良さそうです。