ISBN 9784815609801

Java言語で学ぶデザインパターン入門第3版

Java言語で学ぶデザインパターン入門第3版
著者
結城 浩
刊行
2021-11

概要

GoF 23パターンをJavaサンプルとUMLで体系的に習得する

想定読者

Javaの基礎文法は読めるが、オブジェクト指向設計の判断軸が言語化できていない中級手前のエンジニア。設計レビューで「なぜこのクラス構造か」を説明できるようになりたい人。

こんな人には向いていない

  • 既にGoF原著や同書の旧版を読み込んでいる人。第3版の差分はサンプルコードの現代Java対応が中心であり、設計概念の刷新はない。
  • Javaを全く書いたことがない読者。本書のサンプルはJavaに依存しており、言語入門と並行学習すると理解が分断しやすい。
  • クリーンアーキテクチャやDDDなど上位設計概念を求める人。本書はGoFパターンの解説に徹しており、大規模システム設計の文脈は扱わない。

読了後にできるようになること

  • GoF 23パターン全てをクラス図(UML)と短いJavaコードの対応として説明できる
  • Iteratorパターンによる「実装に依存しない走査」やStrategyパターンによる「アルゴリズムの交換可能性」など、各パターンの解決する問題を自分の言葉で語れる
  • 抽象クラスとインターフェースの使い分けをパターン適用の文脈で判断できる
  • Singletonのスレッドセーフ問題、Observerの過剰通知など、各パターンの落とし穴を把握した上で採用判断できる
  • 既存コードのリファクタリング時に「これはどのパターンに近いか」と命名・構造化の根拠を持てる

ハイライト

  • 一覧の構成、特徴は結城浩氏の増補改訂版Java言語で学ぶデザインパターン入門を参考・引用しました。23パターンの整理はこの書籍が基軸になっている。(Qiita上で最も参照回数が多いデザインパターン一覧記事が本書を土台と明示している点)
  • デザインパターンは難しい(活用の仕方が)。読んで理解した気になったが、実務適用の壁は別にある。(本書を読んだ後の典型的な課題感を端的に示す記述。読者が次に何を学ぶべきか判断する材料になる)

外部からの言及

  • Javaで23パターンを体系的に解説した記事の多くが本書(または旧版)を参照元として明示しており、デザインパターン学習のリファレンス書として定着している。Qiita上で77件以上の記事が言及。(qiita)
  • 「パターンを覚えること」と「パターンを実務で使えること」は別という声が複数ある。本書は前者の習得には評価が高い一方、実務適用のギャップを指摘するコメントが散見される。(qiita)
  • 「GoFのデザインパターンはC++/Smalltalkの言語的制約に対する回避策だった」という批判的な視点から、現代言語では不要になったパターンも多いという議論がある。本書を土台にそうした再評価をする記事も存在する。(qiita)
  • Javaでキャリアをスタートする新人エンジニア向けの推薦書リストに継続的に登場する。基礎文法の次に読む設計書として、1〜2年目エンジニアへの推薦が多い。(qiita)

編集メモ

Qiita検索で77件以上の記事が本書(または旧版)を参照・引用。上位記事の累計いいね数は1,400超。デザインパターン解説記事の基軸として繰り返し名前が挙がり、2022年時点でも新人推薦書リストに継続掲載されている。

読む前に押さえておきたいこと

  • Javaの基本文法(クラス・インターフェース・継承・多態性)を手を動かして書いた経験
  • UMLクラス図の読み方の基礎(矢印の種類と関係の意味)

学習のコツ

  • 全23パターンを順に読む必要はない。まずIterator・Singleton・Template Method・Strategy・Decorator・Compositeの6パターンを「よく出会う構造」として先に押さえると、残りの理解が早くなる。
  • 各章の末尾に載っている練習問題に取り組む前に、同じパターンをJava以外の言語(PythonやTypeScript)で書き直してみると、パターンの本質と言語の糖衣構文の違いが明確になる。
  • 「このパターンはなぜ必要か」から読み始める。Javaの現代的な機能(ラムダ・Enum・Sealed class)で代替できるケースも多いため、旧版との比較が気になる場合は第3版のサンプルが何をどう変えたかを意識して読む。
  • マルチスレッド編(別巻)とは独立した本として完結している。本書はシングルスレッドのオブジェクト指向設計に集中するため、並行処理の関心は切り分けて読むとよい。
出版社による内容紹介

■『Java言語で学ぶデザインパターン入門 第3版』について 本書は、オブジェクト指向プログラミングにおいて古典的な23個のデザインパターンを、Java言語で書かれた短いサンプルプログラムとUMLを使い、オブジェクト指向プログラミングの初心者にもわかりやすく解説した技術書です。 2001年に初版が刊行されて以来、「最もわかりやすいデザインパターン解説書」「オブジェクト指向プログラミングとデザインパターンを学ぶ定番の一冊」と数多くの読者、技術者から支持されてきました。2004年には増補改訂版が刊行され、2020年には第31刷まで達するという人気のロングセラーとなっています。 しかし、Java言語は大きく進化しています。そこで第3版となる本書では、書籍の基本的構造と解説のわかりやすさはそのままに、扱っているサンプルプログラムを現代のJava言語に合わせて一新し、オブジェクト指向プログラミングとデザインパターンを身につけたいと思う技術者が、なおいっそう学びやすいように改訂を行いました。 結城浩 1963年生まれ。 プログラミング言語、デザインパターン、暗号、数学などの分野で入門書を執筆。 代表作に、『数学ガール』 シリーズ、『暗号技術入門』などかある。 J.S.バッハの「フーガの技法」が大好きな、プロテスタントのクリスチャン。 2014年度日本数学会出版賞受賞。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。