May 08, 2008

オブジェクト脳のつくり方


オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

キーワード:
 牛尾剛、オブジェクト指向、デザインパターン、アジャイル、攻略本
NEC勤務で超美人かつ性格がよく野望を持った女性の恋人募集中である著者(著者紹介より)による、オブジェクト指向の攻略本。以下のような内容となっている。
  1. 不完全主義のススメ
  2. たったこれだけでいいオブジェクトの基礎――だけど究極
  3. 演習:社長命令・起立!
  4. 先人は偉い、超手抜きパターン習得法
  5. もう一歩進んだオブジェクト脳になるために
  6. なぜオブジェクト脳の人はそう考えるのか
  7. オブジェクト脳に変えるトレーニング
  8. ようこそC3Jプロジェクトへ
  9. 最終イテレーション、そして最強の課題
  10. 付録A オブ脳外伝 EJBのススメ――EJBポイント解説
  11. 付録B 実践C3Jプロジェクトのユースケースシナリオ例
  12. 付録C オブジェクト脳度チェックリスト
  13. 付録D ステレオタイプの定義
オブジェクト脳というのは、オブジェクト指向が感覚的に理解できている状態と示されており、この本はオブジェクト指向の解説書であり、また、オブジェクト指向をマスターするための勉強の攻略本と著者が示している。そして、どちらかというと、詳細の厳密性よりも、オブジェクト指向の概念把握を主題にしているので、完全無欠なものではなく、イメージをつかみやすいものにしているとある。なので、仙人のイラストとか著者のおちゃめな写真とか砕けた文体が多く載っており、楽しい構成となっている。

オブジェクト指向の基礎であり、かつオブジェクト指向の究極の要素は以下の5つらしい。
  • オブジェクト
  • クラス
  • 継承
  • カプセル化
  • ポリモーフィズム
これだけの要素をマスターすればよいが、これらをちゃんと説明できる技術者が日本にはあまりいないと示されていた。それぞれの説明がトータルで16ページでされている。説明は小学生でも分かるように、コンピュータのシステムを一切考えずに本質的なところだけを簡単に説明している。例えば、オブジェクトとクラスの関係の部分についての説明の一部。
 具体的に存在するもの、例えば「牛尾くん」とか「あなた」とか「あなたのPC」「牛尾くんのPC」はオブジェクトで、それらをひとくくりにした定義、例えば「人間」「PC」がクラスになります。
 はい、「クラスとオブジェクト」修了。コンピュータのことさえ考えなければとっても単純です。
(pp.17)
といった感じで、普通のオブジェクト指向解説本ならもっと詳しく書くべきところをあえてこのように単純化している。

また、ポリモーフィズムを理解できたときにオブジェクト脳が芽生えると示されている。そしてその説明には、つい立を隔てた社員と社長の図で示されており、なんだか感覚的に分かった気になる。単純な説明のほかにちゃんとサンプルコードも載っている。

4章はよく使うデザインパターンが示されている。デザインパターン自体は23個ほどあるが、必要なのは基礎となる4つだけらしい。
  • ステイト/ストラテジー (State/Strategy) パターン
  • ファクトリーメソッド (Factory Method) パターン
  • コンポジット (Composite) パターン
  • テンプレートメソッド (Template Method) パターン
あまりJavaでコーディングしたことが無かったので、このようなデザインパターンは勉強なる。

著者によれば、1章から4章までが一番重要な内容となっているので、4章までをマスターすればこの本の役割は終わりとある。5章はオブジェクト指向の設計方法の例が示されている。あとは読み物として6,7章が参考になる。

6章では、オブジェクト指向の利点として、ドキュメントレスでシステムの把握が楽になり、変更に強くシステムの変化を受け入れやすいとあった。そしてオブジェクト指向はどちらかというとアジャイルな設計方法なので、設計書など最後に書いてしまったほうがよいとあった。また、大規模システムでも問題ないと。

ただ、問題点としてオブジェクト指向を理解させるための教育コストがかかるということと、システム開発の契約形態が従来型のウォーターフォールなどの手法で標準化しているので、イテレーション型開発をするときに問題になるとある。確かに各フェーズごとに設計書などを納品する必要があるというときに、イテレーション型開発をしていたら納品物が不完全なままになってしまうなと思った。個人的には、プログラムよりも設計書ばかり書いていて変化に柔軟ではないウォーターフォール開発よりも、アジャイルでドキュメントレスな開発のほうが楽しいし面白いなと思う。アジャイル開発を経験したことがあるだけに。

7章では、オブジェクト指向をマスターするために必要なことが示されている。以下はオブジェクト脳に変えるための基本的な考え方らしい。
  1. 教えるときは詰め込みすぎない
  2. 最初から最適化することを考えない
  3. 相手がわかっているかどうかは相手の反応で判断する
  4. 相手の理解度によって、教え方をかえる
  5. 「〜すべき」「〜で当然」を適用しない
  6. 教えるのに時間がかかることを恐れない
  7. ほめる
著者のこの基本的な考え方は、とてもやさしくまた新人技術者にとっては健全な成長ができるものだなぁと思った。これを実現するには、最初にプロジェクト配属前に2週間はトレーニングを行うようだ。自分もこのような環境で働きたいなと思った。自分の組織だけとは限らないと思うけど、プロジェクトは大抵タイトスケジュールで、ゆっくり教育を受けている余裕も無く、戦場で独力でサバイバルしているようなもので・・・・。なので、自分の下に人が来たときはこれを忘れないようにしよう。

この本はオブジェクト指向の概念を理解するにはよいと思う。説明を見て分かった気になる。けれど、分かった気になる反面、実際にコーディングするときは迷うと思う。そこは著者も示すとおり、実際に自分でコーディングして理解していくしかないとある。なので、自分もがんばってオブジェクト脳を完全なものにしたいと思った。

前提知識としては、Javaの基本文法は理解していることだと思う。また、オブジェクト指向の要素やデザインパターンの要素を厳密に知りたい人はこの本では足りないと思う。あくまで、Javaの基本文法を理解したうえでオブジェクト指向の概要を知りたい人向けだと思う。そのような人にはよい本だと思う。

技術本は読んでいて退屈なものが多いけど、これは読んでいても楽しめるものなのでよいと思う。

読むべき人:
  • いまいちオブジェクト指向がわからない人
  • デザインパターンがわからない人
  • アリスター・コーバーン/マーチン・ファウラー/ケント・ベックの3人のなかで、はげていないのは誰かを答えられない人
Amazon.co.jpで『オブジェクト指向』の関連書籍を見る

にほんブログ村 本ブログへ 役に立ったらクリック☆  bana1



トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星