書いた人:はたけやま、かくたに
11/2 から11/4 にかけて、アメリカはノースカロライナ州シャーロットにて Ruby Conference 2007 が開催されました。
今年から会場が大きくなり午後のセッションは 3 つの部屋に別れるマルチトラック構成になりました。また、参加者も去年の 300 人から倍近い 500 人と大幅に増えました。
本稿では RubyConf 2007 の様子を主にミーハー的な視点からレポートします。
:
:
Ruby on Rails のコアメンバーである Marcel Molina Jr. が、コードの美しさとその効用、そしてなぜ Ruby だと美しいコードが書けるのかについて発表しました。
美しさの定義として
の 3 つをあげ、これらをバランスよく適用することで美しいコード=良いソフトウェアとなる。
Ruby は美しいコード書けるように最適化されており、良いコードを書くと自然と美しいコードができあがる、美しくないコードは設計が悪いのかもと気付かせてくれる、といったことを話していました。
RubyConf 2007 の最初の発表にふさわしい、すばらしい発表でした。
また、Kent Beck 好きの私としては、Smalltalk Best Practice Patterns を推薦していたのが印象的でした。(この項:はたけやま)
:
Jim Weirich が Ruby のメタプログラミング機構を活用したクラス設計を紹介しました。
サンプルプログラムを題材にモリモリとメタプログラミングテクニックを披露していくのですが、そのあまりのメタっぷりに会場からどよめきが起きていました。
また、Jim は Java の箱から抜け出すこと(= Ruby のメタプログラミングを活用すること)の重要性を訴えました。
Ruby メタプログラマの道具箱を見せてもらったようで、非常に為になる発表でした。(この項:はたけやま)
午後からは 3 つの部屋に分かれて、それぞれの部屋でセッションが行われます。
:
RubyConf の先輩参加者たちによれば Nathaniel の発表はいずれも難解だと聞いていて不安でしたが、 今年の発表は _why プロダクツである Camping を、ライブコーディングを混じえながら紹介しつつ、Rails と対比するという内容で、RubyConf 初心者でも楽しめる内容でした。
セッションでは Rails と Camping のいずれもが Ruby による Web アプリケーションフレームワークでありながらも、 対照的なものに仕上がっていることに触れ、Rails は Professional や Pragmatist 向けだが、Camping は Hobbyist や Hacker 向けであり、 Rails に比べればマイナーかもしれないが、Camping は Hack であり、Hack こそ Ruby の価値だと情熱的に主張していました。
「Ruby を使って楽しむことの大切さ」を再確認するようなセッションでした。Go hack something!
Nathaniel がライブコーディングについて、(私の理解が正しければ) 「 20 分の内容で 50 分しゃべるのに最適なんだ」と軽口を飛ばしていたのが印象的でした。 今度プレゼンテーションの機会があったら、是非まねしてみようと思います。(この項:かくたに)
:
RubyKaigi 2007 では MDD (マスコット駆動開発)旋風を巻き起した AP4R guys のお二人による発表。
ネタは控えめに、非同期メッセージングライブラリとしての AP4R をアピールしていました。
セッション終盤での質疑応答でも活発に質問が飛び交っていたので、海外の Rubyist も AP4R に興味をもってもらえたようでした。
詳しくは、発表されたご本人たちのエントリがよくまとまっているので、そちらをご覧ください。(この項:かくたに)
私たちは参加しませんでしたが、Room1 ではその後、以下の発表が行われました。
3 つに別れた部屋のなかでは Room2 が最も狭いのに、この部屋で人気セッションが決行されたりして、ちょっと大変なこともありました。
:
Ben Bleything は、さまざまな電子機器を Ruby から操作する方法を紹介しました。発表の最後にそれまで紹介した電子機器を組み合わせて「XFD (ビルドがこけた時にランプの点灯で通知してくれる装置)」を作成するデモを行いました。
電子機器のプログラム経験に疎い私にとって難しい発表ではありましたが、Ruby を使ってランプ点灯や電光掲示板を制御を行うデモは、見ていてとても楽しいものでした。私もいつか Ruby でランプをピコピコさせてみたいです。(この項:はたけやま)
:
Andrea O.K. Wright が、Ruby/SDL、RUDL、gosu、OGRE.RB など、さまざまな Ruby のゲーム用ライブラリを紹介しました。
薄幸そうな少女がロゴのゲームライブラリ gosu を高橋会長がしきりに褒めていたのが印象的でした。
Andrea さんは 7 年にわたる RubyConf の歴史の中で、初めての女性発表者だそうです。(この項:はたけやま)
:
Eric Ivancich 氏が、データ構造 Rope とその Ruby での実装について発表しました。すごい String (ひも)なので Rope (縄)というのが面白いですね。
Rope は String と比較して、
といったメリットがあるそうです。
発表の当日にバージョン 0.1 が RubyForge へアップされました。(この項:はたけやま)
:
Ryan Davis が、良い開発スタイルを促進させる考え方とツールを紹介しました。
Ryan 自身の経験した、ダメダメな上にだれも利用していない WebDAV 対応のコードを休日出勤して削除したら、シンプルになった上に IntegrationTest のスピードが 14 倍になってみんなハッピーになった、というエピソードが非常に印象的でした。(この項:はたけやま)
Ruby Clinic が行われましたが、私たちは参加しませんでした。
:
晩御飯のあと、プロ Rubyist 達が Matz へ疑問をぶつけるタウンミーティングが開催されました。
英語の苦手な私は開始早々においてけぼり。セッションの内容は、mput の日記 をご覧ください。
Confreaks.com で動画も公開されています。(この項:はたけやま)
2 日目も午前中はみんな一緒に話を聞きます。今日は Ruby 実装者祭りです。ささださんの姿は壇上には見えませんでしたが、誰もが ko1 を意識しているようでした。圧倒的な存在感 :-)
午前は以下のセッションが行われました。
:
.NET 上で動く、C# で実装された IronRuby の紹介だったと思います。
早口すぎて私たちは完全に置いてけぼりでした。John Lam のお尻からなぜか FreeBSD のデーモン君みたいな尻尾が出ていたこと以外に書けることはありません。 私たちも会場でリロードしまくっていた mput の日記をご覧ください。
セッション終了後に id:secondlife が目をキラキラさせて「 IronRuby イイ!」と言っていたので、たぶん良かったのだと思います。(この項:かくたに)
:
RubyKaigi 2007 でも発表してくれた JRuby guys のセッションです。
発表の内容は、JRuby の設計や実装についての突っ込んだ話題が中心でした。 なので、詳細は発表資料をご覧ください :-)
次のバージョンである JRuby 1.1 ではさまざまなパフォーマンス改善の結果、MRI(Matz’s Ruby Implementation: CRuby 1.8.x)よりも速くなったというデモで会場をどよめかせつつ、 「でも YARV はもっと速い」と、最後はささださんに華をもたせる粋な演出が印象に残りました。
他にも、なぜか ‘『Java Expert #2』’の表紙をスライド資料に使ったり、発表前に「RubyKaigi ではこうやってたよ」と IRC の画面をスクリーンに大写しにしたり、と日本への目配せが随所に見られる発表でした。(この項:かくたに)
:
Even Phoenix から Ruby による世界制覇の状況が語られました。「世界制覇」というと私には RubyKaigi 2006 でのまつもとさんの基調講演が思い起こされます。 まつもとさんに確認してみたところ「このネタを海外でやった覚えはない」とのこと。示し合わせたわけではないのにメッセージが呼応しているのがより一層興味深いです。
Rubinius について私は「Ruby で Ruby を実装している」という以上のことを知らずにいたのですが、今回の RubyConf2007 参加でその考えを改めることになりました。
Evan のプレゼンスタイル(今どきな感じです)もさることながら:
――そして、Rubinius は Ruby プログラマのための Ruby 。といったアオリも小気味よく、プロジェクトの勢い(公式ワイフや公式マスコット (!) も完備)を感じさせるセッションでした。
まつもとさんやささださんに、後から Rubinius について聞いてみたところ「Rubinius は脅威だ。Ruby よりもコミッタが多い :-)」といったコメントが得られました。
といっても Rubinius の勢いが感じられるのはネタやトークだけではありませんでした。Rubinius のテストケースは minispec.rb を使って書かれています。minispec.rb は RSpec のミニマムセットのような小さなライブラリ(といっても 1 ファイルの短いもの)です。Rubinius のテストケースは「動作する Ruby の仕様をボトムアップで表現したもの」として、他の Ruby 実装者にとっても重宝しているようでした。実際に、IronRuby や JRuby の発表でも「Ruby 実装としての完成度」を測定する基準として使われていました。(この項:かくたに)
午後はまた 3 つの部屋に別れてのマルチトラックです。Room1 での発表は以下の通りです。
プログラマ歴 45 年( ! ) の Edward Borasky 氏が、Ruby のプロファイリングとチューニングについて発表しました。
Ruby とその他の言語 (Java, Perl, YARV !, Python, PHP, Groovy !) の性能を比較し、やはり Ruby は遅いよねとの結論。で、チューニングするためにはこんなやり方をすればいいんじゃない、というお話だったと思います。
個人的には、Rails アプリのベンチマークとして紹介されていた「Pet Store (A Rails benchmark from ThoughtWorks)」の存在を知れてよかったです。(この項:はたけやま)
:
Seattle.rb の Phil Hagelberg が、でかいサルのぬいぐるみを連れて登壇。フィードバックループを短くするためのツールを紹介しました。
そして、これら複数のツールからのフィードバックをエディタ上ですばやく受けるために Phil が作ったツール Augment が登場。 今のところ対応エディタは Emacs と Textmate のみですが、フロントエンドを書くことにより他のエディタでも対応できるそうです。(この項:はたけやま)
:
またまた Seattle.rb の Eric Hodel が、良いソフトウェアを開発するための Tips and Tricks を紹介しました。
一番大事なことは「楽しむこと (Have fun)」。そしてそのために以下のことを実践するといいんじゃない、とのことでした。
この発表は非常に参考になることの多い良い発表でした。(この項:はたけやま)
超高速スピーチの Francis Hwang 氏が登壇。うあー、何の話かさっぱりわからない。
mput の日記にも見放されたボクらにできることはただ画面をボーっと眺めることだけでした。(この項:はたけやま)
Room2 での発表は以下の通りです。
:
UNIX 系 OS のシステム管理の自動化ツールである Puppet の開発者である Luke Kanies の発表です。プログラムモデルにおける不完全性について ―― 数学や科学の知見のソフトウェア設計への適用を Puppet を題材に話をしてもらえると理解(あるいは勘違いして)聞きにいったのですが、Puppet そのもの話はほとんどありませんでした (!)
まとめると「完全なモデルなんてなくてフィードバックを重視しながら設計を emerge させていく、ってアジャイル開発っぽいけど、アジャイルよりもゲーデルとかラマチャンドランといったほうが cool じゃね?」という感じでした。つまり「‘『GEB』’最高!みんなも読むといいと思うよ」と。発表を聞いていた私はかつて Jim Highsmith の‘『適応型ソフトウェア開発』’のことを思い出しました(本書はカオスの縁で成功するためのプロジェクトマネジメントの本です)。
セッション終了後、高橋会長から「どうでした?」と聞かれたので「‘『GEB』’を語る会でした。実は最後まで読んでないし、このテの話を英語でされるのはキツい」と伝えたところ「ええっ?! 読んでないんですか?!」と切り返されました。帰国後に本棚の奥の方から『 GEB 』を発掘したので、今度こそ読み通したいと思います(あとで読む)。(この項:かくたに)
:
Apple Inc. 勤務の Ruby Ninja、Laurent による RubyCocoa プロジェクトの現状報告と今後の ロードマップ 世界制覇プランの発表です。Laurent は Evan Phoenix の発表の内容を受けて、直前に「ロードマップ」から「世界制覇プラン」に修正したのを id:ogijun が目撃したそうです。 Ruby による世界制覇の手は Apple Inc. にも忍びよっています。
発表で紹介されたのは Leopard に搭載されることになった RubyCocoa 1.0(= 0.12.0 + α) での改善点や、BridgeSupport、DTrace 対応といった新機能、Cocoa プロセスにアタッチできる RubyInject などです。いずれもデモを中心に紹介されました。披露されたデモでは、QuartzCompozer を使ったり、テキストを読みあげたり、LimeChat for OSX に DTrace をかけた結果を Instruments.app で可視化したりと、いかにも Mac らしい、モテそうなものが多かったです。
今後の ロードマップ 世界制覇プランとして、Ruby 1.9 のネイティブスレッドへの対応や、Objective-C のランタイム上に Ruby のクラスモデルをつくりたい、といった野心的な取り組みが発表されました(具体的な作戦などはいま考えているところだそうです)。
Ruby が標準サポートされている OS としての Mac OS X に期待したくなる発表でした。現状の Leopard に標準搭載されている irb で日本語を入力できない不具合があるらしいですが、長い目で温かく見守ろうと思いました。(この項:かくたに)
Room2 では以下の発表も行われました。
Refactotum というワークショップが行われましたが、私たちは参加しませんでした。資料を見るかぎりだと、オープンソースプロジェクトのコードをリファクタリングしてパッチを投げる、という実践的な内容だったようです。資料によればこのネタで既に 4 回もセッションをやっていたのですね。これは面白そう。(この項:かくたに)
二日目の夜は、まつもとさんによるキーノートスピーチ。
まつもとさんは、なぜ Ruby が素晴らしいのか、Ruby1.9 の新機能と YARV について、そして Ruby の将来について語りました。
スピーチの中の
Ruby が素晴らしいのは、Ruby を使っているユーザがすばらしいから。Ruby を盛り上げてくれてありがとう
:
のくだりでは、会場中の全 Rubyist が泣きました。(この項:はたけやま)
:
「当初は三日目の 15:00 から実施する」とアナウンスされていた RejectConf でしたが、唐突にまつもとさんの Keynote 終了後の Room3 で開催されることになりました。
結果的に突然の開催告知となったので仕方がないことではありますが、発表は準備不足だったり、以前の発表内容の使い回しだったりすることが多かったです。また、いつ終わるとも知れないグダグダ感(次から次へと「発表したい!」という人が出てくる)が、一日じゅう英語の発表を聞き続けた私にはツライものがありました。終わってみれば 20 名ほどの発表があったようです。 Confreaks が動画を公開してくれているので、詳しくはそちらを参考にしてください。
個人的には、監視ツールの GOD (すごい名前だ……)と、JRuby の Charles Nutter による、 Ruby の仕様を表現するテストケースの充実を呼びかけるアナウンスが印象に残っています。(この項:かくたに)
いよいよ最終日です。例によって午前中はみんな一緒です。
:
Dr Nic が Rubigen を紹介しました。
Rubigen とは、Rails の generator を利用して Rails 以外のアプリも生成しようというものです。発表では Merb, RubyCocoa, AdobeAIR の自動生成が行われました。
また、プレゼン資料内の特攻野郎 A チームネタに会場が大爆笑でした。A チームネタは万国共通なのですね。(この項:はたけやま)
:
振舞駆動開発 ( Behaviour Driven Development:BDD ) の提唱者である Dave Astels と、現在の RSpec プロジェクトの実質的なリーダーである David Chelimsky のペアによる発表です(ちょっとだけペアプログラミングも披露されました!)。
それにしても Ruby 界隈には Dave / David が多いですね。ちなみに、David Chelimsky は「チェリムスキー」と発音しているように聞こえました。
発表では、BDD という考え方のバックグラウンドと RSpec の紹介に続いて、RSpec プロジェクトの歴史と次リリースでの新機能がデモを中心に披露されました。
RSpec の新機能の数々は、 rbehave を RSpec に統合した結果として生まれた StoryRunner という仕組みを中心に形成されています。 StoryRunner とは「英語っぽく書いたら、それがそのまま受入テストケースとして動く」というもので、テスティング DSL としての方向性を追求した結果、辿り着いてしまった境地ともいえます。
新機能紹介の後には、RSpec コミュニティについて語られたあと、Pragmatic Bookshelf の近刊として “Behaviour Driven Development in Ruby with RSpec” の出版がアナウンスされました(出版時期は未定のようで、 Pragmatic Bookshelf のサイトにもまだ掲載されていません)。出版が待ち遠しいです。
今回の発表でもコミュニティのことに言及していたことが印象に残りました。私は少しだけ RSpec コミュニティに出入りしていて、その経験から「 RSpec チームは利用者や開発者を大事にしている」という印象を持っていたのですが、そのことに確信を持てたので、これからも RSpec をウォッチしていこうと改めて思いました。(この項:かくたに)
:
Jay Phillips が テレフォニーアプリケーションフレームワーク Adhearsion を紹介しました。
Adhearsion と同様にテレフォニーアプリを作成する環境として Asterisk がありますが、Jay は Asterisk での開発はダメダメだと一蹴。Asterisk と比べた Adhearsion のメリットを説明していたみたいです。
正直なところ Adhearsion の良さがよく分からなかったのですが、発表の最後に行ったテレコムアプリケーションのデモはおもしろそうでした。(この項:はたけやま)
例によって 3 つの部屋に別れます。
William Bereza 氏が、組込みシステム開発のサポートに Ruby を利用した事例を紹介しました。
主にテストのサポートツールとして Ruby を利用したとのこと。具体的には以下のとおり。
一見地味ではありますが、堅実な Ruby の利用事例だという印象を受けました。(この項:はたけやま)
Kyle Maxwell が CastTV 社への JRuby の導入について発表しました。
Kyle が Ruby でなく JRuby を選択した理由は、既存の Java ライブラリを利用したかったから。Ruby で C extension 等を使えば同様の処理の実現はできたが、JRuby の方がより簡単だったとのこと。
また、JRuby と Ruby をベンチマーク比較していましたが、ちょっとビミョウなベンチマークという印象。コードの書き方を工夫するだけでどうとでも操作できそうな。(この項:はたけやま)
:
Ben Scofield が Domain Specific Language について発表しました。
まず最初は DSL の定義の話。Language とは Vocabulary と Grammar から成る。Ruby を使って Domain Specific Language を作ると言うが、Ruby を使っている限りはどの DSL も Vocabulary が違うだけで Grammar は同じはず。なのでそれは Domain Specific Dialect (方言)と呼ぶべきじゃないか、という話。言葉遊び?
次に DSL を作るときの話。以下のステップで作るといい DSL が作れるんじゃない、という話でした。
DSL と聞いてかなり期待していたのですが、目新しい話がほとんどなくちょっと拍子抜けな発表でした。(この項:はたけやま)
3 つの部屋のうちで最も狭かった Room2 とも今日でお別れです。
:
OpenID への関心はこちらでも高いようで、あまり広くない会場にたくさんの人が入っていました。
中央集権的には認証には private なものと public なものの 2 種類があり、private なものはエンタープライズなイントラか、WAN に置くもので CAS がそれに該当し、一方の public なものは アプリ側で opt in する OpenID がある、という比較の後は、OpenID を中心に、認証処理のシーケンスの説明や、Ruby での実装 (restful_open_id_authenticated だったかな?) のことが説明されていました。聴衆からは発表の最中にもどんどん質問が出され、Justin もそれにパワフルに答えながら進めていく、アツイ発表でした。
発表とは全然関係ありませんが、 Justin Gehtland とその勤務先である Relevance Inc. は‘『Java から Ruby へ』’で事例として登場してきたので、訳者としては本人の姿を見ることができたのが感慨深かったです。(この項:かくたに)
その後、Room2 では以下の発表が行われました。Sploitin’ with Ruby が面白かったと風の噂で聞きました。
『 Presentation and discussion by Ruby Central’s Google Summer of Code participants 』が行われましたが、私たちは参加しませんでした。
本稿では RubyConf2007 をレポートしました。
英語が苦手な私たちにとっては「ちょっと空気を吸いに行ってくる」くらいの気持ちで参加した RubyConf でしたが、結果としては非常に有意義な三日間となりました。英語は分からないなりに発表を楽しめましたし、日本に居ては感じることのできなかった『 Ruby の今』みたいなものを感じることができたように思います。アメリカ行って良かった。
RubyConf 行ってみたいんだけど英語が心配で……という方は、思い切って出席してみることをオススメします。
RubyConf 2007 のアジェンダです。
毎年恒例になりつつある mput さんの参加レポートです。
Nick Sieger の blog に詳しいレポートがあります。
:
今回のレポートでは紹介できなかった発表も含め、すべての発表の動画を下記のサイトで見ることができます。Confreaks グッジョブと言わざるを得ない!
私も自分が参加しなかったセッションを見て、感動したり、振り切られたり、英語の分からなさに絶望してみたりしようかと思います :-)
id:thata にして、ちくわプログラマ。XP とか Ruby が好きな、練り物。(株) 永和システムマネジメント サービスプロバイディング事業部所属。
好きなメソッドは String#split と Array#join 。
kakutani.com。日本 Ruby の会理事。(株) 永和システムマネジメント サービスプロバイディング事業部チーフプログラマ。好きなメソッドは Object#extend 。
今回 は も RSpec の連載記事を落としてしまいました。その原因となった書籍『アジャイルプラクティス』をお詫びに読者プレゼントとして提供しております(オーム社さんありがとうございます)。こちらへの応募もお待ちしています。