Seasons.NET

ちょっとした技術ブログです

コードスニペットを検索するのにとても便利な「rak」のご紹介

プログラム組んでいると、コードスニペットをよく取り出して、
利用することが自分みたいなへたれには、多々あります。


その場合、githubのgistを使うという手もあるのですが、


「あれ?、こういうコード書くときにどうするんだっけ?」
キーワードは、わかるけどコードスニペットの場所がわからない。。。


そんなことよくあると思います。
オンラインにつながっていれば、
さくっとGoogle検索すれば、すぐに答えにたどり着けるでしょう。


ですが、オンラインが混雑している時やオフラインの時は、
これが使えません。


なのでなるべくさくっとSpotlight並に引けるものがほしいわけです。
んでまとめますと、、、

  1. オフラインで使える
  2. 調べる環境構築が面倒でない事(一度構築する必要があるが次回は楽)
  3. キーワードで検索できること
  4. 軽い事(Spotlight並の快適さがほしい)


となります。
でこれを満たすものとして、


Terminal.app + ruby + rak


をご紹介したいと思います。



まずは、環境構築

  • Terminal.app
    • 最初から入ってるので特に何もしない
  • ruby
    • rakを簡単に入れるためにMacPortsを利用します。
    • MacPortsここからダウンロードしてインストールします。
    • Terminal.appを起動し、%sudo port -d selfupdateを実行
    • %sudo port -d syncを実行
    • %sudo port install rubyを実行
  • rak
    • %sudo port install rb-rubygemsをまず入れておく
    • %sudo gem install rakを実行


さて、これでrakが使える環境が整いました。

今回、以下のようなファイルを作成します。
iPhone_Code_Tips01.txt

	/* ================================================== */
        // キャッシュされる画像読み込み
	/* ================================================== */
	UIImage* image = [UIImage imageNamed:@"hogehoge.png"];
	
	/* ================================================== */
	// 文字列を連結
	/* ================================================== */
	NSString* s = @"hogehoge";
	s = [s stringByAppendingString:@"fizz"];


これをホームフォルダや適当なフォルダに保存して、
そこを作業ディレクトリとして、Terminal.appを開きます。
そして、以下のコマンドを実行

rak UIImage **/*.txt

サブディレクトリを含む*.txtのテキストに対して、UIImageのキーワードで検索


結果がこれ。
f:id:Seasons:20090616033653p:image



ちょとコードの詳細がわかりづらいので、前後3行を表示してみます。

rak UIImage -C 3 **/*.txt

f:id:Seasons:20090616033806p:image


もちろんキーワードは、日本語でもいけます。
標準のTerminalがデフォルトで文字コードUTF8なので、
検索をするファイルもUTF8で保存しておきましょう。

とまぁ、こんな感じで*.txtでTipsをため込んでいけば、
ちょっとしたTipsも楽に検索できますね。


Tipsファイルのあるフォルダへの移動は、
zshなら.zshrcに

alias iphone-ref='cd "/Users/keisuke/Documents/Reference/iphone-ref"'

みたいなコマンドを用意しておくとよいのではないでしょうか?