読者です 読者をやめる 読者になる 読者になる

お布団宇宙ねこ

Haskell ねこ

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

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

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

ピアソン・エデュケーションの『Rubyによるデザインパターン』を読みました。

Webエンジニアとして働いていながら、今までデザインパターンというものを知らずにきてしまっていて、先日チームの先輩エンジニアからコードレビューで「ここはアダプタパターンで書いたほうがすっきりするよ。」と指摘されなんだそれは???となったのがきっかけでした。そんなデザインパターン初心者の自分にその先輩エンジニアが貸して下さったのが本書でした。

どんな本?

内容としては、ギャング・オブ・フォー本『オブジェクト指向における再利用のためのデザインパターン』に登場する23個のデザインパターンのうち14個について、 Ruby のコードを例に解説してくれています。はじめはデザインパターンと聞いて、勝手に難解なイメージを抱いていましたが、本書は比較的 Ruby 経験が浅い人でも読みやすい内容になっている印象を受けました。

また、2009年に初版が発売されておりだいぶ古い書籍です。さらに本書の出版社が書籍から撤退したために絶版状態となり、入手が困難な状況です。 自分はお借りした本書を読了後に、Amazonの中古で定価+¥2000くらいで購入しました。

感想

当初知りたかったアダプタ( Adapter )パターンについても、そこまで多くのページ数は割かれていませんが、そのパターンがどんなものかを知るには十分な量でした。章によっては、デザインパターンの解説と共に、実際にそのパターンが利用されているプロダクトの例をあげていたのも良かったです。

今まで漠然と書かれているように見えていたコードも実は規則性が存在するものがあるという発見は、自分がコードを見る時の新たな視点をもらったような気がしました。

また、本書を読み進めていくなかで、このデザインパターンいいな、使ってみたいなと思うことが時々ありましたが、そんなときは本書に書かれていたこの言葉を思い出すようにしています。

デザインパターンの適切な使い方は、今日あなたが持っている問題に対応できるだけの柔軟性をシステムに組み込むことで、それ以上ではありません。 パターンは便利なテクニックですが、それ自身が目的になってはいけません。

  • 1.2.5 必要になるまで作るな(p.13)より

「必要になるまで作るな( YAGNI )」というエクストリーム・プログラミングにおける原則があるように、必要以上の機能や設計の柔軟性は、デザインパターンを適用しなかったものと比較したときに大差が無かったり、却ってコードの可読性を下げる恐れがあるので使い所は考えましょう、という本書からの警告も念頭に置きつつ読んでみるとよいかと思います。

読んでみて自分がこのデザインパターンは使うことありそうだなと思ったのは

  • Adapter パターン
  • Decorator パターン

くらいでした。と言っても Rails を書いていると Observer や Iterator は普段意識せずに使うことができるので、自前で特定のデザインパターンを適用するみたいなケースはあまりないのかもしれません(自分が本書で紹介されているようなデザインパターンを適用するような問題にぶち当たっていないだけかもしれませんが)。

一方で Convention over Configuration (CoC)の章は、普段自分が Rails を書いてあまり意識することのなかったディレクトリ構造やファイル名の規則について、なぜそうなっているかという疑問を解消するのに役立ちました。書かれているコードだけでなくディレクトリ構造やファイルの名称なども含めて1つのデザインパターンなんだというのを再認識させられました。

まとめ

Rubyデザインパターンを学びたいという人は読むといいかもしれません。定価では買えないので泣きながらAmazonの中古を買うか、偉い人に頼んで買ってもらうかしましょう(´・_・`)