毎年ヨーロッパ各国で持ち回りにて開催されている EuRuKo。 EuRuKo2011 は 5 月 28 日、29 日にベルリンで開催されました。チケットは 3 回に分けて売り出され、初回販売分は僅か 1 秒で売り切れとなるほどの人気のイベントでした。私は運良く 3 回目でチケットを購入できたので参加してきました。
本稿では、主にミーハー的な視点からレポートします。すべてはレポートしきれていませんので、もっと詳しく知りたい方はぜひリンク先の動画や資料を見てみてください。
今回の EuRuKo は、発表者それぞれが普段の仕事にどのように Ruby を活かしているか、という発表が多いのが特徴でした。
“Ruby helps us make movies: Guerilla-DI, scripted tools for a modern film pipeline” というセッションでは、撮影した後での 3DCG 編集のスクリプト言語として Ruby を使っているという話がありました。また “In the Loop” というセッションでは Nginx などの Event Driven でハイパフォーマンスが要求される分野でのチューニングの専門家がどのように Ruby を使っているか、”Your Data, Your Search” というセッションでは様々な DB や様々なデータ形式でどのように検索を行うかなどの話がありました。
“Games for the Masses: Scaling Rails to the Extreme” では「オンメモリで捌く Redis 」か「 MySQL とのハイブリッド」かを実際のブラウザゲームサービスで使ってみた話があり、”Getting Hands On with Adhearsion” では Adhearsion (Framework for writing voice-enabled applications) を使って実際に会場の参加者の電話番号に電話するデモが披露されていました。
他にも “Scanning Strings at Supersonic Speed” では Ruby で書かれた CodeHighlight ツール CodeRay の紹介や「 Arduino を Ruby で使ってみた」という電子工作の発表のような、 Ruby でどのようなものを作ったかという発表もありました。様々な業務や趣味の分野に Ruby が根付いていて、 Ruby をうまくつかってみんなの幸せをつくっているんだなと感じました。
また、JRuby の話では CRuby のコミッターでもある @nahi さんの JRuby Hacking Guide が引用されていました。
以下、発表の中からいくつか取り上げて紹介します。
Nginx など、Event Driven で動くプロダクトは多くあり、チューニングする際に、Ruby のイベントループに関する話が重要になるそうです。Ruby が Kernel のどの命令を使っているかを理解して、ハイパフォーマンスな実装をするにはブロックの少ない実装をする必要があるということを説明していました。
Ruby についてでなく、OS の System Call にまで踏み込む面白い話でした。System Call などの前提知識が要求される話だったため、詳しい方に解説してもらいながら聞きたいと思いました。
「メタプログラミング Ruby 」の著者、 Paolo さんの発表です。存在しないメソッドに応答する際に、method_mithing (ghost method) と define_method のどっちを使うのが良いかという内容でした。method_missing には いくつかの落とし穴があるといいます。
ほかにも、method_missing で捕まえたいメソッドで親クラスが応答してしまう場合はなど、たくさんのメタプログラミングのたしなみを Ruby 会議のときのように分かり易い語り口で話してくれました。
例年の EuRuKo 参加の際の飛行機トラブルを紹介し、「今年は無事に到着したよ!」で会場を掴んだまつもとさんのキーノート。組み込み Ruby である Rite など、まつもとさんの最近のお仕事を説明したキーノートでした。Rite に関しては 札幌 Ruby 会議 03 での発表、RubyConf のキーノートから最新状況にアップデートがかかっていました。
「Ruby はすごい言語ですよね (キリッ (会場拍手喝采)。すごいライブラリがあります。すごいコミュニティがあります。国際的で、ナイスで、たのしいコミュニティ。すごい実装があります。」 と、Ruby を取り巻くものについて褒めました。また、MagRev (smalltalk) のバーチャルマシン上で動く実装が商用で近々リリースされることにも言及しました。「Ruby でもっとたくさんのエンジニアをハッピーにしたい。まだ Ruby を使えないプラットフォームのエンジニアがいる。また、Ruby アソシエーションはまだ日本だけでの活動なので世界の活動にしたい。」と、今後の展望について述べました。
Ruby 1.9 は巨大で POSIX API に強く依存してますが、小さなプラットフォームでは POSIX API が提供されていないことが多いです。また、Mark & Sweep の GC はオブジェクト破棄に長い時間がかかってしまいまうそうです。
組み込み Ruby である Rite では、速度よりもレイテンシを重要としたそうです。Rite は Ruby 1.9 のサブセットですが、ISO Ruby には準拠しないと言われました。また、組み込み言語としてよく使われる Lua を良くしたのが組み込みRuby だといい、Rite のコンセプトを「Components & Configurable」と説明しました。Configurable なため、たとえば File IO を使わない環境では File IO を組み込まないようにするなどが可能だそうです。
Rite が活躍する場として、「TV、ロボット、ゲームとかが考えられる。」と語りました。Rite は、2011 年後半には OSS で公開、MIT ライセンスか GPL で (GPL の部分で会場からブーイング発生 (笑)) になるという予定が伝えられました。Rite は、M17N には非対応なので、コンパイル時に ASCII か UTF-8 を選んで、使用者が自分でそれを実装する必要があることや、Ruby の Thread には対応しないが、Fiber には将来対応するかもということも述べていました。
質疑応答で会場からの「Ruby を開発してくれてありがとう!」の発言にあわせ、会場は拍手につつまれました。:)
Rite が採用している Register Base VM について、発表後まつもとさんに聞いてみました。VM のトレンドには 2 種類あるそうです。1 つはスタックベース、もう 1 つはレジスタベース。スタックベースは、スタックに値と命令を積んで実行するタイプ。1 + 2 を計算する場合、スタックに 1 を積み、2 を積んで、+ を積んで、というイメージになります。レジスタベースは、複数のレジスタに値をいれて実行することになります。こちらは、1 と 2 をレジスタに入れて計算するというようになります。レジスタベースは、命令長が長くなるが命令数は少なくなります。オペランドが、命令に入るからです。スタックベースは、命令長は短くなりますが、命令数が多くなってしまいます。YARV や JVM は、スタックベースのVMです。一方、Lua はレジスタベースの VM を採用しています。経験的に、メモリから命令をとってきて、それが何か判別する処理のコストが高いのが分かってるので、Rite ではレジスタベースを採用したそうです。ちなみに、まつもとさんの好みはスタックベースの VM だそうです。
EuRuKo は毎年持ち回りで開催国が変わります。次回の開催国は、なんと EuRuKo 開催中に会場の投票で決めるとのことでした。ストラスブールやアムステルダム など各候補地がオリンピックさながらの招致プレゼンを行いました。各地ともプレゼンに、必ずまつもとさんの写真を入れているのがさすがでした。結果、EuRuKo 2012 はアムステルダムでの開催に決定しました。
エンディングでは壇上にギターを持ち込み EuRuKo 2011 のテーマソングを大合唱。ヨーロッパの Rubyist はファンキーです (写真をよーく見ると、マイク持ち係のまつもとさんの姿が・・・) 。
今回の会場は映画館でした。大きなスクリーンでスライドが見易かったです。軽食や果物などのおやつに加え、飲み物、お酒も配られていました。休み時間はロビーで Rubyist たちがわいわいと歓談しています。またスポンサー企業が、懇親会を企画していて、セッション終了後はみんなお酒と話を楽しんでいました。余談ですが、懇親会会場がとてもとても分かりづらい場所にあり、まつもとさんと 2 人で迷子になりながらなんとか辿り着いたのは良い思い出です。
日本 Ruby 会議、アメリカの RubyConf、ヨーロッパの EuRuKo。それぞれの地方を代表する Ruby カンファレンスには、それぞれの特徴、雰囲気があります。3 つのカンファレンスに参加した筆者の体験談を書いてみます。
RubyConf の発表は、Ruby に関するホットなトピックを聞けるのが特徴です。Rubinius や MacRuby といった Ruby 処理系や、Rails や RSpec などのフレームワークやツールを作っている人たちが、自分の作品を作った想いや新機能、今後の方向性について話すのはエキサイティングです。EuRuKo は、Ruby を自分の仕事にこうやって活かしているという発表が多かったように感じました。Ruby を使った様々な仕事があることを知ることができました。日本 Ruby 会議は、Ruby コミッタがたくさん参加しているのが特徴で、Ruby の新機能の提案やライブラリの改良など、Ruby の中の話が聞けるのが特徴だと思います。どのカンファレンスも発表が多岐に渡っていて、いつも楽しい発表を見ることができます。
会場となる施設もそれぞれ違います。RubyConf はホテルで開催され、昼食やおやつが振る舞われます。昼食は同じテーブルにいる他の参加者と話す良いきっかけになります。おやつの時間にはお菓子や果物に加え軽食もあり、休憩時間の楽しみです。設備がすばらしい分、参加費用は若干高めの約 3 万円です。EuRuKo は、毎年開催都市がもちまわりで変わります。2011 年はベルリン、2012 年はアムステルダムです。参加費は 36 Euro (約 4000 円) と安かったのに飲み物やおやつが振る舞われていました。日本 Ruby 会議は、公共のホールで開催されています。参加費も 6000 円と安く、また学割があり、学生に積極的に参加してもらいたいという想いを感じます。2011年の開催は、学生無料参加制度もありました。飲み物が振る舞われる喫茶スペースや、電源を使える給電所は Rubyist たちの交流の場になっています。また、書籍販売と著者によるサイン会も恒例行事となっています。
RubyConf では、Rubyist へのリクルート活動が盛んでした。スポンサーとなっている企業が、T シャツやノベルティグッズを配ったり、それぞれ Meetup を開催しています。EuRuKo や日本 Ruby 会議も同様の傾向がありますが、まだまだ少数だという印象です。アメリカでは特に Rubyist の需要が高いようです。日本でも Ruby を使って大きなサービスを行う企業が多く出てくればリクルート活動が盛んに行われるようになるのかもしれません。
海外カンファレンスに参加すると、世界中にいるナイスな Rubyist たちと話ができます。英語に自信がなくても、Ruby のコードや自分の作ったプロダクトを実際に見せながらネタにするとコミュニケーションをすることができます。私の場合は、持っている自分で作った iPhone アプリや、電子機器ガジェット、カメラをきっかけに話をしていました。また、旅を共にする日本人 Rubyist ともたくさん話をすることができます。まつもとさんとご飯を食べながら日本語で Ruby の質問をできるのは日本人ならではの特権と言えるでしょう。
どのカンファレンスにも共通するのは、まつもとさんをみんな大好きだということです。海外では握手を求められたり、写真を一緒に撮っているところを頻繁にみかけます。RubyConf では、まつもとさんの基調講演のあとでスタンディングオベーションが起こりました。EuRuKo でも、まつもとさんの基調講演の質疑応答で会場からの「Ruby を開発してくれてありがとう!」の発言にあわせ、会場は大きな拍手につつまれました。また、最後の日本 Ruby 会議ではクロージングでスタッフへ、そして Ruby への感謝の想いがスタンディングオベーションとなったのだと思います。世界中でナイスな Rubyist が集ってコミュニティができているのを体験できて、私はとてもうれしく感じました。
海外のカンファレンスに興味を持たれた方はぜひ足を運んでみてください。RubyConf や EuRuKo 以外にもたくさんのカンファレンスが世界中で開催されています。RubyConf は日本人参加者も多く、参加し易いと思います。また、開催される街を観光するのも楽しみの 1 つです。ベルリンは森の中に街をつくったような自然の多い街で、建築物も素晴らしかったです。海外カンファレンスの雰囲気は言葉では聞いていたものの、参加してみないと分からないものでした。私は参加していろいろなことを学ぶことができましたし、何より楽しい旅でした。特に学生さんへ、私は参加を強く勧めたいです。日本とは違った形で Ruby を使って仕事をしている世界を垣間見れるでしょう。
東京からの参加費用
五十嵐邦明 (@igaiga555) : 株式会社万葉