日本 RubyKaigi 2011 に行ってきた
最後の日本 RubyKaigi です.
出張の関係で 2 日目の終盤からしか参加できていませんが, 印象に残ったものを簡単にまとめてみました.
Advancing Net::HTTP by @wycats さん
* net/http は並列化できない
* 並列化するためにフォークして net2/http というのを作っている
* 並列化するにあたって Reactor パターンを採用した
ergをすごく偲んで by @m_seki さん
* カスタマイズは誘惑する
* 安易にオプションを増やすことは「仕様の議論からの逃避」
Visual Glitch, using Ruby by @ucnv さん
* とっさにグリッチが必要なときは sed が便利
* チェックサムを壊したりすると表示自体できなくなることがある
* 安全にグリッチするにはどうするか
* 仕様に従って壊すのがマナー
* 動画はキーフレームを抜くことでいい感じに壊せる
ネタ的な発表かと思いましたが, 技術的には思いのほか真摯であり, とても参考になりました.
発表者の方は GitHub に aviglitch というライブラリを後悔されていますが, API, ドキュメント, spec など, あらゆる面で well-mannered な印象です.
純粋に, Ruby でカジュアルに低レベルなバイナリ操作をする上で参考になりそうです.
Ruby遺産とレガシーコード修理技術 by @hsbt さん
* tDiary のコミッタ
* tDiary は 25 年使われる予定
* 既に 10 年使われている
* 各レイヤごとのテスト
** ユニットテスト
** エンドツーエンドテスト
** インテグレーションテスト
* 機能の追加は慎重に削除は大胆に
** プログラマが知るべき97のことにおける @miyagawa さんの言葉
* 継続的インテグレーション
** travis-ci を使えば GitHub リポジトリで CI できる
長期にわたってソフトウェアを育ててきた経験に基づく, 実践的なお話.
機能の追加に慎重になる, というのは, 特に業務だといろいろなしがらみがあって難しいけど, 常に意識して行きたいものです.
No と言える力重要.
O/R Mapper を支える技術 by @makotokuwata さん
* プログラミング言語の機能は分解, 結合, 抽象化
* SQL にはそれらが欠けている
* それらを補完するのが O/R Mapper
* Ruby で SQL を組み立てること自体は抽象化ではない
* named_scope で抽象化しよう
* プログラミング言語の進化は抽象化機能の進化
* モダンな O/R Mapper の機能
** QueryObject の操作
** Collection のように振る舞うこと
** SQL の抽象化
* N + 1 問題
** DataMapper の Eager loading はうまくやっている
去年ぐらいから仕事で O/R Mapper 的なものを PHP で実装していることもあり, 実装寄りの話では一番参考になりました.
スピーカーの桑田さんのお話は去年の Kwartz についてのものもそうでしたが, 洞察に溢れているだけでなく, 非常に明瞭でわかりやすく, とにかく引きつけられました.
まとめ
昨年から引き続き参加しましたが, レベルの高い技術者の考えに触れることができ, 多いに刺激を受けました.
また, 英語を使いこなし, 海外からの参加者と対等にコミュニケーションを取っている方も多く, その店でも自らの力不足を実感させられました.
スピーカー, スタッフ, 参加者の皆様, お疲れさまでした!