yard graphでクラス図を生成しちゃえ☆(ゝω・)vキャピ
yardは単なるドキュメンテーションライブラリではない!!
みなさん Yard はご存知ですか。ご存知ですよね。
RDocとか、Rubyでソースコードに書くドキュメンテーションツールでYARD(http://yardoc.org/)ってありますよね。
プロジェクトのルートでyard docってやるとrdocで実行するのと同じようにドキュメントが生成されるのですが、それだけで満足しては行けないんだよ。
yard helpって打つとサブコマンドがいろいろ出てくるんだよ。
% yard help Usage: yard <command> [options] Commands: config Views or edits current global configuration diff Returns the object diff of two gems or .yardoc files doc Generates documentation gems Builds YARD index for gems graph Graphs class diagram using Graphviz help Retrieves help for a command list Lists all constant and methods. Uses `yard doc --list` ri A tool to view documentation in the console like `ri` server Runs a local documentation server stats Prints documentation statistics on a set of files
異なるバージョンのgem同士を比較するdiffとかもスゴい面白いんだけれど、今回は graph サブコマンドについてだよ。
で、yard graphとは
百聞は一見にしかずだよね。今回は https://github.com/esminc/tapp をクラス図にして出力してみたよ。
こんな感じにしてくれるよ。(思ってたよりも)ちゃんとクラス図になるよ。
クラス図の作成方法
yard で行うのは Graphviz 用の dot ファイルを作成するまでなんだよ。だから、まずは Graphviz をインストールする必要があるよ。
Mac(確認に使ってるOSはOSX Lion)ではhomebrew で簡単にインストールできるよ。
brew install Graphviz
インストールが終わるとdotコマンドが使えるようになっているはずだよ。これを片手にyardで dot ファイルを作成してくよ。
今回は tapp を入手する*1ところから書いているけれど、ソースコードがあればなんでも大丈夫だよ。
% git clone https://github.com/esminc/tapp.git % cd tapp % yard doc # yard graph をするにはドキュメンテーション化する必要があるよ。正確には .yardoc が必要になるよ。 % yard graph --full -f tapp.dot # --full をつけると、メソッド名やプロパティまで出力してくれるようになるよ。 % dot -Tpng tapp.dot -o tapp.png # dot コマンドで画像化するよ
簡単だよね。
ちなみに
yard diff を使うとこんな感じだよ。
*1:ちょうど手軽なサイズだったのでtappにしたけど、特に意味はないよ