ISBN 9784296000180
オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識
概要
OOP の『なぜ』をプログラミング言語の歴史と設計原則から体系的に理解する
想定読者
OOP の概念は一通り知っているが『なぜそう書くのか』の根拠を言語化できないと感じている中堅プログラマ、および Java・Python・Ruby・JavaScript を業務で使い始めた若手エンジニア
こんな人には向いていない
- クラス設計・SOLID 原則・デザインパターンをすでに日常的に意識して設計している人には、第1〜6章の基礎論は既知の内容が多い
- 特定フレームワークの実装手順や具体的なコードサンプルを求めている場合、本書は原理解説が中心のため物足りなさを感じやすい
- 完全な初学者が最初の一冊として手に取ると、プログラミング経験がないと文脈をつかみにくい章がある
読了後にできるようになること
- OOP が機械語からアセンブリ・構造化・オブジェクト指向へとプログラミング言語が進化した必然的な帰結であることを説明できる
- クラス・ポリモーフィズム・継承の三要素が『整理整頓・無駄排除・再利用』のどの問題を解決しているかを対応付けられる
- メモリのスタックとヒープの仕組みを理解し、インスタンスがどのように管理されるかを具体的に把握できる
- UML を使ってソフトウェアの構造を可視化し、現実世界とソフトウェアのギャップをモデリングで埋める手法を習得できる
- アジャイル開発(特に XP)が OOP の思想からどのように派生してきたか、歴史的経緯を踏まえて説明できる
- Java・Python・Ruby・JavaScript における現代的な OOP の用法の違いと共通性を把握できる
本書のキー概念(章解説)
- 第 1 章 オブジェクト指向はソフトウエア開発を楽にする技術 — OOP の目的を最初に明示する章。『なぜ』の問いへの最初の答えとして熟読する価値がある
- 第 2 章 オブジェクト指向と現実世界は似て非なるもの — OOP の比喩(現実世界モデリング)がなぜ誤解を生むかを正す章。誤解を持ったまま進んできた人は特に重要
- 第 3 章 OOPを理解する近道はプログラミング言語の歴史にあり — 機械語からOOPへの進化の必然性を解説。この章を読むことで後続の説明の根拠が一気に繋がる
- 第 4 章 OOPは無駄を省いて整理整頓するプログラミング技術 — クラスの三機能(整理・隠蔽・複製)を具体的に解説。OOPの実用的価値の中核
- 第 5 章 メモリの仕組みの理解はプログラマのたしなみ — スタック・ヒープ・インスタンス管理の仕組み。実装の裏側を知りたい人向け
- 第 6 章 OOPがもたらしたソフトウエアとアイデアの再利用 — ライブラリ・フレームワーク・デザインパターンの登場を再利用の観点から整理
- 第 7 章 汎用の整理術に化けたオブジェクト指向 — OOPが設計思想全般に拡張された経緯。章の内容が広がるため初読で迷子になりやすい点に注意
- 第 8 章 UMLは形のないソフトウエアを見る道具 — ダイアグラムの基本的な使い方を解説
- 第 9 章 現実世界とソフトウエアのギャップを埋めるモデリング — ドメインモデリングの入門として機能する章
- 第 10 章 擬人化して役割分担させるオブジェクト指向設計 — 責務分担の考え方。後にDDDやクリーンアーキテクチャを学ぶ際の基盤になる
- 第 11 章 オブジェクト指向から生まれたアジャイル開発 — XPとOOPの思想的連続性を解説。アジャイル導入の文脈にいる人にとって腑に落ちる章
- 第 12 章 オブジェクト指向を使いこなそう — 総括章。各章の学びを実践にどうつなげるかの指針
ハイライト
- この本は、オブジェクト指向のなぜをしっかりと、しかも、とてもわかりやすく説明している本です。全員がオブジェクト指向をこの本から学べば、世の中の不思議な説明や誤解はもっと減ると思います。(新人プログラマ向け推薦書としてリストアップした記事での評価。OOP 誤解の多さへの問題意識と本書の解決力が端的に表れている)
- オブジェクト指向開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を平易な文章で核心をズバリと解説します。(出版社説明文から。『全体像』と『核心』を同時に狙う本書の位置づけを示す)
外部からの言及
- 新人・若手エンジニア向けの推薦書リストに繰り返し登場しており、OOPの『なぜ』を平易に説明する書籍として第一候補に挙げられることが多い。誤解が多い概念だからこそ、根拠から説明する本書の価値が評価されている(qiita)
- Java学習ロードマップやPHP・独学エンジニア向けガイドにも登場しており、言語を問わずOOPの基礎固めに有効な一冊として幅広い文脈で引用されている(qiita)
- 読書メモ系の記事では、OOPの三大要素(カプセル化・ポリモーフィズム・継承)が『なぜ必要か』を歴史的経緯から説明している点が評価される一方、第7章あたりからOOPの概念が汎用的すぎる整理術に拡張されることで、OOP本来の理解の妨げになるという指摘もある(qiita)
編集メモ
Qiita で本書タイトルを直接言及する記事が12件確認済み。新人プログラマ向け推薦記事(3,480 likes)・Java学習ガイド(1,574 likes)など高評価記事に安定して掲載されており、OOP入門〜中級の定番書として長期的に参照されている。関連トピック: agile, oop
読む前に押さえておきたいこと
- 何らかのオブジェクト指向言語(Java / Python / Ruby / JavaScript のいずれか)でクラスを使ったコードを書いた経験が最低数百行程度あること
- 変数・関数・条件分岐・ループ程度の基本的なプログラミング概念を理解していること
学習のコツ
- 第3章(プログラミング言語の歴史)は本書全体の骨格となる章で、後続の章の説明の根拠が詰まっている。ここを飛ばすとOOPの必然性が腑に落ちないまま進むことになるため、時間をかけて熟読する価値がある
- 第7章はOOPが『汎用整理術』に拡張される話で、概念の広さゆえ混乱しやすい。初読時は『OOPそのものの説明』から少し離れる章だと意識して読むと迷子になりにくい
- 第11章(アジャイル開発とOOPの関係)は、アジャイル導入や開発プロセス改善に関わっている場合に特に参照価値が高い。設計論と開発プロセス論が一冊でつながる数少ない章
- 補章の関数型言語との比較は、Python・JavaScript で関数型スタイルを使い始めた人が両者の関係を整理するのに有効。本編を一通り読んだ後に読むと理解が深まる
出版社による内容紹介
『オブジェクト指向でなぜつくるのか』10年ぶり、待望の改訂第3版! 「これからの10年も通用する基本」を、より多くの読者に身につけてもらうために改訂しました。 現在のソフトウエア開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を平易な文章で核心をズバリと解説します。 生産性のかぎを握るプログラム開発の主要技術をわかりやすく教えるという位置づけは変わりません。 そのうえで「今ドキのOOP」として人気言語(Java、Python、Ruby、JavaScript)の最新動向を新たに盛り込んでいます。 もちろん、すべての文章を細かく見直して現況に沿うよう更新しています。 本書の特徴 ◆オブジェクト指向(OOP)の全体像と特徴がわかる ◆OOPのプログラムが動く仕組みが具体的にわかる ◆関数型言語の本質とOOPとの関係がわかる ◆アジャイル開発手法と実践手法がわかる 【目次】 第1章 オブジェクト指向はソフトウエア開発を楽にする技術 今ドキのOOP:とっつきやすくて、奥の深いPython 第2章 オブジェクト指向と現実世界は似て非なるもの オブジェクトの向こう側:バズワードになったオブジェクト指向 第3章 OOPを理解する近道はプログラミング言語の歴史にあり プログラミング昔話: COBOL コンパイラのニワトリとタマゴの話 第4章 OOPは無駄を省いて整理整頓するプログラミング技術 今ドキのOOP:ホームページツールから進化したPHP 第5章 メモリの仕組みの理解はプログラマのたしなみ プログラミング昔話: OOPはダンプが見づらい? 第6章 OOPがもたらしたソフトウエアとアイデアの再利用 今ドキのOOP:Rails フレームワークでブレークしたRuby 第7章 汎用の整理術に化けたオブジェクト指向 オブジェクト指向の向こう側:言語が先か、コンセプトが先か 第8章 UMLは形のないソフトウエアを見る道具 第9章 現実世界とソフトウエアのギャップを埋めるモデリング 第10章 擬人化して役割分担させるオブジェクト指向設計 今ドキのOOP:クラスに縛られずに動くJavaScript 第11章 オブジェクト指向から生まれたアジャイル開発 プログラミング昔話:昔は許されなかったXP 第12章 オブジェクト指向を使いこなそう 補章 関数型言語でなぜつくるのか 今ドキのOOP:関数型言語の箱庭を用意したJava
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。