概要
オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby”, 待望の翻訳版!使いこなせるようになるととても便利なオブジェクト指向ですが, 「なんとなく」の理解で使っていると, 大きな罠にかかってしまいます。本書は, 保守性を上げて運用コストを下げるアプリケーションをつくるために, クラス設計から基本概念, 継承のテクニック, ダックタイプ, そしてテスト設計まで, 幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
こんな方におすすめ
オブジェクト指向プログラミングをしたことがある人 オブジェクト指向設計に悩んでいる人
著者から一言
だれしも自身のベストを尽くしたいものであり, また意味のあることに取り組みたいと思うものです。さらに, ほかの条件が一切変わらないのであれば, その過程を楽しみたいと思うでしょう。
ソフトウェアを書くことを仕事とする私たちは, 信じられないほどに恵まれています。ソフトウェアをつくることはこのうえない喜びです。物事を完成させるために自らの想像力を注げるのですから。私たちは, 一石二鳥の仕事を選んだのです。書いたコードが役に立つという確信のもとに, 純粋にコードを書く行為を楽しめます。生み出すものには価値があります。私たちは, 今日の現実をつくる仕組みを構築する, 現代の職人なのです。建築士や土木技術者に負けず劣らず, 自分たちの業績に胸を張ることができます。
これはすべてのプログラマーが共有することです。とても情熱的な新人から, 見るからに疲れはてた年長者, あるいはスタートアップで働くプログラマーから, 盤石な企業で働くプログラマーまで共通します。プログラマーはだれしも自身のベストを尽くしたいのです。意味のあることに取り組みたいのです。過程を楽しみたいのです。
そのため, ソフトウェアがうまくいかないと, とりわけ困ってしまいます。質の悪いソフトウェアはプログラマーの目的を阻害し, また, プログラマーの幸福を妨げます。かつての生産性は損なわれ, 速かったものは遅くなり, 満足していた心は不満でいっぱいになるでしょう。
この不満は, 物事を終わらせるためのコストが高くなりすぎたときに現れます。私たちの内面にある計算機は常に動いており, 達成した総量とそこに費やされた努力の総量を絶えず比較しています。仕事のコストがその価値を上回れば, 努力が無駄になったように感じます。プログラミングが楽しいとすれば, それは自身を有能にしてくれるからです。反対に, 苦痛であるときは, 自分はもっとできる, いや, すべきであると感じているのではないでしょうか。プログラマーの喜びは仕事の足取り次第です。
この本の題材は, オブジェクト指向ソフトウェアの設計です。アカデミックな重い本ではなく, 1人のプログラマーが書いた, コードをいかに書くかという話です。今日の生産性が翌月も翌年も持続するようなソフトウェアをいかに構成するかを教えます。現時点で成果をあげ, それでありながら将来へも適応できるアプリケーションの書き方を示します。この本を読むことで自身の生産性を高め, そして, アプリケーションの運用コストを最初から最後まで下げられるようになるでしょう。
この本は, プログラマーの良い仕事をしたいという欲求を信じ, プログラマーにとって必要で, 最も役立つ道具を授けます。この本はまったく実践的ですので, その核心では, 楽しさをもたらすコードを書く方法についての本であるとも言えます。
Sandi Metz(サンディ・ メッツ) 成長と変化を乗り越え存続してきたプロジェクトに取り組んできた30年間の経験を持つ。ソフトウェア ・ アーキテクトとして, デューク大学にて毎日コードを書いている。デューク大学のチームでは, 15年以上進化しつづけてきた大規模なオブジェクト指向アプリケーションを抱える顧客の, 実際の問題を一丸となって解決している。全力で取り組んでいることは, 有用なソフトウェアを極めて実践的な方法によって世に出すこと。本書は, 何年にも及ぶホワイトボード上での議論を凝集したものであり, オブジェクト指向設計についての生涯にわたる会話から導き出された理論の集大成となっている。Ruby Nation, Gotham Ruby User's Conferenceにおいて過去数回発表を行った。現在, ノースカロライナのダーラム在住。