オブジェクト指向の理解を妨げる悪書

日本電気株式会社(NEC)という大企業の名前を出してまで、よくもこの様な浅はかで読者を混乱させる本を、よりにもよって、このタイトルで出せたな。というのがこの本の第一の印象だ。また浅学だった自分がこの本を手に取り購入したという事実が非常に腹立たしい。このような眩暈のする悪書が未だに本屋の棚に陳列されているのを見て書評を書こうと思い至った。

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

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

本書、本当のタイトルは「EJBを用いたサーバーサイドJavaアプリケーション開発入門」だ。入門書にふさわしく内容は表面を軽くなぞるだけで極めて浅い。開発の広範囲に渡る内容を網羅的に説明しようと試みているのだが、その試みは失敗している。

特に「オブジェクト脳力開発」を標榜し、オブジェクト指向の説明を試みている。が、その試みはこの本の中で最も失敗している。それもそのはず。この著者はEJBに代表されるフレームワーク的技術体系をオブジェクト指向そのものと大きく誤解しているからだ。これらはJava言語の1実装でありれオブジェクト指向そのものでは全くない。その様な誤解を持って本書の記す内容が、さもオブジェクト指向を語っているように方向づけられている。それ故に、オブジェクト指向初学者に対し有害な内容となっている。

特にこの著者の文章で不可解なのは

機械の都合に合わせた設計ではなく、人間の都合で考えた設計がよい設計だからです。

と、冒頭の以下の一説を冒頭で紹介しておきながら後半Javaのコンテナ実装論に終始するくだりがある。この2重の態度は本書中あらゆるところに出現する。とにかく言っていることが冒頭と中身で全く異なるのだ。

この本の構成要素は概ね以下の通りだ。

  1. EJB/サーブレット等のサーバーサイドJava設計/実装
  2. UML
  3. デザインパターン
  4. アジャイルソフトウェア開発プロセス
  5. プロジェクトマネジメント
  6. リーダーシップ論/コーチング

どの内容も真面目に解説した専門書は1冊以上の分量がある。しかし本書は各トピックスは最長で150ページ程度だ。全体が300ページ程度の本書でこの内容を許容できるレベルの誤解を残しつつ説明しきるのは確実に不可能だ。記述の浅さはこのページ数の少なさに起因する。

最も主張したいのは、冒頭でも述べたとおり、この本を読んでもオブジェクト指向は身につかないし読み込んでも誤解するだけということだ。入門書としても非常に不適切と言わざるを得ない。尤も、2014年現在において既にメインストリームから退こうとしている技術でケーススタディなど上端じゃないという者が多いのだろうが…。有限の時間を有意義に過ごすためにもこの本を書店で見つけても購入しないよう注意を払うべきだ。

最も罪深い内容

引用するために本を開くのも頭痛がするのだが、本書において非常に悪いと思われる部分をいくつか紹介する。

デザインパターン編

4章のタイトルは「先人は偉い、超手抜きパターン習得法」でる。GoFらは決して手抜きをする為に記したのではない。

デザインパターンは23個あるが、4つくらいわかれば、あとはそれの応用である。

そしてその直後に以下のように続く。

ステート/ストラテジ(State/Strategy)パターン
ファクトリメソッド(Factory Method)パターン
コンポジット(Composite)パターン
テンプレートメソッド(Template Method)パターン

4つと言うからには、メタパターンでも説明してくれるのかと期待したが具体的なパターンを上げている。この著者本当にGoFのデザインパターンを読んだのだろうか。読んだだけで理解していなさそうな雰囲気である。そしてこれを覚えるだけで充分と言っている。きっと、こいつのコードは依存関係でクソみたいなスパゲティに違いない。オブジェクトの生成をファクトリメソッドで済まそうとしている辺りから強烈な腐臭が漂っている上に、StateとStrategyはの違いについても全く理解してない。そしてそれを恐ろしいことに読者に自慢げに薦めている。

そしてこの章は4つのパターンをたった27ページで紹介し終了する。その後の第5章「もう一歩進んだオブジェクト脳になるために」が始まる。はぁ…??いままで一切オブジェクト指向に関する説明はなかったにも関わらず一歩進もうとしている。正気か?

この後の内容は名詞抽出法とUMLを用いたオブジェクト指向分析設計となる。ここも20ページ前後で全く内容が浅い。こうなると理解できないほうが正常なのだろう。

なぜオブジェクト脳の人はそう考えるのか

119ページから始まる項の内容はタイトルだけ取り上げると「複雑なシステムを用紙に把握できるようになる」「変更に強くなる」「コスト・進捗」などである。はぁ…?もはやオブジェクト指向は関係ない。オブジェクト指向の有用性やアジャイルプロセスについてほんの5行ほど触れているのだがオブジェクト指向の勉強をしているつもりが以下のように

イテレーション型開発を行うと、当然ながら品質が向上します。居てレーションが2週間になる。動作するソフトウェアが2週間ごとにリリースされます。この実際に動くソフトウェアによって、できたアプリケーションの進捗を表すので、プロジェクトは安全になります。

などと突如アジャイルソフトウェアプロセスの説明となる。内容も最悪で、わかったような、全く誤解しきった説明だ。

オブジェクト脳に変えるトレーニング

7章から始まる内容は本書の中で一番理解しがたい。始まりはこうだ。

本章では、オブジェクト指向を理解している人が、他のプロジェクトメンバーをオブジェクト脳に変えるテクニックをご紹介いたします。

もはやコメントをするのもバカバカしいのだが、オブジェクト指向を習得したいのは自分でまだ未収得の状態なのだ。習得している人が周囲にいるかどうかは関係あるまい。なにしろ行動の主体は自分なのだ。まさか、この本を先輩のところにもっていって自分にオブジェクト指向を教えてくださいとでもするのだろうか。ここから悪夢のオブジェクト指向の教え方が24ページに渡り続く。

「教えられる人のタイプ別傾向と対策」と称し「何が分からないかもわからないんですタイプ」「ストールするタイプ」「わかりましたタイプ」「A型/B型タイプ」…最後のは冗談だが、と性格別の教え方を紹介しているつもりだろうが内容はまるでOLの星占だ。そして説明するべき事項は占いではない。

残りの章

はっきり言ってもうこれ以上内容を読んでないのだが、この後サーバーサイトJava設計/実装が150Pにわたり記述してある。冒頭にも述べたとおりEJBやEntitiyBean、DTO、サーブレットをオブジェクト指向そのものと勘違いした説明を延々としている。もはや読んでも読まなくても同じである。

最後に

冒頭にも書いたが、よくこんなふざけた内容で NEC の名前を出して有料で本を販売したなと思う。