黎明期のJava入門書の話

結城さんのJava入門書、「Java言語プログラミングレッスン」がJava7に対応した第3版が出るということで、思い出した話。
まずは出版おめでとうございます、おつかれさまでした。ただ、評価はちょっと厳しめです。

Java言語プログラミングレッスン 第3版(下) オブジェクト指向を始めよう


今回の「Java言語プログラミングレッスン」もやはり上巻でif、for、配列、下巻でクラス、インタフェースという構成になっていて、1冊にまとめれなかったものかという感がぬぐえない。
あわせて5040円というのは入門書として高価だし、上巻だけでは役にたたない。
まだ発売されていないので内容は見ていないのだけど、結城さんの本であるからには記述がすばらしいということに疑いの余地はない。だからこそ、二分冊という構成はもったいない。
また、通した構成としても、やはり古い。実際のプログラムでは配列よりListのほうが使う場面が多いにもかかわらず、コレクションに関しては下巻の最後におまけのように載せられている。


このような構成は、黎明期のJava入門書によく見られた構成で、多くの入門書が上巻でif/for/配列、下巻でクラス/インタフェースという分冊になっていた。なぜこのような構成になっているかというと、初期の入門書というのは、結城さんも含めて、矢沢久雄、林晴比古、高橋麻奈といったCの入門書を書いていた人が、C部分をJavaに移植したものというのが多かったためだ。Cを使って解説していた部分にJavaならではの話題を追加したという構成。
このうちで高橋麻奈さんの「やさしいJava」は1冊にまとまっていて、記述も丁寧で、説明が甘い部分も多いけどそれが却って読みやすさにつながって、人気があった。


ただ、やはりこれらのC言語入門書由来の本には構成上の致命的な欠点があって、それは「Javaの言語しか説明してない」ということだった。まあ、Cにもある入出力については説明されていたけど。
それ以外の入門書は、AWTコンポーネント配置したりGraphicsでアニメーションしてゲーム作ったり楽しいサンプルを作りつつ、プログラム的な解説はない愉快な本が多かったので、プログラムの入門には使えなかった。


C言語は、言語とstdioだけがあって、実用ライブラリは独自のものがコンパイラとセットになっていたので、C言語入門書ではライブラリについて扱わないのが当然だった。
ライブラリとコンパイラとをあわせて「処理系」と呼ばれていたけど、ライブラリはVisualCだとかTurboCとかそれぞれの処理系の説明書を見てくださいね、というスタンス。ちなみに、説明書といっても、当時の処理系の説明書の量はハンパなくて、それがひとつの箱に入ってるものだから、Professional版などは箱の厚さが80cmくらいあった。この厚さに「専門的なソフトで、素人が購入することは考えにくい」Professional感があったと言っていい。CD-ROMが普及すると説明書は全部CD-ROMに納められて、Standard版を買ってもProfessional版を買ってもその辺のソフトと同じ箱になったことに寂しい思いをした人も多いと思う。今では箱でソフトを買うということもないわけだけど。


話を戻して。
Javaの場合は、ライブラリや実行環境まで含めてJavaで、Cに比べれば言語とライブラリが密接になっている。入門編で言語部分、実践編でライブラリ、という構成にも無理がある。入門編でC相当、応用編でオブジェクト指向、実践編でライブラリとそろえると8000円近くになるし、こうなると統一的に扱った本を探すのも難しいし。結城さんの「Java言語プログラミングレッスン」も2005年の改訂2版までは、コレクションを扱っていなかった。「やさしいJava」にしても活用編まで含めれば5500円近くなって結構高い。


ということで、一冊でオブジェクト指向やライブラリの説明まで含まれた「独習Java」に人気が出たわけだ。一冊としては3780円で割高だったけど、何冊も買うよりいいしね。
ところがまた、この本の記述が難しすぎてひどい。初期の「Javaは難しい」という評判の1/5くらいはこの本の影響じゃないだろうか。3/5くらいはjava-houseというメーリングリスト高木浩光という人物のせいだと思うけど。
この「独習Java」は、改訂してもしばらくList/MapではなくVector/Hashtableを説明していたりして、「オススメしない本」から「読むべきではない本」にグレードアップした。


そうこうするうちに、Cからの移植ではなくJavaネイティブの入門書が出るようになって、問題は解決したかに見えたのだけど、時代はJSP/サーブレット時代になって、今度はWebまわりまで勉強が必須になった。
当時Javaを教える仕事をよくやってたのだけど、そうするとJava入門からWebまでの教科書を探すのも大変。Javaでプログラムを始めた人が一冊で作業に入れるような本がない。あと、テキストエディタコマンドラインベースで進めて、入力間違い探しやファイル名のミスなんかに10分20分費やすのが非常にもったいなかったんで、IDEも使いたかった。Eclipseは人気だったけど、授業中のムダな時間を減らすには力不足すぎて、当時はForteだったNetBeansを使うことにした。
というところで、結局テキストは自分で書いて、当時の自分のサイトに載せてたりして、それが本としてまとまったのが「創るJava」というわけやね。


いまだにEclipseの新しいのが出るたびに、入門での授業につかえるようになったか確認してるんだけど、あいかわらず使いやすくなってくれない。
Javaは準備がめんどうとか、はじめるまでの設定が多いとかいう、手順的な悪評は、90%くらいはEclipseのせいだと思う。


あと、このときに最初は「独習Java」をすでに使っていたのだけど「絶対に許さない、そう、絶対にだ」という感想をもった。次に検討して、使ってみたのが「やさしいJava」だったけど、簡単なところはやさしく解説してくれてるけど難しい部分は舌足らずであいまいで漠然としか解説してくれてなくて、あってもなくても同じという結果になった。
Java言語プログラミングレッスン」は、2冊あると物理的に重いのと、いい本ではあるけど職業訓練的に使うには、「レジ打ちに計算を教えるために数学ガールを読ませる」ようなミスマッチがあって、これは使わなかった。
矢沢久雄、林晴比古と言った人たちの本は、当時の時点でも古くさくて、検討すらしてない。


今はいろんな本が出てて、あとJavaとかJava技術者とかの位置づけもかわってきて、状況は変わったけど。
あ、ちなみに、「創るJava」の改訂の作業をしてるとか、ないです。期待してもらってる人には残念ながら。Java8対応の打診してみるかな。