いくつものJava

「わかりやすいJava・わかりやすいJavaEE」シリーズの中に書いていないこと

「新わかりやすいJava 入門編」の裏話

 「わかりやすいJava」の刊行から5年経ったので、新シリーズを刊行することになりました。その最初が「新わかりやすいJava 入門編」です。3月下旬には書店に並びます。本当は、あとの本も同時に並ぶ予定だったのですが・・・。

f:id:tkxlab:20150310072000j:plain

OCJPを参考に

 わかりやすいJava入門編は、数年間、AmazonランキングJava言語部門の1位を続けて、Javaの教科書のベストセラーでした。ただ、欠点は分厚いことと、オブジェクト指向がほとんど含まれていないことです。そこで、今回の改訂では、オブジェクト指向まで取り込むことが大きな目玉でした。

 オブジェクト指向をどこまで取り込むかは、自然に決まりました。本は読みやすさを考えて、当初500ページという目標をたてましたが(最終的に530ページ)、基本文法の解説も、前作の水準を落とさないようにしなくてなならず、悩ましいところです。

 そもそも、前作が入門編とオブジェクト指向編になっていたのは、サンマイクロSJC-P(Sun Certified Programmer for the Java Platform)試験に対応するためでした。Javaの世界では最も信頼できる認定試験でしたが、膨大なJava言語の文法をまとめて試験するので、全体を解説するには2分冊以外に方法がなかったのです。

 SJC-Pを引き継いだ、オラクルの認定試験がOCJP(Oracle Certified Java Programmer)試験です。OCJPは、内容を、Bronze、Silver、Goldの3段階に分けました。これは、とても賢明な変更だったと思います。学習者が段階的に目標を持てるようになったからです。特に、Bronzeは、Javaプログラマのファーストステップとして、オブジェクト指向の理解を目指す範囲になっています。

 Bronzeには、クラス、カプセル化、継承、抽象クラス、インタフェース、ポリモーフィズムまで、オブジェクト指向の中心課題が全て含まれます。ここまで学習すれば、Javaプログラマとして独り立ちできるはずです。オブジェクト指向を乗り切れば、後は、「単なる」文法だけですからね。ですから、自然な成り行きで「Bronze」に対応する範囲にしようと決めたのでした。

基本文法のスリム化はどうやって

 それにしても、前作は基本文法だけで500ページもあったのですが、これをどこまでスリム化できるのか。内容を詰めるだけなら簡単ですが、わかりやすさや学習のしやすさといった「質」の部分を維持しなければなりません。これが難しいところです。

 まず、80ページもあった練習問題の解答を、すべてウェブに移すことにしました(リンクをブックマークしておけば、スマホでも見れるので便利ですよ)。次に、ビット演算はほとんど使わない上、OCJPでも出題されないので割愛しました。また、配列はオブジェクトですから、newで作成するタイプの詳しい解説は、オブジェクト指向の解説に移しました。

 この他、準備編や冗長な解説をまとめたりすることで、こまごまと圧縮し、さすがに半分は無理でしたが、300ページ弱になりました。練習問題が少し減ったかもしれません。しかし、ご安心ください。必要な量は確保しました。また、サポートウェブで補充問題も無償配布することにしています。

オブジェクト指向を正面からわかりやすく

 オブジェクト指向は、Java学習の難所です。
 最初にオブジェクトとは何か、何がいいのか、これをうまく解説しなくてはいけません。特に、オブジェクト指向設計の考え方をまず理解する必要があるのですが、これをうまく教えてくれる本は希少です。

 ようやくオブジェクトの意味がわかり、コンストラクタを作ってカプセル化もできるようになっった時、次の難所がまっています。継承ですね。特に、スーパークラスにサブクラスのオブジェクトを代入する効果と、オーバーライドメソッドの関連をわかりやすく伝えることが、かなり難しい。また、ポリモーフィズムが働くと何がいいのか、「具体的に」教えるのはさらに難しいと思います。

 おまけに、インタフェースときたら、「インタフェース」という名前に込められた「考え方」をどう説明したものか、常に迷うところですし、なぜインタフェースでなければならないのか、どういう目的で使うのかなど、わかりやすい説明とうまい適用例を示すことがまた難しいのです。
 これらは、自分が理解しているだけではダメで、何らかの解説テクニックが必要な部分です。

 前作「オブジェクト指向<入門編>」は、これらの課題の解決のために、わかりやすい図を使うという点ではうまくいったのですが、例題やストリー展開に、改良の余地がありました。

f:id:tkxlab:20150310070629j:plain

オブジェクト指向を解説するのも、これで3回目です。ここらで「総決算的な決定版を書きたいなぁ」と考えました。


出来上がった内容は、読者の評価を待つしかありませんが、書店で手に取られる方は、ぜひ、13章「オブジェクトとは」を見てください。そこから、本書のめざすものがわかると思います。
 それから例題等のプロジェクトファイルを最初から配布する形式にしています。これを動かしながら、具体的にオブジェクト指向を学ぶことができます。どの例題も、意味のある具体的なものになるよう工夫しています(バナナ、Dog、勇者の類は出てこない)。

後に続くのは

 シリーズですから、冒頭に書いたように続刊を予定しています。
 それは、Java言語の残りの文法を解説する「マスター編」(仮題)(Sliver、Goldに対応)です。これができると、JavaSEとJavaEEをつなぐミッシングリングが埋まり、一応完成です。少し休んで、今夏あたりから、制作を再開しようと思っています。さすがに、一年以上続く仙人生活に疲れ果てたので。

 昨年から「Java塾」の開講に向けても準備を進めています。大学や専門学校でJavaを教えていますが、そのインターネット版です。対面指導の「塾」ですから有料になりますが、真剣にJavaプログラマを目指す人たちの役に立てればと思います。最初の開講は6月頃になる見込みです。