「パーフェクトJava」発売
「パーフェクトJava」発売しました。
- http://gihyo.jp/book/2009/978-4-7741-3990-6 (技術評論社のページ)
- http://www.amazon.co.jp/dp/4774139904/ (アマゾンのページ)
是非、ありえるえりあに対する寄付だと思って買ってください。
各章の反省と自己評価を書いてみます(Part1とPart2)。
1章 概論
特に難しいことも書いていないので導入部として軽く読んでください。
「オブジェクト指向」と名づけた節に、いわゆる教科書的なオブジェクト指向の説明を一切載せていない少しこだわりです。今さら、オブジェクト指向の三大要素を列挙するのが気恥ずかしかったのもありますが、オブジェクト指向にまつわる言葉遊びをする気はないという意志表示も込めています。
2章 文字と文字列
各章はそれぞれ簡潔な具体例から入り、その意味を読み解きながら一般化する順序で説明したいと考えていました。本書全体にもこの順序を適用して、オブジェクトやクラスの一般化の前に、文字列と数値の具体的な章を持ってきました。結論から言うと、この構成は微妙でした。改めて読み直すと、2章と3章より前に4章を持ってきた方が良かったかもしれません。
本書はページ数制約のため相当量のページを削りました。2章にはイメージしやすい具体例を多く載せるつもりが、早々と各論に入る構成になってしまいました。
3章 数値(1)
整数とブーリアンに関する章です。2章と同じ理由で簡単な章で肩慣しをしてもらう意図で本書の前に方にあります。と言いながら内容はそんなに簡単ではありません。3章を読んでいきなり挫折しそうになったら気にせず読み進めてください。
自己評価で言えば、どの整数型を使うべきかに対して具体的な指針を示す部分は、あまり他のプログラミング本にない内容だと思うので良かったと思っています。
4章 変数とオブジェクト
4章は内容の価値、難易度、章の長さがマッチした良い章になったと自己評価しています。Javaに馴染みのない人には、2章3章より読みやすい章になっているかもしれません。本屋で立ち読みするならこの章を勧めます。
5章 クラス
本書で一番長い章です。個人的には、この長さに値するほどクラスという言語機能が重要だとは思っていないのですが、教科書として使えるように言語仕様を網羅的に説明したらこの長さになってしまいました。広くすべてを説明するという方針の一方、説明の重心の置き方にはこだわりもあります。(publicやprivateなどの)アクセス制御は軽く扱う一方、オブジェクトのライフサイクル管理の説明を強調しています。
色々詰め込みすぎた結果、とても大事な文を書き忘れました。継承を使う理由として、「呼び出し側を変更せずにプログラムを拡張可能にできる」という一文です。注意深く読めば読み取れないこともないですし、後続する章にもそれらしきほのめかしはありますが、直接的な記述を書き忘れました。そもそも本書内で、「呼び出す側と呼び出される側」という軸を明確化する概念モデルがすっぽり抜け落ちました(7章のインターフェースの章で察することができなくてもないですが)。
6章 コレクションと配列
6章冒頭の脚注に書いた、「私見ですが、オブジェクト指向がわからなくてもそれなりのコードは書けますが、モノの集まりに対する操作を意識できなければ、まともなコードを書けるとは思えません。」は我ながら気に入っています。
自己評価は、イテレータの説明は良く書けたのではないかと思っています。全体的に内容はそれほど難しくないと思います。
7章 インターフェース
ぼくはインターフェースに対するプログラミングの信奉者です。その割にはこの章は意外に短くなっています。インターフェースへの意識はこの章だけでなくすべての章にまたがって強調しているので、冗長な説明を削った結果、短くなりました。
こだわりの章ですが読み返してみると凡庸な内容にも見えてきます。突き詰めて考え抜くとシンプルな結論に至るのだ、と思うことにします。
8章 文、式、演算子
大急ぎですべての演算子の説明をしました。軽く読んでください。
9章 Javaプログラムの実行と制御構造
ifやwhileなどの制御文の話です。プログラミング初心者向け本なら最初の章にでてくる内容かもしれません。if文などを知らない本当のプログラミング初心者は対象読者ではないのですが、もしそういう人ならこの章と4章と8章を読むと、何かわかった気になれるかもしれません。
10章 数値(2)
主に浮動小数点数と数値クラスの説明です。当初ビット演算の話もかなり入っていましたがページ数制限のためごっそり削除しました。目次が「浮動少数点数」になっています。困ったものです。本文は正しく浮動小数点数になっているのですが。
内容は本書の中でも1位、2位を争う難しさだと思うので理解できなくても気にしないでください。でも浮動小数点数をごまかす本よりは誠実だと信じています。
11章 パッケージ
短いし内容も浅いです。軽く読んでください。
12章 列挙型と定数と不変型
不変型については章をまたがって色々なところで強調しています。ここであらためて説明していますが、だいぶ詰め込みすぎて、説明が急になっている懸念があります。
13章 例外処理
例外の文法的説明もしていますが、そこはどうでもいいと思っています。返り値、エラーハンドラ、例外の対照が書きたかったポイントです。うまく伝わっていればいいのですが。
14章 ジェネリック型
ジェネリック型をどれだけ簡単に説明できるかに挑戦しましたが、うまくできたかは自分では判断できません。ちなみに、「型引数に基本型を指定できないこと」を書き忘れました。読めば察することはできますが、思わず書き忘れました。
15章 ストリーム
ページ数制約で内容を削る中で、ストリームはかなり削りました。それでいながら、こだわりの内容を残しています。シリアライズの説明を削っておきながら、ノンブロッキングI/O(NIO)の話が残っています。このページ数の割にネットワークプログラミングの割合が妙に多いと思うかもしれません。個人的趣味です。
16章 スレッド
ストリームに続いてスレッドも内容を詰め込みました。30ページほどの中にスレッドプールもサーバの並行処理も通知処理もアトミック処理も書きました。
17章 リフレクション
応用例のひとつとしてDI(Dependency Injection)はもっと書きたい気持ちもあったのですが、ページ数の関係であっさりしたものになっています。
18章 アノテーション
文法的な説明は普通です。アノテーションの応用例としてプラグインをアノテーションで行う説明を載せたのが独自色を出した部分です。
19章 Java EE概論
わずか2ページです。元々、(静的コンテンツを返すだけの)WebサーバからWebアプリケーションサーバへ、という流れの説明があったのですが、ページ数の関係でごっそりなくなりました。
20章 サーブレット
サーブレットプログラミングの基本から、MVCの説明、CRUDの実例、セッション管理の概念、そしてユーザ認証の実例まで一気に説明しました。それなりにうまくまとめられたと思います。ここに書いてあることが腑に落ちれば業務でサーブレットプログラミングが必要になっても応用できると思います。
19章からHTTPそのものの説明がなくなった関係で、HTTPに馴染みがないと読めない章になりました。HTTPの知識が不足している人は自分で調べてください。
24章としてSpring Frameworkの章があったのですが、ページ数の関係でなくなったのが少し残念です。
21章 JSP
主に松山さんが書きました。
22章 JSP(EL&JSTL)
主に松山さんが書きました。
23章 データベース
JDBCの話、ORMの実例としてHibernateを書きました。現場でRDBプログラミングするにはもっと色々知る必要はありますが、とっかかりとしての話は書けたと思います。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/perfect-java/tbping
Re:「パーフェクトJava」発売
Re:「パーフェクトJava」発売