<p>開発部の海老原です。<br />
ソースコード読むのはホント楽しいですね! ということで技術ネタです。</p>
<p>「<a href="https://www.tejimaya.com/archives/1362/">OpenPNE 開発者流のソースコードの追い方 #1 - ack 編</a>」を書かせていただいたばかりですが、<br />
なぜか開発部プロマネの國忠さんが ack の導入ができないということなので、<br />
他のツールについても触れてみようと思います。</p>
<p>今回紹介するのは、 <a href="http://rak.rubyforge.org/">Rak</a> というツールです。 ack は Perl ですが、こちらは Ruby で書かれています。</p>
<blockquote><p>It is based on the Perl tool ack by Andy Lester.</p></blockquote>
<p>とあるように、 ack を基にして作られたツールだけあって、<br />
現時点ではほとんど ack と同じように使うことができます。</p>
<p>「ack をどうしても導入できない!」「Perl 製じゃなくて Ruby 製がいい!」という方は<br />
一度試してみてはどうでしょうか。</p>
<h3>■導入方法</h3>
<p>Ruby で書かれているだけあって、 Rak は RubyGems で提供されています。<br />
RubyGems で提供されているパッケージを入手するには、 gem コマンドを実行する必要があります。<br />
パッケージ管理システムなどを使って gem をインストールしてください。</p>
<p>Debian の場合だと以下のようにして gem を取得可能です。</p>
<blockquote><p><code># apt-get install rubygems</code></p></blockquote>
<p>gem の準備が整ったら、以下のようなコマンドで Rak を入手できます。</p>
<blockquote><p><code># gem install rak</code></p></blockquote>
<p>では、ちょっと試してみましょう。</p>
<blockquote><p><code>$ rak "foo("</code></p></blockquote>
<p></p>
<p>ack よりもちょっと遅い印象がありますが、機能としては遜色ありません。すごい!</p>
<h3>■実行例</h3>
<p><a href="https://www.tejimaya.com/archives/1362/">前回</a>紹介した ack の実行例と同じことを Rak にもやってもらうことにします。</p>
<h4>前後の行を表示する</h4>
<p>ack では「前後を含めた10行を表示」でしたが、 Rak では「前後5行を含めて表示」となります。</p>
<blockquote><p><code>$ rak -C5 "foo("</code></p></blockquote>
<p></p>
<h4>検索パターンに正規表現を使う</h4>
<p>これはまったく ack と同じですね。</p>
<blockquote><p><code>$ rak "(class|interface)s+opS+" lib</code></p></blockquote>
<p></p>
<h4>「条件にマッチする」ファイルの一覧を表示</h4>
<p>これも同じ。</p>
<blockquote><p><code>$ rak -l " * This file is part of the OpenPNE package" lib</code></p></blockquote>
<p></p>
<h3>■ ack と Rak 、どちらを使えばいいの?</h3>
<p>ということで、基本的にはどちらを使っても同じですが、<br />
僕は ack が完全に肌になじんでしまっているので、 Rak の常用はしないかもしれないです<br />
(気分転換に……ということはあるかも)。<br />
# ack の場合は .ackrc を書くことで初期設定をおこなうことができますが、<br />
Rak にはそういったものがあるんでしょうか? それだったら乗り換えてもいいですね。</p>
<p>ともあれ、 ack や Rak のようなツールを駆使して今日も一日気持ちよくコードとたわむれましょう。<br />
それでは、よいコードリーディングライフを!</p>