Ruby会議2010を見てた

大変ありがたいことに今年もRuby会議の動画配信があったのでこの三日間はそれなりに時間をとって見るようにした。以下は雑他なメモなど。主に自分向け。

君のクラスの最高の偽物

前田さんの。[録画]

オープンクラスの後から定義をいじれる(メソッドを再定義できるなど)という点に、その影響の範囲を限定する仕組みを加える提案。面白いというかほしい。クラスボックス――と呼ばれていたが、実はクラスボックスとは違うものだったらしいという話がキーノートでちらっと出ていた。何て呼べば? で、たとえばこういう例。

class X
  def foo; puts "X"; end
end
module A
  def foo; print "A -> "; super; end
end
module B
  def foo; print "B -> "; super; end
end
module C
  overlay_module X, A
  overlay_module X, B
  X.new.foo # 「B -> A -> X」と表示される
end

このようなoverlay_moduleを実装し、それを使って(ここでいうところの)classboxを実装している。わずか47行だとか。(必要となるcaller bindingも別に実装。)ネストしたメソッド定義の仕組みについて、定義されるメソッドの有効範囲をネストの内側だけに限定するよう改良。test-allにパス!

Unix修正主義

akrさんの。[録画] [プレゼン資料]

stdioまわりの話。知識としては持っているはずなのに、へー、ほーと思ってしまう。話をきくと一つのメソッドが配慮のかたまりだということがよく分かる。まあ、こうして、いつの間にかダメになっていくんだなあと。後半急ぎ足になったけどそちらも興味深そうであった。結局、というのもなんだが、デザインの話になっていく。重要なんだ。

Unix使っていると、こういったstdioだとか、あと端末だとか、そういうところに何度か戻ってくることがあるように思う。だんだん理解の深さが変わっていったり、あるいは角度が変わっていたりする。がっちりきっちり理解していないと困る、といわけでも実際にはない。「こういうものだから」という態度でなんとかやりくりすることも少なくなくて、その辺はコストのかけ方のバランスではあるのだけど。まあ、ちょっと離れているとかんどころを忘れちゃってたりするし。

キーノート

まつもとさん。[録画]

メソッドをコピーするmixの提案。あれば欲しそうなな。難しい点、要検討が必要な点もあるようだけど。

でもこれが入るとincludeと混ぜるなキケンっぽい。あるいは単に混ぜられないか。(質疑のやり取りかすると後者っぽいかな。)で、そうなると移行期にはinclude用とmix用、それぞれにライブラリができてしまってそれらは混ぜるなキケン、てなことにならないのかな? と思った。どうもmix導入するなら移行をすすめたい感じだったのだけど、ホントにincludeはいらなくなるのだろうか。質疑では定数用名前空間としてmoduleを用いるケースについてmixだけではめんどうなんじゃないか、という点が指摘されていたが、それだけってこともないような気がする。

名前空間といえば、今のRubyでmoduleが名前空間のように使われているがあれがイヤだという意見もあった。高井さん? かな。時間がかかりそうなので後でどこかで、ってなっていたけど、普段気にしたこともないようなところだったのでどういう話だったのかが気になる。こういうのは現場にいないとなかなか興味を満たすことができないんだな。っていうか、気になったらことはその日のうちにつかまえるくらいの気持ちで行かないとってことか。

A Metaprogramming Spell Book

黒魔法の話。[録画]

かと思ったけど、そうでもなかったみたい。このあたりで作業しながらだったので後半あまり見られていないのだけど。

見てた範囲でいうと、メタプログラミングをやったことないよっていう人や、Railsのコードを読んでみようかなっていう人によさそうな内容。助走にちょうどよい感じ。基本的なところから丁寧に説明があるようだった。そのまま雑誌記事とかになるとうれしそうな。と思ったが、本が出てるんだった。本の中ではどこから始まって、どういうつっこみ方をしているのだろうか。というわけでメタプログラミングRubyメタプログラミングRuby[rakuten]は近いうちに買おう。(すでに品薄みたいだ。)

Lightning Talksから

messagepack/messagepack-rpc @frsyuki - 単純に面白い。便利そう。気にはなっていたんだけど〜というプロダクトの一つで、だけどもついこのあいだkumofs経由で触れたくらいで、という感じだった。標準添付にできれば! という話も出ていて、たしかにそうなるとうれしそう。でもリリース間隔が短い感じがするので、標準添付になるとそのあたりのスピード感の違いがどうなるか。 [プレゼン資料]

babushka @ben_h - 早口でちょっとわからなかったけどキーワードだけでも気になる。test-driven sysadmin for rubyists。後で調べてみたところ、システムの状態を調査しながら定められた管理作業を行ようなツールのようだった。test-drivenというのは状態の調査結果に応じてっていうあたりなのだろうか。まだ読み切れていないのだけど、バラツキのある状態でのセットアップなんかには便利なのかも。変な例だけどハンズオンでセットアップ〜な場面とか。なかなか面白そうなので後で少し動かしてみようかと。babushka.meにデモビデオがある。コードはgithub

ReVIEW @takahashim - ReVIEW自体には興味があることはあるが手を出すところまでは。LT本題のほうにも関心をもちかけたのだが、会社の業務としてやってくっていう話だそうなので、まあ、品質とかそういった面で恩恵?を受けられるのかな? というところ。とちぎで森田さんとしゃべったあたりのことが今でも欲しいなあと思ってはいるんだよな。

Lingo @KazkiMatz - デモに期待してたのだけど時間切れで残念。 開発者さんのblogに発表資料デモビデオがあるので後でそれを見た。ビデオがあるので後でそれを見た。やっぱり自分で使って試してみたい。が、これサービスとして提供されるんだろうかしら。もしそうなら情報の取り扱いがどうなるが気になる。lingo-proj.com

twitterから

VIMのほうで発表していた人がyokohama.vimを開催するのだとか。これ→Yokohama.vim #0。VIM使いではぜんぜんないのだけどちょっと行ってみようかしら。見てるだけになりそうだけど。

VIMのためのスーパー補完システムってことでいいのかな? 資料コード。なんかすごそう。Ruby向けで機能が不十分なところがあるそうで、なんとかなんないかなあという話も。これも試してみないとな。

Rubyによる分散ストレージシステムの実装

RICOHの方による発表。[録画] @suzumura_ss

quanpで使っている分散ストレージシステムCastoroの紹介。事前にコードをながめた人によるとNFSで何かやってるっぽいね? という話があったのだけど、要するにAPI的なものの他にファイルシステムからのアクセスが可能になっているということのようだった。これはこれでうれしい場面はたしかにありそう。(もちろんquanpには必要な機能だったわけだし。)遅延レプリケーションをするために最初のpeerにはRAIDが必要になる。この遅延具合いを調整することはできるのかしら。できるのならアプリケーション側で待つとかも可能なのかなと。まあ、それはそれでどうなんだってことかも。

Castoroがあきらめたものの一つにidの一意性というようなのが挙げられていたけど、ちょっとよくわからなかった。ストレージ上でidが重複するってどういう状況なのかな? アプリケーションが正しいidを知っていれば大丈夫っていう話だったが。

あとpeerからgatewayにmulticastしてたのはgatewayが複数いるからなのかな? オンエアではプロセス構造を再確認できなかったのでちょっとわからなかった。……ので確認したところ、複数いるようだ。clientはgateway〇ちの中からどうやって自分のgatewayを選ぶのだろう(ここはmulticastじゃなかったような…… どうだっけ?)。という意味では設定関係がどうなっているのか気になってくる。peer追加とか。

資料を見返すなり、コードを見るなり、かな。

RWikiと怠惰な私の10年間

咳さんの。[録画] [プレゼン資料]

いやおもしろかった。全文検索で使った自前のストーレージシステムというのが、OODBを昇華させたものということで、かなり気になる。すでに出てるやつ、ではないのだよね? きっと。

Memory Profile for Ruby

ささださんのところの学生さん。[録画]

リアルタイムに計測結果を見られるのはすごくわかりやすい。ただ動かすためにはRuby本体にパッチが必要ということで、すぐにどうこうということではなさそう。1.9.3に入るといいなーという感じのようなので期待。とりあえず今の段階でのコードをgithubに上げてくれという意見。コードが出てきたら試してみたいかな。

雑感

三日目の日曜はさすがに動画を見るのに目が疲れてきてしまって後で見るモードに。ぐるんがー[録画]は見ておかなきゃ。試しておきたいものもいくつか。忘れないうちに。いきおいがなくならないうちに。

中継のなかった部屋がいくつもある。まあ全部は無理だろうし、一部でもあるだけありがたい。ただまあそうなるとやはり現場へって感じだが、うーん、チケットを買う時点でどれくらい内容がわかってるんだっけ? COOKPADのんとか盛り上がっていたようだなあ。