RubyKaigi2008 二日目

yuguiさんにサインもらえて満足。
やるおがJRubyの最適化するのは反則。

残りは後で書く。書いた。

一週間遅れだが今も覚えていることを書く。偏見がさらに記憶改変されて内容が無茶苦茶になってたらすみません。

拡張ライブラリの書き方講座(arton)

拡張ライブラリのテンプレートを生成してくれるextrails*1は便利そげ。あ、gemにも対応してたのか。
圧巻は拡張ライブラリを使ったメモリイメージの可視化ツール*2。主要なオブジェクトが色わけされた(昔の)windowsデフラグちっくな画面が綺麗だった。GCされるとごそっと書きかわるので楽しげ。
ただ、extrailsをつかったライブコーディングのデモで"w"の文字のせいでなかなかバグがとれなくて時間がおしてしまったのは残念。IRCチャットでバグが指摘されてたのはおもしろかった。

さらに仕事に使うRuby(後藤 謙太郎(ごとけん))

客先をまきこんで、tracとかRadMainを使ったお仕事の進めかた。客先と情報を共有している時には、客先にみせなくない情報もあるわけで、そういう情報はひとつのシステム内で可視性をいじくるよりも違うシステムを立てちゃったほうが早いし安全という話があってこれはなるほど。

erbを偲んで(関将俊)

『「せき」さんこと「せきさん」』の発表。偲ばない。MVCのViewはテンプレートじゃなくて実行環境+テンプレート(View Object)なのだ、という指摘。だめだ大分忘れてるな。

matzを説得する方法(田中哲)

田中さんによるRubyMLでMatzを説得させるための傾向と対策。RubyMLに提案を投げてみたことは一度もないけど、参考になる。perlというと釣りやすい、haskellというと駄目、というのはわかりやすい。haskellに近い書式で書ける遠藤さんの提案が玉砕してたしなあ。

日本Rubyのリファレンスマニュアル2008・初夏(青木峰郎)

リファレンスマニュアルの進捗報告。去年聞いた限りだと絶望的な状況ぽかったのに、おもいのほか進んでる。えらすぎる。

The future of Ruby in Mac OS X(Laurent Sansonetti)

噂のMacRuby。これはいろんな意味ですごかった。Mac上のRubyというとRuby Cocoaが既にあるわけだが、RubyCocoaObjective-CのオブジェクトとRubyのオブジェクトをがんばってブリッジしてるのでオーバーヘッドがおおきい。そこでRubyのオブジェクトとObjective-Cのオブジェクトをマージしちゃえばいいんじゃないの、というのがMacRubyの思想。
どうがんばっているかというと、RubyのCのソースをObjective-Cで書きなおしていて、例えばRubyのStringクラスをObjective-CのStringクラスを改変する形で実装している。ブリッジしてないので早いし、Ruby側のStringオブジェクトからObjective-CのStringのメソッドが呼べたりする。でもってほとんど一人でそれをやってるらしい。すげ。ここまでいくとRubyではないよなあ、と思うものの、インパクトは抜群。Macいいな。
んー。どっかに無理がでてるのかどうかは心配。Objective-CのモデルとRubyのモデルの親和性が高かったってことなのかな。

REST信者から見たRuby on Rails 2.0(山本陽平)

うわ。これの内容を覚えてない。REST的な思想の説明をしてたんだっけ…。

Real-World Enterprise Ruby(大場光一郎・高井直人)

高井さんはおもしろい。スーツ二人がおりなす漫才。実際のRubyの適用事例を紹介してたはずだが内容をあんまり覚えていない。あー、Javaの案件と同じようにRubyの案件でもテストチーム等々の体勢をしっかり作ってて、そこまでやってしまえば、特にRubyだからどうこう言う話ではない、というのが印象的。


ここからサブセッションへ。

net-ircというモジュールの実装紹介(cho45)

cho45さんを個人的に会ったことある人かと勝手におもっていたら違ったのがショックだった。えーと内容はircインターフェイスにいろいろやろうというお話。rubyircというとささださんが作ったnadokaというのがあるのだが、それとの関係がちょっと気になった。

Rubyプログラムの型推論(松本宗太郎)

型推論のお話。やっぱり難しそうだなあ。ML流のがちがちな型推論をするなら、Ruby側になんらかの制約なりアノテーションをつけることにするなり、Ruby側に制約をかけないんだったら、緩めの型推論(わかんねーって型を残すとか)しないと厳しそうという印象。フロー解析はまだやってないのでそれをすれば…という話もあったけど、あんまり良くわかってないのでなんともいえず。ああでも僕の思ってるようなことはどっちかいうとフロー解析なんかな。
PROで発表した時の別刷を配ってたので貰ってきた。別刷メソッド。あたらしい。

RubyGCをどけんかせんといかん(authorNari)

soutaroさんとしゃべってたのでこれはあんまり聞いてなかった。なんかアクションゲームをつくってGCが走ることによる不定期な速度低下をデモしてたらしい。


もういちどメインセッションへ

Rails症候群の研究(前田修吾)

Railsでは黒魔術がいっぱいつかわれているせいで、それを見たRuby使いが次々(不必要な)黒魔術を駆使するようになってしまうわけだが、それは実はRubyのせいなんであるよ、という話だったような気がする。おもしろ。
で、最後のあたりは"Rubyの標準化"的な話になったわけだが、標準化に関してRubyの楽しさを排除する方向への動きがでればそれには表にたって断固反対します、的な発言がでた。政治的な話はよくわからないが、Matzの近くにこういう人がいるのは頼もしい。とはいえ、ちょっとこの部分、デリケートな話の気もするし、既に記憶があまり確かじゃないので後で動画みて確認しとかないと駄目だな。


そして怒涛のRejectKaigi二本立て

でRubyKaigi終了後は好例のRejectKaigiが行われたわけだが、これがすごかった。件数が多くなったので、Reject KaigiをRejectされたReject Reject Kaigiもできて、同一会場で、二つのスクリーンを立てて一本3分半程度で二本立てで同時進行。マイクないので片方の声がでかいともう片方の声が聞こえないというカオスっぷり。
最初は真ん中くらいにいて、見るのがつらくなったらおもしろそうな方に移動する、という見方をしてたのだがいろいろ見おとした気がする。ネタ満載で結構笑った。Reject KaigiとRejectReject のプログラム一覧どっかにないかな。

中でも、「やる夫で学ぶJRuby最適化」が反則。高速化されたはずだしエンタープライズJRubyだ!と調子にのったやるおがオプションを駆使して最適化を試みるもCRubyより遅い結果に終わる、というのがやる夫AAで繰り広げられる。
これをスーツ姿の高井さんがたんたんと進めるもんだから無茶苦茶おもしろかった。資料(というかAA)が公開されてる*3けどこれは生で見たほうが断然おもしろいな。

あとは遠くにいたので聞けなかったけど、RubyのRejectKaigiなのにGauche on Railsとかやってる人がいたり無茶苦茶。そして最後の角谷さんのRegional(地域) Ruby Kaigiの御提案*4がまたしても感動的なのでありました。


休日を2日つぶしてつくばまで行くのはつらかったけど、おもしろかった。

番外編 「初めてのRuby

二日目の昼休みに買ったYuguiさんの本(サインありがとうございます)、まだ全部読めてないけどよい。特に一章は、「Ruby Way」とか「Rubyらしさ」とか言われているものを一生懸命文章で説明している(ように見える)のでかなり良い。特に、言語内DSLのことがいきなり一章に書いてあるのは結構すごい気がする。

にしても、言語を自由に改変できるLisp流のマクロを否定しているRubyにおいて、「言語内DSLが作りやすい」といわれるのはおもしろい。Matzの言語デザインの取捨選択が成功した結果なのか、偶然はまっただけなのか、あるいは、言語関係なく「DSLを使おう」という風潮が盛り上ってきている中で、文法の制約の中でがんばった人達の成果がDSLとしての使いかたを結実させたのか、興味深い。
さらにもうひとついうと、この言語内DSLの思想もやっぱりLispの後追いに過ぎない、とも言えるわけで…、あんまり考えまとまってないけど、RubyっていうのはMatzLispであり、Lisp on Railsなのかもしれないな。