真 もわ爛漫

しゃーら、しゃーらしゃーら

Java The Good Parts

http://www.amazon.co.jp/exec/obidos/ASIN/487311487X/mowanetjp-22

Javaで良く理解しておくべき基本的な仕組み、ライブラリの概要、言語自体の機能などを総覧する本です。

個人的には、評価がとても難しいように感じました。まず、プログラミングの初心者でJavaから勉強し始めたという方であれば、読むのがおすすめです。すでにJavaに慣れている方であれば、読んでも良い、くらいでしょう。言語の細やかな部分について理解を深めたい方、あるいは『C++の設計と進化』が大好きな類の方にとっては、あまり必要ないかもしれません。

(蛇足ですが、某所で私が本を五段階で評価する際、通常の方が☆3とするところで私は☆1を用います、本来の基準で☆2や☆1であれば、私は評価を登録しません。本著は私の基準では☆1となります。本サイトで私基準の☆1について書評を書くのは今回が初めてですので、一応指摘しておきます)

章立てを見るのがまず良いヒントとなります。「型」「例外」「パッケージ」「GC」「Java VM」「コレクション、ジェネリックス」「RMI、シリアライゼーション」「並行操作」「IDE, JUnit, bug管理システム」。一見して、深く掘り下げていただきたい内容に満ちていて興奮します。一方、本著は208ページの厚さしかありません。

本著で取り上げられている項目の一つ一つが「グッドパーツ」であることはとても納得がいきます。もし万が一それらについて読者の方が知らないのであれば、勉強するべきです。そのため、初心者が最初にJavaの独習書を読んだ後にこの本を読む価値は、とても高いと思えます。私の考えでは、類する書籍として過去からいくつもあったわけですが (例えば私が最初に読んだその類の本は『Javaの格言』でした)、本著は比較的最近のビルディングブロックにも触れているという点では、参照するに値します。

一方、本著の説明は、それらの項目を深く理解した状態から更に、「グッドパーツ」を自分の道具箱の一つとしてさらに洗練させたものにさせるための、周辺的な、しかし深い議論についてはあまり触れていません。

上記の項目を見ていただくとわかりますが、どれを見ても特にJava固有のものではなく、概念としては一般的です。一部はJavaがその概念を世間に浸透させる一助となったというものもあり、一部はJavaが不完全な形で自身に組み込んだ例もあります。私が、当初本著で期待したのは、まさにその細やかな実装上の差異であり特徴であり、当初の目論見と現在との違いであり、あるいはJava5での変化の決定であり、微妙な差異による理論、実務の細やかな知見であったのでした。言ってみれば、Java阪の『C++の設計と進化』のようなものが、私の求める本著であったわけですね。

ただ全体を見てみますと、残念ながら全体として概論の域を出ず、また解説は、ちょっとばかり親Java的すぎる面があります。Javaこそが適切にすべてうまくやっており、うまくやれないのはどの言語でも結局一般的に見ればそうである、といった態度をとりがちな面があります。この手の話題で特に起源をこだわるLispなどの擁護者を意識しすぎている面もあります。ジェネリクスの話題で、なぜC++が先にそれらを持っていて、しかしJavaが初期にそういったものを取り込まなかったのか、ちょっと知りたかったのですが、本著では過去にジェネリックスの構築に必要な理論と実装例があった事自体、触れられていません。まるでJavaが起源であるかのようです。説明の一部を引用してみましょう。

「色々な意味で、ジェネリックシステムの設計者がランタイムに影響を与えずに、そのほとんどを実現できたのは、彼らの優れた技能を証明するものだ。こうしてできたシステムでは、タイプセーフが保証されるようコンパイラにおいて数々のトリックを駆使して、パラメータ化されたコレクションから取得したオブジェクトを正しい型に変更するために必要なキャストをコンパイラが挿入している」

本来私が期待するとすれば、なぜJava5以前にコンパイル時にキャストなしでジェネリックが導入されなかったのか、何がJavaジェネリック導入の壁となったのか、あるはそもそも、なぜ理論レベルでは十分確立している「型理論」すら「数々のトリック」という、言語特有のハックの類と一緒くたにするか、といった点です。私の考えでは、もしジェネリックの理解を深めるのであれば何がしか説明がある方が良く、またその背景の理解のためには、「数々のトリック」という混乱を招く表現を用いるべきではないのですが……

本全体として、選んだトピックについて特に問題があるようには思えない一方、その細かい説明において、やや薄い本著が読者の方々の期待をどの程度満たすのか、ちょっと微妙に思う面がある、というのが、私の率直な印象でした。

もっともそれは本著が有しえた価値の一部でしかなく、最初に申し上げた通り初心者にはなんであれ型やVMの力を理解していただく必要があるのも事実。そのため、依然として紹介する価値があるというのが私の考えです。

(また蛇足です。読者層を中級者以前に絞る類の本は一般に評価を高くつけづらいという事情があります。不必要な異論が提起される必要がないよう、こういった著作は注意して構築されるべきだと考えます)