JRubyConf 2010に行ってきました

なぜか突然、JRubyConf 2010に行ってきたので、レポートでも。これは会場で配られていたTシャツとコーヒー豆、Ruby Brew。すごく香りのいい豆です。


昨年はサンフランシスコで開催されたJRubyConfですが、今年はオハイオのコロンバスというところでした。おそらく日本人には馴染みが無い場所かと(デトロイト近辺の日本人にはお馴染みの場所ではあります。ホンダの工場がコロンバス郊外にあるので。自動車業界つながりということで)。カンファレンス会場のQuest Confrence Centerはいかにもアメリカの郊外という雰囲気の場所にあります。(つまり、だだっぴろい感じのところ。いわゆる車が無いとどこにもいけないという典型的なアメリカの街)


カンファレンスの会場は一部屋だけ。広さは、たぶんRubyKaigiの小さい方のホールの半分くらい、かな。でも、前の方はほとんど空きがないほど、大勢の人がきています。200人くらい?会場入り口では、フルーツやヨーグルト、コーヒー、ジュースといった飲み物のサービスがありました。


トップバッターはThomas Enebo氏による”Java in Ruby: Suntory Time”でした。このプレゼンはJRubyユーザー必見です。JRubyでコーディグするための、JRubyならではの grammar の話しで、きっと「そこが知りたかったんだ」と思う人は多いのではないでしょうか。たとえば、java_importやjava_send, java_method,java_signatuireなどなど。他にも、JavaのメソッドをRubyでオーバライドする方法やらインタフェースの実装やら。書籍"Using JRuby"(http://pragprog.com/titles/jruby/using-jruby)でもこの辺りの解説がありますが、このプレゼンはそれ以上かも。ビデオが公開されるのかどうかわかりませんが、もし、公開されたらぜひご覧になってください。たとえビデオがないとしても、スライドは公開されるので、それを見るだけでも参考になると思います。他に"Using JRuby"本は参加者限定のディスカウントがあったり。。。


二番手はCharles Nutter氏による、Rubotoでした。ご存知、RubyAndroidのコードが書けるAPIと実行環境。筑波のJRubyKaigiでデモを見せてくれたので、 参加された方は Rubotoに聞き覚えがあるかも。これからRubotoを使ってみようと思っている人向けの入門編です。とはいっても、単なるgetting startedよりはずっと詳しくて、APIについてもサンプルコードを付けて解説してくれました。もちろん、デモも。開発ツールの使い方や、Android特有の知っておくべきAPIの解説などもあり、これから始める人は特に、知っている人にも便利そうなあたりがあるのではと思います。これも、スライドは公開されるはずです。


三番目はJeremy Hinegardner氏による、”Extending JRuby”でした。このセッション、個人的にはとても興味深いものでした。なんといっても、今私が取り組んでいるpure Java NokogiriはHinegardner氏のいう”Extending JRuby”のひとつ。3つの拡張方法、C extension, Java extension, ffi extensionのうちのJava extensionなんです。Hinegardner氏が作っているという hitimes gemを例に、C extensionの場合はこうして、Java extensionの場合はこうしてという詳しい解説をしてくれました。


そしてここでランチです。サラダにパスタ、チキン、デザートと飲み物でした。豪華ではないけれど、十分だし、おいしい料理でしたよ。参加者は、丸テーブルに適当に座って、話しをしながらの食事です。話題は、RailsConfのとき比べると、もっとディープなプログラミング関係が多いかったかな。おそらく、日々、プログラミングな人たちばかりで、businessな人はほとんどいないのでしょう。


午後の最初のセッションはGlenn Vanderburg氏による、”Real Software Engineering”でした。アカデミックなテーマです。大学の情報系の教授が話しそうなSoftware Engineeringとは何かという内容でした。 Software Engineering歴史を黎明期から現在に至までの話しにはじまり、Softwareではないreal engineeringとの比較やらでとくとくと解説してくれました。歴史中にはwaterfall開発の話しも。Real engineeringとの比較のところは、実際の建築工事過程とソフトウェア開発をモデリング、デザイン、工事(コーディング)がそれぞれどのように対応するかを話しつつ、どこで失敗するとどういう結果になるのかをコミカルに説明してくれました。さらに、テスト。Real engineeringの分野の例ではボーイング社が実際に飛行機の翼が折れるまで強風を吹き付ける実験の話しをしながら、Software engineeringの世界のテストとの違いに触れていました。
このプレゼンは私には難しい英語で(ハイレベルの単語が多々)、なんとか話しを追いかけるのが精一杯でしたが、参加者にはとてもウケていましたね。


続いて、JRubyコミッタのOla Bini氏登場。”The JRuby Testing Story”です。JavaのコードをRubyでテストする話しが中心で、前半は世の中に出回っているテスティングツールについての概要で、後半はBini氏が開発しているJtestR(http://jtestr.codehaus.org/)の話しでした。たぶん、目新しいことは言っていなかったような気がします。世の中にはこんなにたくさんのテスティングツールがあるけれど、JtestRはいくつものツールをサポートしているし、AntやMavenからも使えるからJavaな人には便利なツールだという内容。今、JRubyJavaコードをテストする目的で使っている人はかなり少ないと思うのですが、これは確かに便利だと思います。テストコードは通常のJavaのコードと違って、アーキテクチャとか再利用性とか考えるよりも、さくっと簡単に書けて、短時間でより多くをカバーできるようにしたいもの。こういうところは重厚なJavaよりも、Rubyのほうがいいというのはこの界隈では良く聞く話です。

ところで、今回、初めてBini氏にお会いしたのですが、すごーく背の高い人でした。背の低い私ははるか空を見上げて話しをしているような感じで。。。また、とてもよく話す人だなぁという印象。セッションが終わった後もひとりでしゃべりまくっていましたよ。(あのくらいしゃべれたらいいなぁ、と思いつつぼーっと話しを聞いていた)
Bini氏のセッションが終わったところで、JRubyコミッタ7人並んで記念撮影をしました。そうなんです、現在アクティブに活動しているコミッタほぼ全員(nahiさんがいなかった)が揃ったのでした。


さらにテストの話しが続きます。"Mocks Suck (and what to do about it)"というタイトルでBrian Swan氏が話しをしました。おもしろい話しでした。まずは、Martin Fawler氏がBlikiで語った "Mocks Aren't Stubs"(http://martinfowler.com/articles/mocksArentStubs.html)を引用して、mockとstubの違いにふれ、いかにmockがだめであるかを強調。例えば、可読性が悪くなるし、Railsのようなフレームワークに合わないなど。そこで、mockではなくStubを使いましょうというススメに話しは展開していきました。とにかく、シンプルで可読性のよいstubを使いましょうという結論でした。


そして、もうひとつテストの話し。Jim Weirich氏による"Testing - Why Don't We Do It Like This?"です。スライドはすでにPDFが用意されていて、http://bit.ly/jrc-testingからダウンロードできます。今度は、mockはすばらしいからぜひコレを使って、テストの効率を上げようという話し。ん??Weirich氏の"Thank you, Brian"の始まりは笑えます。Weirich氏はまず、テストは速く終わらないといけないという話しから始めました。どうやら10分というのが目安のようで、これ以上長いと、テストを動かし始めたところでみんな帰っちゃう、テストが失敗したところの修正は翌日になるようです。ところが10分以下だと帰らずに結果を見て、問題があればその日のうちに修正するんだそうで。まぁ、日本では10分以上かかってもじっと待っていてその日のうちに修正しそうでうが、アメリカはそうではないということで。(こういう文化の違いって、ソフトウェア開発スタイルに影響を与えているのかも)Weirich氏によると、mockがいいとはいっても、よいmockを書かないといけないということでした。可読性をよくする必要があるし、普通のコードのようにリファクタリングも必要とのこと。テストコードも大切にしないといけないんですね。


この日のセッションはもう一つ。いやぁ、長いです。プレゼンテータが変わるときには十分時間をとってくれていて、トイレにいったり、コーヒーやおやつ(用意されている)で休憩したりできるようなスケジュールになっているのはありがたい。


一日目の最後はNick Sieger氏の"Rails3 with A Doulbe-Shot of JRuby"でした。内容は、JRubyとRails3が現在どのような状況かということやら、これから何がリリースされるかなどなど。特にactiverecord-jdbc周りでいろいろ出てきそうでした。筑波のJRubyKaigiのときに、DB2JRuby用アダプタが無いという質問をされていた方がいましたが、出るみたいですよ> DB2アダプタ。
他には、JRubyはだんだん速くなってきているとか、あんなgemやこんなgem (Warbler/Trinidadとか neo4+lucuneとか)の話しとか、どちらかというと浅く広く、JRubyはこれからもこんなによくなるし、もっといろいろできるようになるよー、みんなJRubyを使おー、的な話しでした。でも、これは本当で、JRubyそのものばかりではなくて、周り(gemとか)もどんどんよくなってきているなー、という今日このごろです。RubyだけじゃなくてJRubyもお試しください。Javaな人は試しに使ってみて。


夜は、JRubyConfを開催してくれたEdgeCase(http://edgecase.com/)社で、Scotch Whiskyのイベントがありました。asariさんによると、アメリカのstartupはみんなこんなもの、だそうですが、日本の会社しかしらない私の目からみると、"なんてすてきな建物!"な会社です。軽井沢とか清里とかにありそうな、すごーく素敵な広ーい別荘って感じ。森の中だったし。ここでいただいた、Ginger Beer、おいしかった!ごちそうさまですー。このイベントは延々、夜中の1時くらいまで続いていました。

とりあえず、ここまで。二日目についてはまた後ほど書こうと思います。