えむけーろぐ

間違った事を書いていたらやさしく教えてください

『Rubyによるデザインパターン』を読んだ。

Rubyによるデザインパターンという本を読んだ。

Rubyによるデザインパターン

Rubyによるデザインパターン

 

2009年に出た本でもう絶版になってるっぽくて、定価は3800円なのにAmazonだと18000円とかしてたんだけど、千歳の文教堂に行ったら定価で売ってた。たぶん入荷されてから誰も買わなかったんだと思う。田舎の本屋は、絶版になって手に入りにくい本でも本棚に埋もれてたりするのでオススメである。

デザインパターンについてはそれそのものと、シングルトンやファクトリなんかの有名ドコロの名前くらいは聞いたことある程度の知識だった。

「ああこれはまずい、ちゃんと勉強しよう。」という気持ちになったのはつい最近で、学校のOSの授業の課題でプロセスのスケジューリングアルゴリズムをシミュレーションするプログラムを作った時だった。どういう設計にするか、どのクラスに役割を持たせるべきかとかを考えるときに、「普通はこうする」という定石みたいなものを知らなくてとてもつらかったので、デザインパターン勉強することにした。たぶん、Railsはかけるけどプログラミングできませんみたいな症状に陥っていたのだと思う。

この本は3部構成で、第1部にはデザインパターンの基本的な事項と、デザインパターンの5原則、そして軽いRuby入門の話が、第2部にはそれぞれのGoFパターンの基礎と、それをRubyでどう書くかという話が、そして第3部ではRubyのためのパターンの話が書いてある。

Template MethodパターンやStrategyパターンなどいくつかのパターンに関しては、すでにそれっぽいことをやっていた気がする。他人のコードを読んで真似した設計に、ちゃんと名前がついていたんだなという感想。

他のパターンに関しては知らなかったことが多かったけど、具体的なコード例や、実際にそのパターンが使われているコード(ActiveRecordActiveSupportなどRails関連や、WEBrickなど)を示してくれていたのでわかりやすかった。

十数個もパターンがあったので全部はちゃんと覚えきれてないけど、第1章に書かれている5原則(参考URL)を頭に入れておいて、あとはコードを書くときに必要に応じて参照する感じで良いと思う。

第3部にはRubyDSLメタプログラミング、あとはRailsの理念であるCoC(Convention over Configuration、設定より規約)の話も書いてあった。なんとなく難しそうで手を出しにくかったDSLメタプログラミングが、触りだけだけど第2部までの話を踏まえて書かれていて、その後にDSLメタプログラミングについて勉強するための良い足がかりになりそう。

かれこれRuby触り始めて2年弱になるけど、いきなりRailsを触ったのでちゃんとRubyの勉強したことなくて、Procとブロックの話だとか、method_missingを使った黒魔術の話だとか、なんとなく理解が疎かになっていたような部分についても、デザインパターンへの適用の仕方とともにわかりやすく書いてあって勉強になった。あとで、この本で実例として紹介されていたコードをもっと深く読み込んでみてもおもしろいと思う。