Javaは,趣味のプログラミングから大規模な業務システム開発まで幅広く使われている。UNIX系のマシンが学校にあり,そこでC/C++,Javaへと言語の進化をそのまま追うようにJavaプログラマになったという人もいるだろう。また,今では情報学科などのプログラミングの授業や,企業のプログラミング研修で,C言語と並んでJavaが多く採用されている。

 このように書くと,Javaのプログラマは数が多いように思えるかもしれない。しかしなぜか,求人が多く,深刻なプログラマ不足といわれているのもJavaなのである。

 また,言語仕様の詳細な部分について異常なまでに詳しかったり,機能や処理速度ではなくコーディングの美しさにひとかたならぬこだわりをもっていたりする言語マニアが多いのも,(筆者の思い込みかもしれないが)Javaプログラマのようだ。

 言語マニアを目指すもよし,不足しているJavaプログラマになってプロフェッショナルを目指すもよし,これから紹介する参考書を読んでプログラミングの腕を磨いてほしい(ただし,プログラミングについて書いてあっても,マニアやプロになる方法は書いてない)。

 ここでは,Javaの入門書,定番になっている本,中/上級者向けのノウハウを紹介している本などを取り上げる。自分のレベルに合わせて最適な本を見つけてほしい。

Java入門者が最初に読むべき本

 Javaは,すぐにユーザー・インタフェースをデザインするということにはならないためか,とっつきにくい言語と思われがちである。JDK(Java Development Kit)ベースのいわゆる“生Java”の解説書は,Visual Studio .NET(VS .NET)のようなビジュアルな開発環境を使った本と比べると圧倒的に画面写真や図が少ない。授業や研修などでは多く採用されるのに「Javaって面白そう,簡単そう」と感じてプログラミングを始める人があまり多く感じられないのは,そういった視覚に訴える部分が乏しいせいかもしれない。

やさしいJava
第2版

高橋 麻奈 著
ソフトバンク
パブリッシング 発行
2002年3月
551ページ

 そんな中,図をふんだんに使い,プログラミング経験のない人が勉強を始めるのに適しているのが「やさしいJava 第2版」である。著者は,JavaだけでなくC/C++の入門書などを書いている高橋麻奈氏。“やさしく”書くのが高橋氏の持ち味で,本書も例外ではなく,とてもやさしく書かれている。Javaを最初のプログラミング言語に選ぶなら,定番としてぜひそろえてほしい一冊だ。A5判で手ごろなサイズなので,通勤/通学時間や,少し空いた時間に気軽に読むのにも向いている。

 本書では,コマンド・プロンプトやJDKの使い方を,画面上で入力する文字だけでなく,ボタンのクリックからメニューの選択にいたるまで,ていねいに解説している。サンプル・コードには引き出し線が付けられ,説明も過不足なくある。コードだけを見て,意味がわかるのがいい。また,サンプル・コードも最初に登場するものはできるだけ短くしてあり,コードが長すぎて初心者が抵抗感を抱かないように工夫されている。

初歩から実用までじっくりJavaを勉強するなら

Java言語
プログラミングレッスン(上)(下)
結城 浩 著
ソフトバンク パブリッシング 発行
1999年6月,7月
計673ページ
本誌執筆後,本書の改訂版が出版された

 パソコンの前に座り,時間をかけて勉強したいなら「Java言語プログラミングレッスン(上)(下)」がよいだろう。この本も,プログラミングを知らなくても理解できる内容になっている。著者は,さまざまな言語の入門書を多く執筆しており,本誌で「結城浩の動物相談室」を連載している結城浩氏。結城氏の著書のわかりやすさには定評がある。他の本を読んだり,講習を受けたりして,Javaの学習を始めようと思ったが挫折してしまったという人,自分がどの程度のレベルなのか自信がないという人――そうした人にお薦めである。

 本書も,平易な言葉使いと,文字が詰まり過ぎないレイアウト,ていねいな書き方など,取っ付きやすさを感じさせている。また,さまざまな方法で楽しさを演出している。各章は「はじめの会話」で始まり,「おわりの会話」で終わる。この会話は,先生と生徒によるもので,「はじめの会話」は章内で説明することへの期待や疑問,「おわりの会話」は章で説明したことの補足などがやり取りされている。

 「やさしいJava」との大きな違いは,上下2巻に分けたこと。上巻は,変数の型やステートメント,配列など,プログラミングの基本要素が書かれており,下巻は,ほぼ1冊オブジェクト指向の説明になっている。Cなど,Java以外の言語をある程度知っていて,基本的なことはインターネットなどで調べればよいと考えているならば,いきなり下巻から始めてみるのもいいかもしれない。

早くJavaのスキルを身に付けたいなら

エッセンシャルJava
2nd Edition

宮坂 雅輝 著
ソフトバンク パブリッシング 発行
2003年8月
403ページ+CD-ROM

 Javaを学ぶ前に,他の言語を勉強したことがあるなら「エッセンシャルJava 2nd Edition」がよい。早く実用的なプログラムを作り,後からそれを説明するといったスタンスで,すでにプログラミングについて知っている人が,退屈することなく読み進められるようになっている。

 1章でJavaの概要,2章で配列/演算子/型などのプログラミングの基本的事項,3章でオブジェクト指向を説明し,4章ではラップ・クラスやStringクラスなど,Javaがあらかじめ備えているクラスの使い方などを解説している。入門的内容から,実用的な機能を作れるようになるまで記述に無駄がない。他の言語を知っているなら当たり前という事柄にはあまり触れず,説明も簡潔だ。さっと学習して,早くプログラミングを始めたい人に向いている。

中級以上を目指すなら原典を手元に置いておこう

プログラミング言語
Java 第3版

Ken Arnold,James Gosling,David Holmes 著
柴田 芳樹 訳
ピアソン・エデュケーション 発行
2001年6月
597ページ

 C/C++,Perlなど,さまざまなプログラミング言語には,言語を開発したプログラマ自らが書いた原典が存在する。それと同じようにJavaにもやはり,開発者が書いた原典がある。「プログラミング言語Java 第3版」である。初版が1997年に翻訳されたが,第2版は翻訳されず,米国だけで版が重ねられ,そのまま第3版も出版されないのかと多くの日本のJavaプログラマを不安にさせた一冊だ。

 現在の第3版は初版からは大きく改訂され,ページ数はほぼ倍になった。初版の著者は,Javaの開発者として有名なJames Gosling(ジェームズ・ゴスリン)とKen Arnold(ケン・アーノルド)の二人だったが,第3版では新たにオブジェクト指向技術の研究家であるDavid Holmes(デビッド・ホームズ)が加わっている。

 本書の目的は,プログラミングの基本をすでにマスターしている人にJavaを解説することにある。オブジェクト指向についても,ある程度の用語説明はあるが,概略は理解していることを前提にしている。初心者には難しいだろう。

 そこで,この本を読みこなせるかどうかを簡単に判別する方法を紹介したい。第1章の「はやめぐり」を読むのである。ここには,Javaのオブジェクト指向プログラミングの基本概念が書かれている。「Hello,World」を表示することから始めて,変数,コメント,定数,制御,クラス,配列,文字列,クラスの拡張,例外処理,パッケージなどが,なんとたったの30ページにまとめられている。ここを読んで理解できれば,本書を読むレベルにあると思っていい。逆に,さっぱりわからないと思ったら,他の本などで勉強し直してから挑戦する方がよいだろう。

 第2章以降は,クラスとオブジェクト,インタフェース,トークン/演算子/式,スレッド,ガーベジ・コレクション/メモリー,パッケージなどを全20章で説明している。Javaの基本部分の説明には十分なボリュームだ。ただし,Swing,アプレット,ネットワーク接続,データベース接続などを使用するための実践的な技術についてはあまり書かれていない。

 この本は中級以上のプログラマが,自分の作っているプログラムの考え方が正しいかどうかを確認したり,ほかにもっとスマートな方法がないかを調べたりするため,手元に置いておくのに適している。

Java言語仕様を学ぶ定番中の定番

Java言語仕様 第2版
James Gosling,Bill Joy,Guy Steele,
Gilad Bracha 著
村上 雅章 訳
ピアソン・エデュケーション 発行
2000年12月
448ページ

 厳密なJavaの定義を調べたいというプログラマには「Java言語仕様 第2版」がお薦めだ。中級Javaプログラマにとっては定番の一冊だが,初心者が読みこなすのは困難な本である。

 本書では,Java言語の構文とセマンティックス,アプリケーション,プログラミング,インタフェースのコア・パッケージの完全な仕様を解説している。Javaの各種言語要素が全体の中でどのように考えられているのか,どのように設計されたか,どのように使われることを想定されたのかが系統的にまとまっていて,思考を整理するうえでも役立つ。

 さまざまなプラットフォーム上でJavaの動作を確実なものにするには,方言のようなものを徹底的に排除しなくてはならない。本書の目的は,そのために厳格で正確な言語を規定することにある。

 自分のコードが正しいのかどうかを確認するには,この本に照らし合わせるのが最良だ。サンプル・コードも多く掲載されていて,正しいプログラムを書くための指針となる。

優れたJavaプログラムを書くための厳選3冊

Javaの鉄則
エキスパートのプログラミングテクニック

Peter Haggar 著
ドキュメントシステム 訳
ピアソン・エデュケーション 発行
2000年8月
282ページ
Java言語で学ぶ
デザインパターン入門

結城 浩 著
ソフトバンク パブリッシング 発行
2001年6月
480ページ+CD-ROM
Java言語で学ぶ
デザインパターン入門

マルチスレッド編
結城 浩 著
ソフトバンク パブリッシング 発行
2002年6月
565ページ+CD-ROM
Java
プログラムデザイン
第3版

戸松 豊和 著
ソフトバンク パブリッシング 発行
2002年2月
357ページ

 中級以上のプログラマが,レベルアップを図るための本も紹介しておこう。まずは「Javaの鉄則 エキスパートのプログラミングテクニック」である。

 冒頭の「はじめに」にも書かれているように,45ページで紹介したScott Mayers氏が著した「Effective C++」のスタイルを真似ている。効果的なJavaプログラミングを行うための多くの鉄則をリストアップしてまとめたものだ。

 1章は間違えやすい一般的なテクニック,2章は主にequalsメソッドについての注意,3章は例外処理,4章は性能向上のためのTips,5章はマルチスレッドの注意点,6章はクラスとインタフェースに関するノウハウとなっている。

 各項目の関連性はないので,最初から通読するだけでなく,気が向いたところを拾い読みすることもできる。小さく(A5判)軽いので,暇な時間に好きなところから,といった読み方もできるだろう。

 中級者向けの書籍は,日本人著者による良書もある。前述した結城氏が書いた「Java言語で学ぶデザインパターン入門」がその一冊だ。再利用性を高めるプログラミングを行うためのデザイン・パターンをわかりやすく解説している。デザイン・パターンの原典とも言える「オブジェクト指向における再利用のためのデザインパターン 改訂版(ソフトバンク パブリッシング発行)」は,有名だが難しいのが今ひとつ。Javaプログラマでデザイン・パターンを勉強するなら,原典より本書の方がよいだろう。

 原典でまとめられている23個のデザイン・パターンを,簡単な言葉で詳しく説明しており,理論の説明だけでなく,実際にJavaを使って具体例を示し,その効果を示している点がいい。練習問題も付いていて,実際に頭と手を動かして読み進めれば,デザイン・パターンを自分のものにできるだろう。

 もし本書が気に入ったなら「Java言語で学ぶデザインパターン入門 マルチスレッド編」もお薦めだ。同じ筆者による,マルチスレッドに関する12個のデザイン・パターンの解説書である。

 実際のプログラミングでよく使われるパターンが選ばれており,実践的な内容になっている。数が絞られているぶん,個々のパターンについて深く説明されている点もありがたい。

 最後に一冊。Javaプログラミングの効率を高めるにはどうすればよいか悩んでいるなら「Javaプログラムデザイン 第3版」を読んでほしい。いかに実際のプログラミングに,便利なプログラミング技術を生かすかというノウハウが説明されているからだ。

 実践的な内容が豊富に盛り込まれており,仕事としてプログラミングをしている人が迷うような問題に的確な答えを示している。カバーしている範囲は限られるが,「仕様だとか細かいことはいらないから,さっさと解決策を教えてよ」と思っている人に最適だろう。