console.blog(self);

技術、読んだ本、いろいろ。

メタプログラミングRuby

メタプログラミングRuby を読了した。いつ買ったんだろう。少なくとも1年以上前…。

難しかったけど、面白かった。よく使うものは理解しやすかったし、あまり使っていなかったのものは、ほーと思った。

付録がいい感じ。本書の内容をコンパクトにまとめてる。「付録A よく使うイディオム」ではメタプログラミングではないけど、Rubyっぽいイディオムが紹介されている。メタプログラミングに興味のないプログラマでも、Railsを使っていれば、自然に使っているものだと思う。

付録A よく使うイディオム

特に「付録C 魔術書」は、本書のテクニックが短いコードで紹介されていて、あとから読み返すのに便利だと思う。

付録C 魔術書

名前を知らなかったけど、これまでも使っていたものがたくさんある。配列引数、クラス拡張ミックスイン、遅延評価、遅延インスタンス引数、ミミックメソッド、モンキーパッチ、ネームスペース、nilガード、特異メソッド、などなど。

こうやって振り返ってみると、JavaScriptでも使っている、使えるテクニックがいろいろあると思った。関数型言語的共通点があるからかな、たぶん。

「付録E から騒ぎ」ではNullオブジェクトを扱っているけど、こんな一文があって、最後に癒やされた。

初期化されていないオブジェクトの参照はオブジェクト指向プログラマの宿敵である(Java プログラマに、今まで見た NullPointerException の数を覚えているかときいてみよう!)。

Javaやってた人間からすると、Rubynilガード、ほんとうにすてき。

言語はやっぱり適材適所で、それぞれの言語の得意分野がある。僕はWebサービスRubyで書いていて、本当に楽しくて幸せ。もっとよいコードを書けるようになりたい。

メタプログラミングRuby
Paolo Perrotta
アスキー・メディアワークス
売り上げランキング: 181,357