4月から Metaprogramming Ruby 2 を読んでて,やっと Part 1. Metaprogramming Ruby まで読み終えたので簡単にまとめる.引き続き Part 2. Metaprogramming in Rails を読む.
ここまで読んで,今まで「何となく Ruby を書いてた」自分に気付くことができたし,Rails や Gem のコードを見ても今まで以上に「読める感」を感じられるので非常に良かった.
Metaprogramming Ruby 2: Program Like the Ruby Pros (Facets of Ruby)
- 作者: Paolo Perrotta
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2014/08/18
- メディア: ペーパーバック
- この商品を含むブログを見る
なぜ洋書?
メタプロ本は既に日本語に翻訳されていて有名だけど,これは Ruby 1.9 系をベースに書かれた Metaprogramming Ruby の翻訳本で,洋書だと Ruby 2 系をベースに追記された Metaprogramming Ruby 2 が最新版になってる.内容的に少しの差ではあるけど,今後も主に使うのは Ruby 2 系だってことで Metaprogramming Ruby 2 を買った.
洋書を読むことで英語も学びたいという気持ちもあるけど,読むスピードが圧倒的に下がったのは言うまでもなく,実力不足を痛感した.
Metaprogramming Ruby: Program Like the Ruby Pros (Facets of Ruby)
- 作者: Paolo Perrotta
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2010/01/31
- メディア: ペーパーバック
- 購入: 1人 クリック: 14回
- この商品を含むブログ (4件) を見る
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2010/08/28
- メディア: 大型本
- 購入: 18人 クリック: 533回
- この商品を含むブログ (127件) を見る
(追記)
とうとう第2版の翻訳本が発表された!
- 作者: Paolo Perrotta,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/10/10
- メディア: 大型本
- この商品を含むブログ (3件) を見る
学べたこと
まさに Ruby のメタプロと言えるポイントを学べた.まだ「何となくわかってる」レベルのところもあるから,継続的にコード書いたり,読み返したり,誰かに説明したりして理解を深めていく.
- Open Class
- Monkeypatch
- Refinement
- Dynamic Method
- Ghost Method
- Scope
- Scope Gate
- Flat Scope
- Callable Object
- Proc
- lambda
- Aliases
- Binding
Ruby 2 系で追加されてるところ
例えば Refinement の解説が追加されてたりする.オープンクラスで拡張するとその影響がグローバルに変わってしまうから Ruby 2 なら refine で影響を狭めることができる.
module MyRefinement refine String do def reverse 'my reverse' end end end p 'abc'.class p 'abc'.reverse using MyRefinement p 'abc'.class p 'abc'.reverse # >> String # >> "cba" # >> String # >> "my reverse"
Ruby Gold を目指す
5月末に Ruby Association Certified Ruby Programmer Gold version 2.1
を申し込んだ.Ruby Gold はメタプロの問題が多く出るのでしっかり理解して自信持てるように.