symfonyでgraphvizを使ってDBリレーション図を図式化する
以前よりGraphvizには興味があったのですが
symfony1.2ではスキーマ定義を簡単なコマンドでGraphvizの図式化ができるようです。
以前書いた記事にてGraphvizでaskeetのリレーション図を図式化を紹介しましたが、まさにそのまま私の望んでいた機能がsymfony1.2に組み込まれています。これは素敵。
私はEmacsを使っているので応用でEmacsと連動して使ってやってみようと思います。
schema.ymlから "〜.dot"ファイルを作る
graphvizが解釈できる"〜.dot"ファイルを作ります。
Emacsでもpng形式のファイルをつくることができます。詳細は後半で。
これでsymfonyプロジェクトディレクトリ以下に
$ symfony propel:graphviz
というファイルができます。
graph/propel.shema.dot
Graphvizのインストール
Graphvizを持っていない場合、
こちらからインストールしてください
Windows:
http://www.graphviz.org/Download_windows.php
macOSX:
http://www.pixelglow.com/graphviz/download/
Fedoraなどのディストリビューション:
パッケージをインストールします
$ sudo yum install graphviz
〜.dotファイルを画像に変換
このままだと"propel.schema.dot"はdot言語で書かれたままです。graphvizに解釈させて画像にします。
アプリケーションから開く場合、そのまま"propel.schema.dot"ファイルをアプリから開いても見れます。
画像にして保存もアプリからできます。
コマンドで実行する場合は、dotコマンドを使って "〜.dot" ファイルを画像形式に変換してやります。
-K はgraphvizがどんな構造にするかの指定してあげれます。
$ dot -Kdot -Tgif graph/propel.schema.dot -o graph/propel.schema.gif
普段は"dot"で階層構造になっていますが"neato"などを指定してあげると放射状になります。
-T は画像形式です
-o は生成するファイルの名前です
Emacsにgraphviz-dot-mode.elを入れる
以下のサイトから入手できます。
http://users.skynet.be/ppareit/projects/graphviz-dot-mode/graphviz-dot-mode.html
またはwgetコマンドで
macOSXでアプリケーションのEmacsを使っている場合は
$ wget http://users.skynet.be/ppareit/projects/graphviz-dot-mode/graphviz-dot-mode.el
$ sudo cp graphviz-dot-mode.el /usr/share/emacs/site-lisp
以下にこのgraphviz-dot-mode.elを置きます。
/Applications/Emacs.app/Contents/Resources/site-lisp/
次に、Emacsの設定ファイルに
などど設定してあげます
;;graphviz mode
(load "graphviz-dot-mode.el")
(add-hook 'graphviz-dot-mode-hook (lambda () (local-set-key [f5] "\C-x\C-s\C-cc\C-m\C-cp")))
あとはEmacsで"〜.dot"ファイルを開いて
C-c cでpngファイルの"〜.png"を作ります。そして
C-c pで画像をプレビューすることができます。
あまりに画像のサイズが大きいとEmacsでは見れないようですのでプレビューはGraphvizを使うことをお勧めします。