9月2日に発売になったSandi Metz著の「Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby) 」の邦訳版です。
私はプログラムの世界には新卒で入社したSIerからJavaから学んだので、新卒の研修ではオブジェクト指向については基本から学びましたが、実戦経験ではRubyがほとんどです。
ただ、これまでプログラムを書いてきてもオブジェクト指向についてなんとなくこんなもんかなーと思いながら先輩エンジニア方のアドバイスもいただきながら書いてきました。
ここらで今一度整理してオブジェクト指向で実装するにはどうしたら良いかを学んでみたいと思い、本書を購入しました。(正確には会社で買ってもらったので、読み終わったら会社の本棚に行きます)
この本の英語版自体は、ドイツ人が持っていたので、ちらっと読んだことがあります。それは以前の記事でも少し紹介しました。本書を読む目的としてはドイツ人とのコミュニケーションを円滑に進めるためというのも大きいです。
この本の感想としては発売前に書いてくれている方がいたので、概ね同意します。
とくに注意書きの*3については、私も以前の記事で書いた通り違和感を覚えており、このブログの方に共感をいたしました。
さて、私独自の感想については以下のような感じです。
よかった点
- ダッグタイピングや継承のまわりは勉強になりました。特に継承する際、initializeをオーバーライドしてsuperを使ったりせずにpost_initializeメソッドなどを作ってそれをオーバーライドするというのは考えたことのなかった発想でした。
- コンポジションのところでOpenStruct使えば良いんじゃない?と思って読み進めたらイメージ通りに実装していて、自分の考え方はあながち間違っていなかったと自信が少しつきました。
悪かった点
- 邦訳が悪いのか、それともそもそもの英語が悪いのかわからないのですが、文章が少し冗長に感じました。コードで説明してくれているので、勘の良い人はコードのbefore、afterを見るだけで理解出来ると思います。
- リファクタリング:Rubyエディション を読んだときは心揺さぶられたのですが、そこまでのものではありませんでした。一般的なオブジェクト志向の知識を持っていて、Effective Ruby、リファクタリング:Rubyエディション を読んだことのある人はさらっと読む程度で良いのではないかと思います。
全体的にはAmazon的レビューで星3つ ぐらいでしょうか。