はじめに
慣れていない言語で書かれたプロジェクトや、途中から参加した巨大プロジェクト。
ソフトウェアの構造を短期間でおおまかに把握したい時ってありますよね。
そんな時にrexdepがオススメです。
rexdepとは
Go言語で書かれた依存関係を抽出するためのツールです。
依存関係の形式(例:import "xxx")を正規表現で与え、
対象となるファイルを渡すと、依存関係の抽出を行った結果を返してくれます。
実際に使ってみた
iOSアプリの継続的デリバリーに使われる、rubyで書かれたライブラリfastlaneを読んでいたので、
その一部に対して使ってみました。
まず、cloneしてきて
git clone git@github.com:fastlane/fastlane.git
今回、対象とする場所へ移動
cd fastlane/gym/lib
ここで、rexdepを実行
rexdep --pattern 'require (\S+)' --format dot ./**/*.rb | dot -Tpng -o gym.png
すると、以下のように依存関係が図示されます。
requireに参照先までのpathが含まれているため、全て1階層で表示されてしまっていますが、
最初の取っ掛かりを得るのであれば、十分ではないでしょうか。
まとめ
完璧でないとはいえ、プロジェクト内の依存関係をおおまかに抽出して、最初の一歩を踏み出すには
十分すぎるほどの機能があると言えるのではないでしょうか。
READMEは英語で書いてありますが、作者の方のブログに、日本語で詳しい内容が書いてありますので、
そちらも参照してみてください。
あと、どなたかrubyの依存関係を抽出する良い方法があれば教えて下さい。。。