「オブジェクト指向は、話としては何となく分かるけど、分かった様な分からない様な、気持ちの悪さを感じる」といった人は少なくないのではないでしょうか。
よく使いそうな機能をクラス化したり、色々なクラスに共通する要素を抜き出して抽象クラスを作ったりすれば良さそうな気がするが、それでオブジェクト指向になる…?
オブジェクト指向を使いこなせなくても、いちおう動くコードは書けます。ですが、設計の質を向上させるには、オブジェクト指向やデザインパターンを学ぶのが効果的です。
私も、SEとしてスキルアップしたかったので、オブジェクト指向に関して良書と言われる本を読んで勉強しました。
勉強して分かった事の1つが、「オブジェクト指向は役に立つ、そして面白い!」という事です。
私が実際に読んだ本の中から、オブジェクト指向の理解に役立ち、「オブジェクト指向は面白い」と思って貰えるお勧めの本を紹介します!
オブジェクト指向の初心者が概要を理解するのにおすすめ
どういった人にお勧めか
本書は、まだ設計やプログラミングの実務経験が無い人や、SEやプログラマーと働き始めて1~3年目位の人にお勧めです。
私が本書を読んだのは、オブジェクト指向について雰囲気程度にしか知らない初心者の頃でした。
具体的には、オブジェクト指向にすればコードを共通化できるらしく、それにはクラスや継承を使えば良いというを知っている程度でした。
この位のレベルの人は、本書で「なんでもオブジェクト症候群」と呼ばれる、オブジェクト指向を使っただけのコードを量産してしまいがちになります。
本書を読むメリット
本書を読めば、以下の事が理解できます。
- なぜオブジェクト指向という技法が作られたか
- なぜクラスという物が必要だったか、クラスを使用する事のメリット
- クラス化のコツ
- アジャイル開発とオブジェクト指向の関係
私はこの本を読んで、クラス内変数についての理解を深める事ができました。テクニックが身に付く本ではなく、オブジェクト指向型の言語のコンセプトの理解に役立ちます!
これ一冊を読めば、オブジェクト指向の概念が分かり、オブジェクト指向のメリットを生かした設計が(だいたい)できる様になります。
この一冊でオブジェクト指向を完全に理解して使いこなす事は無理ですが、基本事項として押さえておきたい書籍です。
サンプルコード付きでオブジェクト指向のパターンを理解したい人にお勧め
どういった人にお勧めか
- オブジェクト指向特有の文法を使ってソースコードを読み書きができる人
- クラス化や継承は使う事はできるが、どういうクラスを作るべきかは経験や勘に頼って雰囲気でやっている人
私は、本書を上で紹介した「オブジェクト指向でなぜつくるのか」の次に読みました。
「オブジェクト指向でなぜつくるのか」を読んだため、オブジェクト指向についてはそれなりに理解したつもりでした。
ですが、ある時、後輩からオブジェクト指向の設計のアドバイスを求められた時に、困る事があったのでさらに勉強するために本書を読みました。
本書を読むメリット
「デザインパターン」とは、IT系の先人がまとめた、23個の有用な設計パターンの事です。
デザインパターンとは、オブジェクト指向を使った23の設計パターンで、これを使う事で高品質な設計を行う事ができます!
将棋で言う定石の様な物で、デザインパターンを使って設計すれば、再利用性が高く、保守し易いコードを作りやすくなります。
本書をお勧めする理由は以下です。
- 23個のデザインパターンの特徴、使用するメリットを理解できる
- 各パターンを言葉とサンプルコードを使って解説しており、具体的な実装をイメージしやすい
- 1章毎に各パターンの解説とサンプルコードが掲載されているので、一通り読んだ後はパターンのリファレンス本として使える
この本を真面目に最初から最後まで読むのは結構キツイと思います。ざっと23のパターンを眺める程度にしておく事をお勧めします。
23個のパターンを覚えるためというよりは、各パターンの根底にある共通的な思想を理解すれば、オブジェクト指向でクラスを設計する際の方向性を身に付けることができます。
私は本書も読みましたが、下で紹介する「オブジェクト指向のこころ」と重複する内容が多いため、個人的には本書よりもそちらをお勧めします。
「オブジェクト指向のこころ」は内容的にやや難しいので、ワンクッション置く意味で本書を読むのはアリです。
オブジェクト指向の面白さまで理解したい人におすすめ
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
どういった人にお勧めか
- オブジェクト指向特有の文法を使ってソースコードを読み書きできる人
- クラス化や継承は使う事はできるが、どういうクラスを作るべきかは経験や勘に頼って雰囲気でやっている人
- 上で紹介した「Java言語で学ぶデザインパターン」ではまだ、実際にオブジェクト指向で設計するには不足を感じる人
本書を読むメリット
本書を読んで得られる事は以下です。
- カプセル化等をどうすれば効果的にオブジェクト指向に利用できるか理解できる
- 23個のデザインパターンの特徴、使用するメリットを理解できる
- 設計時に、個別のデザインパターンを上手く使うことでなく、設計全体として最適化するための思考方法を学べる
- 各デザインパターンの連携を学べる
少し難しい本ですが、オブジェクト指向関連の本では断トツでお勧めする本です!
込み入った説明も多く、斜め読み程度では理解するのは難しい本です。
また、設計時の考え方の話も出てくるため、一度もソフトウェアの設計書を書いた事がない人にはイメージし難い内容かもしれません。
ですが、本書の内容を読み解き、自分の物にする事ができれば、オブジェクト指向の有識者として自信を持てる様になると考えます。
本書で解説されている、複数のデザインパターンをク組み合わせる思考にはパズルの様な面白さがあると感じました。
ノウハウだけでなく、面白さを知る意味でも本書がお勧めです。
まとめ
上で紹介した本を整理すると下の表の様になります。
(あくまで個人的な目安です)
書名 | レベル | 読み易さ |
オブジェクト指向でなぜつくるのか | 初心者向け | 読み易い |
Java言語で学ぶデザインパターン | 初心者~中級者 | 読み易い |
オブジェクト指向のこころ | 中級者以上 | やや難しい |
全くの初心者の人の場合、先ずは「オブジェクト指向でなぜつくるのか」を読んだ後に、「オブジェクト指向のこころ」を読むのがお勧めです。
それなりに実務経験があり、オブジェクト指向についても講座等で学んだ事がある人は、いきなり「オブジェクト指向のこころ」を読むのがお勧めです。
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
ご参考になりましたら幸いです。
以上
コメント