RubyKaigi2013最終日
RubyKaigiも最終日。食べログという会社のステッカーだけだったMacbookも、最終日にはこんな姿になっていました。
10時からは Async programming is all about programming synchronouslyを聴きます。dRubyはRubyのライブラリの中でも最も好きなもののひとつで、仕事でもいろんなところで使っています。
非同期処理は結局、最終的な同期処理をどうするかが一番大事なポイントだというお話でした。それから、非同期処理シングルスレッド派の人々(ぼくもどちらかというとシングルスレッド派ですが)がいるけど、処理の進行状況がわかりにくくなって自然なコードを書くのが大変なのではないかというお話がありました。selectなどでI/Oイベント待ちしてむにゃむにゃやるくらいなら、イベントを受け付けた時点でスレッド生成して処理をさせちゃうのと大差ないと。
まあ言われてみるとそうなんですよね。マルチスレッドだと共有リソースのことを考えないといけないのが一番のネックなのかなと思うのですが、イベントループなどで処理の流れが追いにくいコードを書くのとどちらがよりベターなんだろう。そのあたりを隠蔽できるようにするといいですね。
それから If you do not enter the tiger’s cave, you will not catch its cubのセッション。なんかタイトルが変わってましたが忘れちゃいました。DCIのお話だったので楽しみにしていたもののひとつです。
DCIでぼくが一番気にくわないのが、オブジェクトにextendで振る舞いを割り当てるところ。そんなことするくらいなら、素直にdelegateで書けばいいじゃないかと思っていたのです。ただ、このセッションではdelegateはやっぱりダメだよというお話をしていました。なぜならdelegateは振る舞いを行うのが本来の役割を持つのとは別のオブジェクトになってしまうため、本質的におかしいと。selfが本来のオブジェクトじゃなくなるし、当然superも使えない。
でもextendはいやだよねということで、 castingというgemライブラリを作ったそうです。これがなかなかよさそう。影響範囲をブロックなどで限定できるところがよさそうです。あとでコードを読んでみましょう。
あとは Fewer Constraints, More Concurrency.というセッション。並列処理の効率を高めるためにシーケンシャルな処理を減らしてロックを減らすのですが、そのためのアプローチの方法などのお話でした。
今日のお昼もスポンサーのherokuのごちそう。今日はなんと人形町今半のお弁当でした。めちゃくちゃおいしかった。11時半ころ、ホールを移動していたらMatzがお弁当を並べていました。そういえば昨日はMatzからお弁当を手渡しされました。お弁当屋さんみたいでおもしろい。気づかないでお弁当屋のおじさんと思っていた人もいたみたいです。
午後もcode metrixのお話とか(一応、仕事ではjenkinsでmetrixは取っているのですが活用するところまでいっていない)、TRICKの表彰式ですごいRubyコードを堪能したり、 Unfactoringというセッションでリファクタリングとチューニングのお話を聞いたり(ActiveSupport::Callbackの改善とかActiveRecordのクエリ生成周りのチューニングによる高速化のお話とかおもしろかった)、いろんな環境でのCのコンパイルは大変だよというお話を聞いたりしました。
帰りにはK和さんとO川さんと居酒屋さんによっていろいろお話して帰りました。おもしろかった。UstもあるしRubyKaigiはもう参加しなくてもいいかなと思っていたこともあったけど、やっぱり参加してみるととても楽しかった。この三日間、遠いお台場まで行くのが全然苦ではなくて遠足に行く気分でした。RubyKaigiに参加したからってすぐに技術力があがったりはしないんだけど、これがモチベーションの上がるきっかけになり、家でよりたくさんコードを書くようになって、いろいろなセッションによって植えられたいろいろな種が近い将来のぼくの中で芽吹いていろいろな思考とアウトプットに結びつくといいなと思います。そうなるように鉄は熱いうちに打とう。