rubyhiroba で、すとうさんから学んだ事(後編)

はじめに

早いもので、rubyhiroba で、すとうさんから学んだ事(前編)というエントリを書いてから1年以上が経ったようです。そろそろ記憶も薄れてきたし、明日から RubyKaigi 2014 だし、続きを書いて〆ておこうかと思います。
ここからは、わしのノートにメモしてあった内容を曖昧な記憶で補完しながら書いていきます。

※ 注意
※ このエントリはほぼ実話ですが、細部については記憶の欠落や脚色があります。
※ 予めご了承の程、よろしくお願い致します。

あらすじ

ひょんな事から Rabbit のソースコードリーディングをする事になったわし達は…

ソースコードリーディングの様子

Rabbit は、言わずと知れた Ruby 製プレゼンテーションツールで、すとうさんが強力にメンテされている偉大なソフトウェアです。この時のソースコードリーディングで対象としたのは Rabbit::Canvas というクラスのソースコードでした。

require は、いつすべき?

参加者1「Ruby って、各ファイルで require するけど、それって DRY 的にどうなんスか?自分は PHPer なんスけど、PHP には __autoload() とか spl_autoload_register() ってのがあってオートロード出来るのに、なんで Ruby には無いのかなって思うんスよね」
わし(うおー。そこからかー)
参加者2「まぁ、Rails では const_missing をオーバーライドして、しかるべきファイルをオートロードする仕組みがあったりするよ」
参加者1「へー。なんで Ruby 本体に無いんスかねー。なんでスかねー」
すとうさん「あ、ちょうどなかださんがいるので聞いてみましょう。なかださーん」
わし(なかださん、なんで床に座ってパッチ書いてるの…)
なかださん「Rails でやってることなんだから、Gem にしちゃえば使えるじゃん。本体に入れる意味あんの?」
みんな「あざーす」

def_delegate 多すぎ

参加者1「なんか、よく分からないんスけど、def_delegate してる行が多すぎません?」
すとうさん「なぜ、多いと悪いと思いますか?」
参加者1「いや、なんとなくなんスけど、クラスの切り方がうまくいってないときにそうなりがちな気がするのでー」
みんな「ふーむ」

class comment について

参加者1「クラスの冒頭に、そのクラスを説明するコメントを入れたりしないんスか?」
すとうさん「特に必要無ければ入れませんね」
参加者2「ボクは入れる派ですねー。1クラスのソースが1画面に収まるくらいだったら書かないですけど」
わし(あ、これリーダブルコードで見たやつだ)
みんな「ふーむ」

Utils

参加者1「あっ!utils.rb なんてのがあるぞ!」
参加者2「utils っ! utils っ!」
すとうさん「見てしまいましたね」
参加者1「Rabbit::Utils 以外の module も書いてあるぞ」
参加者2「1 file 1 module じゃないんですかー。かー」
わし(怖ー!怖ー!コードリーディング怖ー!)

感想

こういった流れの中でも、すとうさんは楽しそうに場を進めていっていたように記憶しています。慣れているからなのか、人柄なのか、凄いなと思います。
とは言え、このソースコードリーディングは、恐らく場の趣旨とは違ったものになってしまったんじゃないかなと思っています。見ている分には勉強になりましたが、若干、心に闇が生まれました。
今後、これと全く同じ場はもう無いと思いますが、似たような場面に立ち会った際に、少しでも会話の場をハッピーな方向に変えられるような発言が出来るよう心がけながら、明日からの RubyKaigi 2014, RubyHiroba 2014 に臨んでいきたいと思います。


カテゴリー: 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です