RubyKaigi2009二日目!
投稿者 おおかゆか
昨日に引き続き、RubyKaigi2009に参加。
懲りずに英語のセッションを主体に出席。でもやっぱり何言ってるか1/3も聞き取れないので真っ先にプレゼン資料を読みつつ、雰囲気で何を言ってるか見当をつけながら聞く。
また、とりあえず片っ端からTsudaっておいたので、臨場感を求める方はそちらもどうぞ。
Sequel: SQL in Ruby
一発目はSequel。作者のJeremy Evansさんが来日しての発表。
Ruby用のORMのひとつでActiveRecordよりもSQL寄りな作りで、「person.filter(:name => 'abc').order(:age)」のようにメソッドチェーンでクエリーを組み立てて使う。
Modelなしでもつかえるし、ActiveRecordのようなModelも用意されているが、簡単な操作ならModelは使わないのがSequel流らしい。
さらにMaster/Slave機能やコネクションプーリング機能が標準装備。設計もコードもシンプルなため、メモリの占有量が最小でActiveRecordの1/6で済むという。(本当?)
メンテも熱心にやっているため、バグは最短2時間、最長でも6日以内には対応するとのこと。

Sinatra: The Framework Within
次は最近ブームが沸き起こりつつあるSinatra。発表者はAaron Quintさん。
Sinatraは便利さを追求するあまり肥大化したRailsの対極にあるマイクロフレームワークと呼ばれるもの。RESTfulにRubyでHTTPの 挙動を記述できて、かつそれが直感的でシンプルなため、最近日本でもSinatraを評価するRubyプログラマが増えつつある。
セッションが始まっていきなり「Sinatra is not a framework」と宣言。作者はフレームワークだと言い張るのを、Quintさんは納得できないらしい。
「Sinatra as a library. A DSL for defining routes. A nicer Rack」というのが彼の主張で、HTTPをしゃべるDSLというのがSinatraの本質とのこと。
フレームワークを本棚としたら、Sinatraはその棚板であって本棚そのものではないという喩えでわかりやすく説明。まあそうだよなと私も納得。
あとはSinatraはシンプルですぐ書けるので、さっきのSequelの上にかぶせてちょこちょこっとコードを書けば、DBのRESTクライアントができるとかそんな話。
そして会場のRuby Developerたちに対して、「require 'sinatra'」しようよと呼びかけていた。

The Innate beauty of Ramaze
本当は一番最初にやる予定だったRamazeのセッションだったが、諸事情により午前中最後の発表に。
発表者はTadahiko Ueharaさんと、Ramaze作者のmanveruことMichael Fellingerさん。
Ramazeも軽量フレームワークでシンプルに記述ができて、さらにmerbのようにテンプレートエンジンやORMをフレキシブルに変更可能。私も少しコードを読んだことがあるが、非常にすっきり整理されていたのが印象的だった。
発表はUeharaさんが前説を務める形で始まった。
Ueharaさんいわく、manveruさんは日本在住で奥さんも日本人なので、Ramazeは国産フレームワークのようなもの。日本でRamazeを盛り上げていきましょうとのこと。
menveruさんは英語のスピーカーにはめずらしく優しげな語り口でRamazeの紹介を行っていた。
そのRamazeの開発モットーは、「極力シンプルに」「必要なものだけ」「MINSWAN(Mats is nice, so we are nice)」「モジュール型デザイン」「最小限の依存関係」「オープンな開発 完全なテスト駆動開発」の6つ。
Sinatra同様、ルーティングをコントローラ内部に書く形式で、四則演算をRESTfulに実装したWebアプリのデモを行って、会場からも好評だった様子。
分散並列フレームワークfairyと分散オブジェクトシステムDeepConnect
なんか去年も同じようなタイトルだった気が。
しかしα版はすでに完成しており、社内で検証中という衝撃の事実?が発表。ただmixiのTokyo Cabinet & Tokyo Tyrantに先を越されて、意識してないはずはないと思うのだが、そのへん楽天的にはどうなんでしょうみたいなことは怖くて聞けなかったw
Tokyo TyrantにもRubyのインターフェースがあるし、最近ではMongoDBもRubyと簡単に連携できるようだし、よほど差別化していかないと埋もれてしまうのではないかと余計な心配をしてしまった。
あとロゴが本邦初公開(たぶん)。ルビーカラーの妖精で、プロのデザイナーに頼んでお金かかってそうなロゴだったのが印象的。

Railsサイト安定運用の心構え
リクルートメディアテクノロジーラボの大井宏友さんのセッション。
リクルートではATNDを始めとする8つのサービスをRailsで開発していて、PVも併せて1ヶ月に6,000万程度というそれなりの規模で運用しているため、そのノウハウを共有することを意図したのが今回の発表とのこと。
サーバは全てXenによる仮想環境で構築され、8コアCPU、16GBメモリの物理的ハードに約13のXen仮想マシンが載っているのだそう。
さらに仮想マシンのメモリが1GBの場合は10インスタンス、2GBの場合は24インスタンスのMongrelプロセスを立ち上げてクラスタリングを行っている。
ただMongrelは不安定なので、cronで定期的に再起動させているとかw
また最近はサーバをPassengerに移行しつつあるという。

JRuby Update 2009
JRubyの作者Thomas Eneboさん、Nick Siegerさんのセッション。
ここ半年の私はJRubyでごはんを食べているので、個人的にこのセッションはどうしても聞いておきたかったもの。
ユーモラスな2人が並んで発表する姿は、「I'm a Mac, I'm a PC」を彷彿とさせる。今にも「Hi, I'm a JRuby」「I'm a Matz' Ruby」とか始めるんじゃないかとハラハラしたw
「なぜJRubyを使うのか?」という自らの問いに対して、Javaはどこにでもあり高度なGCやHotSpot等による最適化の恩恵を受けられるからと説明していく。
jirbからswingを起動して、ほらこんなに簡単にJavaの資産(Swing)が使えますよというデモを行ったり。
ただしJRubyにも欠点はあり、Cネイティブの拡張が使えなかったり、継続が使えなかったりする。Cネイティブの拡張はできるだけJRuby用に移植しているという話だが、個人的にはrmagick4j(JRuby用のRMagick)の機能が貧弱で使えなかった経験があるので、そこはあやしいよと心の中でツッコミ。
質疑応答も盛んに行われ、「SunがOracleに買収されたけどJRuby大丈夫なの?」→「一介の技術者にはそんなのわからない」とか、「invokedynamicでどれだけ速くなるの?」→「いちおうサポートはしてみたもののよくわかんないや」とか、「スピードが速いのはわかったけど、メモリの節約は考えてないの?」→「悪かった反省してる。だから今回のリリースでは15%のダイエットに成功したよ」というようなやりとりがあった。

途中割愛したが、Matzの基調講演やLTもあって二日目は初日以上に盛り上がった。
明日はいよいよ最終日。もちろん参加の予定で、聞いた内容もブログに上げる予定。


















