『なぜ、あなたはJavaでオブジェクト指向開発ができないのか』
小森 裕介(著)
2005年
技術評論社
☆☆☆☆
Javaの文法は一通り理解していることを前提とした、非オブジェクト指向プログラマ向けの「オブジェクト指向モデリング」入門。サブタイトルは「Javaの壁を克服する実践トレーニング」。
読み物としてのオブジェクト指向モデリング・プログラミング入門。「はじめに」の冒頭の言葉が胸に突き刺さる。曰く、「なぜ、あなた
だけJavaでオブジェクト指向開発ができないのか」。おそらく著者の答えは、「(たとえオブジェクト指向プログラミング言語について理解していたとしても)オブジェクト指向モデリングができていないから」ということなのだろう。確かにこの状態は「自動車の運転の仕方は知っているが、道を知らないので目的地へ辿り着けない」というのと似ているな…。
全9章構成。「ジャンケン」「ばば抜き」「七並べ」といったお馴染みのゲームをJavaのコンソールプログラムとして再現することを通して、オブジェクト指向モデリングの手順を学んでいく。「ジャンケン」ゲームを作る第1〜5章までがJavaの文法項目をおさらいしつつの基礎編、「ばば抜き」を作る第6章は前半のまとめと後半への橋渡し、「ばば抜き」や「七並べ」といった「トランプゲームのためのフレームワーク」を作り、その上で「七並べ」を実現する第7〜9章が発展編か。話の流れに沿って読者が取り組むべき「Work」が多数用意されており、読者が体験的に学んでいく仕掛けになっている。
2005年に刊行された本だが、初版のまま順調に刷りを重ねているようだ(誤植もかなり訂正されている模様)。内容が良いだけでなく、安い紙を使って価格を抑えているのも高評価の理由の1つなのだろう。
プログラミング関連書籍としては小さめの版型の本で、サンプルコードの掲載量も多いため、290ページ程度あるがスラスラと読み進んでいける。正直、前半の第5章までの内容は「素晴らしい!」というほどのものではない。本書の価値は、「モデリング」の世界に読者を誘う、後半の第6章以降にある。
カプセル化、継承、多態性といったオブジェクト指向プログラミング言語のもつ機能について理解しても、「オブジェクト指向」についてわかったような気にならないのは、それらがオブジェクト指向の「目的」ではなく「手段」だからなのだろう。そう考えれば、オブジェクト指向の勘どころを理解するためにプログラミング言語の入門書をいくら読んでもあまり意味がないのかもしれない。そのテの本は読者が既に「勘どころ」を理解していることを前提としている。そして、「勘どころ」を体得するためには、(プログラミング言語の理解ではなく)「モデリング」や「デザイン(設計)」の経験を積まないとならないのだ。
本書を読んでいて感じたのは、80年代終わり〜90年代前半に数多く出版されていた「中上級者向けC言語入門」に書かれていたような内容を今の読者はどうやって学べばいいのだろう、ということ。C言語における「適切な関数分割」の原理・原則や「適切なモジュール設計」についてのノウハウはオブジェクト指向プログラミング言語を用いる際にも役立つハズなのだ(考え方として)。僕としては、そういう考え方を踏まえた上で、「構造化プログラミング」の自然な延長線上に「オブジェクト指向」を位置づけてくれた方がわかりやすいように思うのだが…(入門書では、「オブジェクト指向プログラミング」は「構造化プログラミング」の限界を克服するために生まれてきたもので、「その発想は180°異なる」とされていることが多い。「限界を克服するため」という部分はその通りだと思うのだが、「違い」よりも「同じ部分」をより明確に理解させて貰えた方が、「違い」についても精確に理解できるのではないか…、という気分)。
CD-ROM等は付属しないが、本書に掲載されているJavaのサンプルコード(と、有志によるC#版、C++版、Ruby版のコード)は出版社の
サポートページからダウンロードすることができる。
本文260ページ程度(他に、「Work」の模範解答、索引として20ページ程度)。

0