O'Reilly の「HeadFirst オブジェクト指向分析設計」を読んでみた。

オブジェクト指向について、
  分かっているつもりであまり分かっていなかった
ということに気付かされました。
ソフト系の開発に携わる人には、例外なくお勧めしたい。
詳しい内容は続きをどうぞ。

こんな人にお勧め

  • ソフトウェアを作っているが、オブジェクト指向的ではない
  • オブジェクト指向について詳しく知りたい
  • まともなソフトウェアエンジニア/プログラマになりたい
  • 手元には財産といえるコードがない
  • クラス設計ができない、やろうとしても矛盾にぶつかる

読む前の前提知識

JavaC#を知っている読者が対象とされていますが、
読んでみた感じでは、特に知らなくても問題ないと思います。
(実際、自分はJavaについて知りませんし、C#も触り程度しか知りません。)
どちらかというと、次のことの方が重要だなと感じました。
  これまでにソフトウェアをいくつか作ったことがある。
こういう人なら、言語の壁はあまり問題にならないでしょう。

独特のHeadFirst調

O'ReillyのHeadFirstシリーズは、かなり読む人を選ぶと思います。
というのも、単に説明を並べるだけではなく、
実際に本の中の人が、こちらに語りかけてきます。
あるいは、本の中の人が動き回っている様を、客観的に見ます。
Amazonの中身検索などで、購入前にチェックしておいた方がよいでしょう。
(自分は、HeadFirst調が大好きです。)

名前の通り、設計に関するノウハウが詰まっている

流れとしては、次のように構成されています。

  1. こんなソフトを作ってくれ、という依頼がくる。
  2. 設計を行う。
  3. うまくいかない。
  4. ノウハウの紹介、適用。
  5. 成功。
  6. 顧客は大喜び。

大事なのは、「設計を行うがうまくいかない」というバッドケースと、
ノウハウの紹介、適用により、成功する」というグッドケースが含まれている点。
特にバッドケースは、読んでいても「これでいいんじゃないの?何がダメなの?」と思えるような、
現実に起こりがちなバッドケースも多く含まれており、
うまくいかない」という例を見て、納得させられます。


その上で、「では、どうすればよいでしょう!考えてみてください。」と
読者に対して解決を迫ってくるのですが、
簡単に解決できる読者なら、きっとこの本は必要ないでしょう。
悩んでも、解決できず、次のページをめくります。
すると、そこには、ヒントが書かれています。答えはまだ先です。
ヒントを参考に考えて、それでも解決できないときは、さらにページをめくります。
そこで初めて、ノウハウの紹介が出てきます。


このように、「問題提示」→「考える」→「ヒントの提示」→「考える」→「ノウハウの提示」→「考える
といった具合に、考える部分がとにかく多いので、読み切るには結構な時間がかかるでしょう。
しかしその分、仮想体験的な実体験として、記憶に残りますし、
実践環境でも生きてきます。

具体的な良い点

  • 新規ソフトウェアの開発において、どこから手をつけていいのか分かるようになる
  • オブジェクト指向分析設計により、拡張性・変更容易性が格段に上がる
  • 大きなプロジェクトもこなせるようになる
  • 設計に関して必要な資料を作成することができるようになる
  • 複数人での開発において、分担作業がやりやすくなる

身近にオブジェクト指向について詳しい人がいる場合は、
分からないことがあってもすぐに聞けるので、吸収が早いでしょう。

負の財産に気付く

今まで書いてきたコードが、実は負の財産であった(あるいは、負の財産になりかねなかった)ことに
気付くこともできました。
あなたの書いているそのコードは、他の誰かを苦しめていないでしょうか。
少しでも不安な方は、後ろからグサリと刺されないように、良い設計を心掛けましょう。

現場に1冊、できれば手元に1冊

現場に1冊あれば、みんなで共有して読めますし、
必要に応じて、ノウハウを参照することもできます。
手元に1冊あれば、好きな時に読み進めることができ、
多くのことを自分のものにすることができるでしょう。