しゃのんあどべんとかれんだー 4日目 (銀の弾丸はあるのでしょうか? The Silver Searcher, The Platinum Searcher)

このエントリーをはてなブックマークに追加

この記事は Shanon Advent Calendar 2015 の 4日目の記事です。

というわけで、本日も私 munepom ( @__munepom__ ) がお送りします。
本日は早く寝ろと言われているため、どうしよう。。。30分で書けるネタが。。。あ、ありました。

私が Java 屋さんから Perl 屋さんへ転向 (?) して、2番目に驚いたことは、クラスやメソッドの検索がやりづらいことでした。
(1番目は、コード補完がされないことです。。。)
Java だと、 IDE がよしなにやってくれて、Ctrl + クリックで目的とするクラスやメソッドへジャンプすることが大抵可能なのですが、
Perl はなかなか自由度が高く、そのあたりはハードルが高そうです。

さて、どうしましょう?

grep コマンド使って全モジュール検索を行い、片っ端から当たっていくしかないかなー。
でも、grep で全検索は重いなー。Atom エディタの検索も重いなー。。。
と思っていたところ、Perl のプロである tsucchi センパイから、ag いいよ!と教えていただけました。

ag ???
元素記号でいうところの銀ですか。銀の弾丸ですか!それは使わねば!というわけで、
導入したらすっごく快適に Perl モジュール検索ができるようになりました。

そんな ag (The Silver Searcher) のご紹介です。

The Silver Searcher は、高速に grep を行ってくれる感じの代物でございます。

$ ag regex
と実行すれば、カレントディレクトリ以下で指定正規表現にマッチする文字列を持つファイル名と、該当行数と文字列を表示してくれます。
.agignore ファイルに無視したいファイル名を書くと、それらを全て無視してくれるので、便利です!
また、--ruby ロングオプション指定などにより、特定拡張子のファイルのみをターゲットとした検索も実行できます。
さらに、オプションも豊富ですので (-a 指定で、無視ファイルも検索、-u 指定で、隠しファイルと無視ファイルも検索、-Q 指定で、正規表現無効、などなど。) 何かと便利です。

ちょっと気になる!という方は、
GitHub リポジトリの Installing や Building from source 項目を参考に、インストールして試してみてください。

と、ここまで書いといてナンですが。。。
ag は、検索対象が UTF-8 で書かれていることが前提となっているようです。マルチバイト厄介ですね。
EUC-JP や Shift-JIS で保存されたファイル対策として、
Go 言語で書かれた pt というツールも気になっています。
プラチナ!豪華!(?) ですね。

これだけで全てを解決する銀の弾丸とはならないのでしょうが、
コツコツと Perl モジュールを検索して解析を進めるにあたり、キラリと光るツールであると思います!
製作者の方々に感謝です。

Enjoy! (・ω・)ノ

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...