サーバーサイドJAVAアンチパターンを読んでポイントをまとめました.
1.本の構成
- 第1部 : 基礎と銘打たれたこの部では、デザインパターンやアンチパターンの概念についての説明と、サーバ系技術の概要について記載されています.
- 第2部 : この本のメインです.本のタイトルと同一のタイトルがつけられているだけあり、アンチパターンの多くがここで語られています.
- 第3部 : 俯瞰図というこの部では、コーディング習慣やスケーラビリティといった話題を扱います.Javaのパターンではなく、プロジェクトの進め方やサーバ構成について記載しております.
2.アンチパターンについて
この本で紹介されているJavaのアンチパターンをまとめました.
- MVCの分離不十分 : ServletやJSPを使うだけではModel-View-Controllerが分離されない.
- 性能問題 : キャッシュを正しく作成・管理することで性能向上が図れる.リソースの読み書き時には適切なロックを掛けなければ著しく性能劣化する.
- メモリのリーク : ガーベッジコレクション(GC)の原理を知り、不要なオブシェクトがGCの対象になるようにする.リスナーやリストへのadd/removeのように、対になっている処理を忘れるとリークの原因となる.
- DB接続 : コネクションはプールする.コネクションのOpen/Closeをセットで行う*1.
- 外部とのInterface : 硬直的なIFはメンテナンスコストを増大させる.疎結合を目指し、素のXMLやSOAPのような柔軟性の高いIFとする.
- Enterprise JavaBeansの注意点 : 利用するメリットが明確な場合のみ採用する.値を一括で取得するファサードを作り、通信回数を減らさなければ致命的な性能劣化を招く.
*1 : 昔のJavaであれば、try-catchの後にfinallyを書いて実行する.Java7以降であれば、try-with-resources文を利用する.
ここにあるパターンがこの本の核です.このポイントを公式サイトのソースコードと対比させて読んで、駄目な部分が指摘出来る人であれば本を読む必要はありません.
本で紹介されていますが、アンチパターンはwww.antipatterns.comにもまとまっています.
おそらく古いIEでしか正常に表示できないページもあるようでしたので見るべきページをまとめました.
(bitterjava.comというサイトにもっと具体的な例がまとまっていたそうですが、現在は消えてしまっていました.)
3.総括・感想
総括すると、2.でまとめたことについて実例を思い描ける若しくは自分で調べて見つけられる人であれば買う必要は無いかと思います.
ソースコードも無料でダウンロード出来るので、それを見れば本が無くてもある程度わかるかと思います.Chapter1、6も無料で読むことができます.(ソース、Chapterのダウンロードはこちら)
付録のパターン一覧や著者のカヌーの話題に興味がある人は買う価値が有るかと思います.
以下、思いついたこと、感想を書き散らします.
対象は初級者〜中級者ぐらいである.
実例のコードが多いためプログラマにとっては理解しやすいが、手を動かしたことがない”SE”ではあまり理解できないと思う.
但し、コードの質はあまりよくない.
(インデントが不適切だったり、改行が無くて読みづらい.古い故にjava.util.Vectorを使っていたり、明記されているものの例外処理が不十分だったりと紹介されているコードをそのまま使うと痛い目を見る.)
古い本だが基礎的・オーソドックスなパターンを紹介しているので、未だに当てはまる部分が大多数である.逆に中級以上のプログラマにとってはあまり新しい情報は得られないかも知れない.
タイトルに惹かれて買った人には的外れなトピックに紙面が割かれているという印象を与える可能性あり.
Bitter Java – サーバーサイドJAVAアンチパターンという原著・翻訳それぞれのタイトルにJavaというキーワードが入っているものの、Javaばかりではなくプロジェクト全般、プログラミング全般に当てはまるパターンの紹介も多い.
最初の導入部分はこの本を手に取るような人であれば知っている部分が多い.