Second Annual Silicon Valley Ruby Conference
Second Annual Silicon Valley Ruby Conference に参加した。2日間、朝から夕方までほぼノンストップでプレゼンを聞くというマラソンイベントで、かなり消耗した。参加者は 200 - 300 人で、この手のイベントとしては盛況だったのではないか。
以下は、いくつか面白かった点。
Ruby on Rails が盛り上がる
13 のプレゼンのうち 10 が、直接間接的に Rails についてのものだった。Ruby が US でポピュラーになった経緯を考えるとこれは驚くことではない。
プレゼンの中でも、Blain Cook による、商用ウェブサイトに Rails を採用した SNS サイト (http://twitter.com/) の技術的な発表(というか、苦労話)が聴衆の注目を浴びていた。
8台の Sun 上で 160 の Rails プロセスを走らせ、600 request/sec のリクエストを処理しているそうだ。Rails の本当のスケーラビリティについては、なかなか具体的な数字が見つからないので、これは参考になった。
驚いたのは、開発を初めて1年余りのこのサイト、今年の初めに開発陣が総入れ替えになったらしい(と言っても、2人抜けて3人入っただけだが)。「RoRでなければ、これだけ短期間に新開発陣が立ち上がることはできなかった」とは Blain Cook の弁。確かに、これが Java や PHP を使ったウェブアプリだったらどうなったか。
アンチ Ruby on Rails もある
Ruby on Rails 万歳!で終始するかと思われたコンファレンスだったが、意外にも Ruby on Rails に真っ向から(?) 対抗するウェブフレームワーク "Merb" の発表があった。開発者の Ezra Zygmuntowicz の発表だったが、彼曰く、
- Rails はスレッドセーフではないので、一つのプロセスが一度に一つのリクエストしか処理できないから遅い。
- 新しい Rails のリリースごとに、パフォーマンスが 10-20% ずつ遅くなっている。
- Rails コミュニティは「コードが成熟しないうちの最適化は行わない」と言っているが、もう成熟してるんじゃないの?
- Rails は互換性に縛られて、身動きが取れなくなりつつある。
ということで、自ら軽量フレームワークを作ることにしたそうだ。実際に、Rails を使って Hello World を出力する場合と、Mongrel の request handler で直接 Hello World を出力する場合のパフォーマンス比較デモがあったが、後者の方が10倍近く速かった。
「本当は Rails が遅いだけなのに、Ruby が遅いという認識が広がっているのは残念だ。」という発表者の発言を聞いて、何となく嬉しくなってしまったのはなぜだろう?
ともかく、Ruby ベースのフレームワークの選択肢ができるのは、使う側としてはありがたいことだ。
VM
VM については、JRuby と rubinius の発表があった。
発表者の によれば JRuby のパフォーマンスは、コンパイル後なら ruby 1.8.5 よりも速いらしい。ruby 1.9 との比較はなかったが、どっちが速いのだろう?
Ruby から Java Swing を使ってダイアログを表示するデモがあった。Swing のクラスをまるで普通の Ruby のクラスのように使っている。こういうことができるのは、ちょっと面白そうかもしれない。
rubinius は「Ruby で書けるところは C で書かない」をマントラとする Ruby インタープリタ実装プロジェクト。パフォーマンスはどうするんだろうと真っ先に思ったが、Evan Phoenix の答えは「パフォーマンスの低下は VM の改善で補う」だった。かなり野心的だ。
VM のインストラクションセットは YARV と違うのかと質問したら、ほとんど同じだとのこと。互換性も考慮していると言っていたので、この先大きく違ってくることもないのだろう。