忍者ブログ

フェレット倶楽部の備忘録

3歩あるいたら物を忘れてしまうぐらい物忘れの激しい管理人が触れた技術をメモしておくブログ

Graphvizを使ってみた

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

Graphvizを使ってみた

Graphvizとは?

GraphvizとはDOT言語というスクリプトでグラフを描くことができるツールです。
サーバー構成図やクラス図、DBテーブルの関連図が作成できるようです。
絵が苦手てパワポも環境によって入っていたりいなかったりする私としては触ってみても損は無さそうだということでチャレンジしてみました。

環境

MacBookAir OS X Yosemite 10.10.5 で実施しています。

インストール

ターミナルから以下のコマンドでインストール出来ます。
$ brew install graphviz
==> Installing dependencies for graphviz: libpng
==> Installing graphviz dependency: libpng
==> Downloading https://homebrew.bintray.com/bottles/libpng-1.6.21.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libpng-1.6.21.yosemite.bottle.tar.gz
  /usr/local/Cellar/libpng/1.6.21: 17 files, 1.2M
==> Installing graphviz
==> Downloading https://homebrew.bintray.com/bottles/graphviz-2.38.0.yosemite.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring graphviz-2.38.0.yosemite.bottle.1.tar.gz
  /usr/local/Cellar/graphviz/2.38.0: 469 files, 67M 

まずは簡単な図を描いてみる

$ cat samples/sample1.dot
digraph sample {
  alpha -> beta;
  alpha -> gamma;
  beta -> delta;

dotコマンドで実行

$ dot -Tpng samples/sample1.dot -o sample1.png

出来た画像は以下のとおり

使えるレイアウトや出力形式は-vオプションで確認できる

$ dot -v
dot - graphviz version 2.38.0 (20140413.2041)
libdir = "/usr/local/Cellar/graphviz/2.38.0/lib/graphviz"
Activated plugin library: libgvplugin_dot_layout.6.dylib
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.6.dylib
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
    /usr/local/Cellar/graphviz/2.38.0/lib/graphviz/config6
        was successfully loaded.
    render    :  dot fig map pic pov ps quartz svg tk vml xdot
    layout    :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi
    textlayout    :  textlayout
    device    :  bmp canon cgimage cmap cmapx cmapx_np dot eps exr fig gif gv icns ico imap imap_np ismap jp2 jpe jpeg jpg pct pdf pic pict plain plain-ext png pov ps ps2 psd sgi svg svgz tga tif tiff tk vml vmlz xdot xdot1.2 xdot1.4
    loadimage    :  (lib) bmp eps gif jpe jpeg jpg pdf png ps svg 

私はこちらのチュートリアルで大体の使い方を覚えました

Graphviz チュートリアル

ノードに画像を使う方法

チュートリアルを一通り試したところでサーバー構成図が描きたくなり、
フリー画像素材でサーバーっぽい画像を拾ってきました。
その画像ファイルを置いておき、
ノードの定義時、labelにHTMLを記述する。 
server [label=<<table border="0"><tr><td><img src="hoge.png"/></td></tr><tr><td>server</td></tr></table>>];
これを出力すると画像として表示される。

私の思ったGraphvizのメリットデメリット

メリット

  • テキストファイルなのでgitで差分管理出来る
  • 修正がテキストなので、絵的に割り込ませたり枠の大きさを変える必要が無く早い
  • レイアウト変更は手描きに比べるとコマンド一発なので早い
  • pythonでも生成できる

デメリット

  • 矢印のコネクト位置を何ピクセルずらす等の微妙なレイアウト修正は手描きに劣る
  • 吹き出しのメモ書き的なものは入れられない(画像+配置で頑張れば何とかなるかも)
PR

コメント

ただいまコメントを受けつけておりません。

QRコード

P R