Rails勉強会@東京第60回に参加してきました

Rails勉強会@東京第60回に参加してきました。学んだことをメモします。

性能プロファイラ

笹田研の学生さんによるリアルタイムプロファイラの紹介がありました。「リアルタイム」なのが特徴です。rdocを実行してそのプロファイラをざーっと画面に出してデモしていました。普段リアルタイムで監視画面をじーっと見るということは、なかなか少ないとは思いますが、テストの時や裏でずっと実行していて「しきい値」を設けてアラート出すとか、スナップショットを定期的に取ってグラフ化するなどの方がWebアプリを作る側としては実用的かもと感じました。しかし、私は普段はアプリのプロファイリングというもの行っていないので、RubyProf等を使って一度やってみようと思いました。

kaminari

a_matsudaさんによるkaminariについての直々のプレゼンです。とても貴重なプレゼンでした。kaminariの基本的な使い方、ソースコードを読みながらの仕組みの説明でした。kaminariはカスタマイズ性がとても高いなと感じました。will_paginatekaminariかRails3を使うときは悩みそうです。engineアプリというのを初めて知りました。kaminariはすでに海外のプロダクションで使われているということです。また、a_matsudaさんはkaminariはドキュメントを沢山書いたと言っていました。そして、ドキュメントを沢山書いたほうが使ってもらえる傾向があるので、使ってもらいたいならドキュメント書くと良いとも言っていました。

Model Test

  • test/unit
  • test/unit2
  • rspec
  • Shoulda

Model Testは相変わらず test/unitとrspecの2本柱ですね。今回はテストについての話が多かったと思いました。「Ruby遅い」「Rails遅い」は最近は「テストが遅いこと」と関連しているという話が印象的でした。

機能テスト

  • functional (Rails付属の単体コントローラテスト)
  • Cucumber

両方使うのではなく、どちらかを使うというのが印象的でした。test/unit と functional、rspec と cucumber という組み合わせに分かれていた感じです。

CI(継続的インテグレーション

BigTunaという存在を初めて知りました。BigTunaはRails3で作られていて、機能も豊富そうです。

テストカバレッジ

皆さんテストカバレッジについて良いツールを探しているような印象でした。単純なコード通過を計測するのではなく、例えば以下のような例についてはツールではカバーしきれない部分があるようです。

def hoge
  if fuga
    ・・・
  end

  if baz
   ・・・
  end
end

hogeメソッド内には2つのif文がある。単純なコードカバレッジであれば、fugaもbazもtrueのものを1つテストすれば100%のカバレッジになる。しかし、上記の例だと最大で下記の4パターンをテストする必要がある。

fuga baz
true true
true false
false true
false false

上記の場合、皆さんツールを使うのではなく「経験則」「勘」で「大事そうなパターンのみ」を行っている感じでした。このテストカバレッジについては、私も課題です。

テストの高速化

「テストが遅い」というのは皆さん共通の悩みのようでした。弊社でも並列テストしているのですが落ちるのですよね・・・。

懇親会

Rails勉強会の後、居酒屋で数人で懇親会を行いました。メンバーは@satococoa@mreinsch@kyanny@hamaknと私でした。それぞれの開発現場について聞けたり、悩みについて聞けたりして、使っているツールや、RailsRubyのバージョン、pivotaltrakerでのタスク管理について聞けたり、バージョン管理について聞けたり、などなど1つのテーブルでしたし、皆でざっくばらんに楽しく会話できました。Rails勉強会で1つのテーマについて皆で話すのも良いですが、沢山のテーマを短く気軽に、そしてジョークを言いながら、笑いながら話し合えるのは懇親会の良い点だなと思いました。少人数でもよいので懇親会は行いたいなと思いました。懇親会が出来てよかったです。有難う御座いました。

その他、Rails勉強会@東京のFacebookページの存在やQuoraというサイトに招待してもらったり、Tokyo Rubyist Meetup | Doorkeeperという存在を知ったりできました。