nekoTheShadow’s diary

技術ブログとして始めたはずが、読書&愚痴ブログになりました(´・ω・`)

『Java本格入門: モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで』(技術評論社)を読んだ。

Java本格入門 ?モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

Java本格入門 ?モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

ネット上で好意的な書評を見る機会がちょくちょくあり、そこから興味を持って読んだのですが、評判通りの良書でした。

本書はいわばJavaのリファレンス本であり、Javaの機能がさまざまな観点から紹介されています。したがってタイトルには「入門」とあるものの、「プログラミング自体が初めて」とか「プログラミングの経験はあるがJavaはまったく書いたことがない」という人がターゲットではなく、「Javaの経験はあるがまだまだ初心者の域にある」とか「Javaの経験は長いが、その場その場の付け焼刃でここまで来てしまった」という人にお勧めできる本だと思います。「タイトル詐欺」というよりは「タイトルで損をしている」タイプですね(´・ω・`)

Javaリファレンス系の技術書はいろいろと存在しますが、本書がそれら類書と違う点として「現場寄り」のスタンスがあります。その典型といえるのは「Chapter.8 ファイル操作を極める」。全14章の本において貴重な1章をファイル操作に割くあたりに、現実のプログラミングにおけるファイル操作の困難さを反映しているといえるのですが、着目すべきはその中身。この章では特徴的なファイル操作(書き込みや削除など)をいくつか取り上げているのですが、その話題ごとに[Java6以前の書き方」と「Java7以降の書き方」が併記されています。冗長ともいえるほどの併記の連続は「Java7においてファイル操作系apiがどのように便利になったのか」ということが一目瞭然ですし、またプログラミング言語界の老舗であるJava特有の事情――つまり古いバージョンのJavaコードをメンテナンスせねばならないときにも、この併記は役に立つはずです。

あるいは「Chapter.9 日付処理を極める」。Java8において導入されたDate And Time APIを扱ってもよかったはずの章ですが、しかしDateとCalendarという過去のAPIについてもきっちりと記述されています。Date And Time APIが便利なことはいうまでもないのですが、現実のプログラミングにおいてはライブラリや資産の関係上、DateやCalendarを用いることは多々あり、「Date And Time APIにすべて置き換え」とはいきません。ほかにも利用する機会が多いにもかかわらず、落とし穴も多い文字列操作を扱った章があったり、Java8の目玉機能であるStreamに関する章では現場視点のサンプルが提供されたりと、その「現場志向」は徹底しています。またところどころにコラムやTipsが紹介されるのですが、それらからも筆者たちがJavaを日常的に扱っていることがわかり、好感と信頼が持てるといえるでしょう。

最後に少しだけ指摘をあげておくと――まずアノテーションやリフレクションについては少し記述が薄いように感じます。いわゆるメタプログラミングですね。RubyLispなど、メタプログラミングを得意とする言語をよく書く身から見ても、Javaメタプログラミングへの機能は充実しており、これを解説しない手はなかったのでは? 一方でデザインパターンを扱った「Chapter.12 デザインパターンをたしなむ」。これはいらなかったように感じます。もちろんデザインパターン自体を否定しているのではなく、本書が扱うべきテーマとしてはふさわしくなかったように思うということです。いうまでもなくデザインパターンJavaの専売特許ではありません。せっかくJavaの専門書ならばJavaに特有のテーマを扱ってほしかった。

とはいえこれらの欠点は些細なものであり、本書全体の評価を損なうほどのものではありません。総合的に見て良書だと思います。

Part2があるとすれば、より上位者向けになるのか、あるいは「JavaEE本格入門」になるのかしら(´・ω・`)