アプリケーション開発言語としてのRuby
Ruby会議 2日目の最終セッションは、前田修吾氏の『Rails症候群の研究』だった。
前田氏は以前からRubyコーディング規約を公開するなど、Rubyを利用したアプリケーション開発についてコミットしている。
このセッションでも、RailsからRubyを利用し始めた開発者の特徴として次のような望ましくない傾向の指摘から開始した。
- protectedメソッドの多用
- Open classの多用
- Rubyが何かわかっていない
次に、これらの問題の由来について過去の経緯などを示したあとで、修正方法などについての見解を示した。
例えば、Open classの代わりにselector namespaceを導入することで(その代わりにOpen classを廃止し)、意図せぬクラスの書き換えを防ぐようにすることである。
次のリストは、jcodeというselector namespaceの下でのみString
クラスのlength
メソッドを置き換えるという疑似コードである。
class String def jcode$length return gsub(/[^\Wa-zA-Z_\d]/, ' ').length end end class Foo using jcode def bar p "あいうえお".length => 5 end end end
リストから分かるように、selector anamespaceを導入した場合、元のクラスに対する変更は、呼び出し側がnamespaceをusingして初めて有効となる。これによって、意図せぬクラスの書き換えからアプリケーションを守ることが可能となる。
前田氏は最後に、文書化された仕様の必要性を訴えてセッションを締めくくった。
まとめ
2008年のRuby会議は「多様性は善」というテーマにふさわしく、Ruby 1.9、JRuby、Rubiniusの他にも、名前だけが先行しているMagLev、本稿では触れなかったが2日目のセッションでにわかにMacの注目度を高めたLaurent Sansonetti氏によるMacRubyといった処理系の多様化、教育や業務といった利用シーンの多様化など、いろいろなレベルで多様性が強調されたものだった。
それと同時に、実装が多様化するということは、それらが正しくRubyの処理系であることをどこかで保証する必要があるということでもある。まつもと氏や前田氏のセッションでは、文書化された仕様の作成に対して、Rubyアソシエーションが前向きであることが明らかにされた。
それにつけても、テーマの設定、それにマッチした会場のセッティング、ムード作り、セッションの選定など、日本Ruby会議2008実行委員会は実に素晴らしい仕事をされたと思う。感謝と讃辞を送りたい。ありがとうございました。