第4回?第5回?。初回は0回だから今回は5回目かな。今回のyokohama.rbは@jugyoさんの発表。
特に決まったテーマでお話されるということではなく、いくつかのテーマを挙げて、その場で話を組み立てていくというスタイル。あとの新年会でも話しに上がったけど、このスタイルはとってもスキルが必要とされる。それをうま〜くこなされていた@jugyoさん、すげぇ。
Rubyすげぇ話。
各自思い思いのことを出して、その例を@jugyoさんがコーディングされるスタイルで軽くお話。irbとかブロックとか、演算子の定義とか、オープンクラスとか。ちょっぴりC++を触った経験から言うと、C++では結構苦労して実装したような思いがあることが、Rubyだとお手軽にできるってイメージ。
また、Module#attr_accessorでJavaでいうsetter/getterを書かなくていいということもすごいところ(Ruby FAQにも書かれていた。http://www.ruby-lang.org/ja/man/html/FAQ_A5E1A5BDA5C3A5C9.html)。しかもそれが言語に取り込まれているものではなく、Moduleで実装されているというところがすごいところ。
Moduleによる実装の共有が話題になったんだけど、正直良く分からなかった^^;。「初めてのRuby」の8.5章に詳細が記されているからあとで復習しようっと。
gemの作成ツール
gemの作成ツールについて。jeweler(https://github.com/technicalpickles/jeweler)が簡単でおすすめとのこと。gemの作成ツールではhoe(http://seattlerb.rubyforge.org/hoe/)が有名なんだけど、hoeはhoeで大変だよねぇという声も上がる。
おすすめツール
主に@jugyoさんが作成されたツールのご紹介。
- Growel通知ツールであるg(https://github.com/jugyo/g)。
- ソースコード内にir bと書くことでirbを起動することができるir_b(https://github.com/jugyo/ir_b)。
- クリップボードにデータを流すことが出来るtoclip(h[ttps://github.com/jugyo/toclip:title=ttps://github.com/jugyo/toclip])。
- ファイルが変更された場合、処理を実行させることができるifchange(https://github.com/jugyo/ifchanged)。
デバッグにについて。上のgとかir_bとかはお手軽なんだけど、ちゃんとデバッグしたい時にはruby-debugを使われるとのこと。「どっかにいい記事があったので、それを見てください」っていわれたんだけど、見つからない・・・orz。
TDDとBDD。
RSpecとかTestUnitとか。RSpecはるびまの記事(http://jp.rubyist.net/magazine/?0021-Rspec)を参考にするといいかと。TestUnit を使ってテストを書く時はshoulda(https://github.com/thoughtbot/shoulda)を併用すると便利になるとのこと。
解説記事を探していたら「RSpecよりShoulda、fixturesよりヘルパーとMocha」という記事を見つけた(http://d.hatena.ne.jp/irohiroki/20071024/shoulda)。
RVM
RVM(http://rvm.beginrescueend.com/)とはRubyのバージョンマネージメントシステム。複数のバージョンを切り替えて使うことができる。日本語の記事がここ(http://gihyo.jp/dev/serial/01/ruby/0039)にあるので、それを参考に。UNIX処理系では、ファイルの先頭にRubyのパスを/usr/bin/rubyって書くことが多いんだけど、/usr/bin/env rubyと書いたほうが動的に切り替えられてよい。
WindowsではRVM使えないので、代わりにpik(https://github.com/vertiginous/pik)を使うと幸せになれるとのこと。
まとめ
@elranaがtogetterで関連ツイートをまとめてくれました(http://togetter.com/li/89660)。