『オブジェクト指向でなぜつくるのか 第2版』

知っておきたいOOP、設計、関数型言語の基礎知識

著者が運営するサポートページです。

著者 平澤 章
出版社 日経BP出版センター
ISBN 978-4822284657
ページ数 368ページ
サイズ 21cm×15cm
発行日 2011年4月4日
定価 2,400円(税抜き)
→Amazonへ

トップ 正誤表 関数型言語でなぜつくるのか

ご挨拶 目次 第1版からの変更点 リンク 主な更新履歴

ご挨拶

7年前に出版した書籍『オブジェクト指向でなぜつくるのか』の改訂版を書く機会をいただきました。

大変ありがたいことに、第1版は当初想定していた以上の多くの方に手にとっていただけました。
この本のメインテーマはオブジェクト指向ですが、それだけでなく、構造化プログラミング、コンパイラ、業務分析、データモデリング、設計、開発プロセス、関数型言語など、コンピュータの登場以来、多くの研究者や技術者たちが工夫と改良を重ねてきたソフトウエア開発技術の多くの要素を盛り込んだつもりです。
この本がまた皆様のお役に立てることを願っています。


目次

タイトル 主なキーワード
第1章 オブジェクト指向はソフトウエア開発を楽にする技術 用語の洪水、比喩の乱用、なんでもオブジェクト症候群
第2章 オブジェクト指向と現実世界は似て非なるもの オブジェクト指向の三大要素、現実世界
第3章 OOPを理解する近道はプログラミング言語の歴史にあり 機械語、アセンブリ言語、高級言語、構造化プログラミング
第4章 OOPは無駄を省いて整理整頓するプログラミング言語 クラス、ポリモーフィズム、継承、パッケージ、例外、ガベージコレクション
第5章 メモリの仕組みの理解はプログラマのたしなみ スレッド、仮想マシン、静的領域、ヒープ領域、スタック領域、ポインタ、メソッドテーブル
第6章 OOPがもたらしたソフトウエアとアイデアの再利用 クラスライブラリ、フレームワーク、コンポーネント、デザインパターン
第7章 汎用の整理術に化けたオブジェクト指向 集合論、役割分担
第8章 UMLは形のないソフトウエアを見る道具 クラス図、シーケンス図、コミュニケーション図、ユースケース図、アクティビティ図
第9章 現実世界とソフトウエアのギャップを埋めるモデリング 業務分析、要求定義、ビジネスアプリケーション、組み込みソフトウエア
第10章 擬人化して役割分担させるオブジェクト指向設計 凝集度、結合度、依存関係、擬人化
第11章 オブジェクト指向から生まれたアジャイル開発とTDD イテレーション、アジャイル開発プロセス、TDD、リファクタリング、継続的インテグレーション
第12章 オブジェクト指向を使いこなそう
第13章 関数型言語でなぜつくるのか 関数、式、高階関数、部分適用、関数の合成、副作用、遅延評価、パターンマッチ、型推論


第1版からの変更点

関数型言語の解説を追加したことを除いて、基本的な内容は第1版と大きく変えていません。
ただし、JavaやC#、Rubyなどのオブジェクト指向言語が開発現場に普及した現状を踏まえて、説明のスタンスを若干変更しました。
また、より多くの方に受け入れていただける内容にするため、アマゾンの書評やブログ、SNSなどに投稿していただいた感想やレビューをひとつひとつ読んで、コメントいただいた内容を本文に反映するように努力しました。

第1版からの主な変更点は次の通りです。

副題

第1版の副題は「知っておきたいプログラミング、UML、設計の基礎知識」でしたが、編集者さんと相談して「知っておきたいOOP、設計、関数型言語の基礎知識」としました。
関数型言語の解説は当初コラムで簡単に解説するつもりでしたが、最終的に40ページ以上の文章になったため、関数型言語の解説もしていることを副題で示すことにしました。

オブジェクト指向と現実世界を対比する説明に対するスタンスの調整

JavaやC#などが開発現場に普及し、オブジェクト指向を概念的にとらえて混乱している人が少なくなった状況を踏まえて、第1版で強調していた「オブジェクト指向と現実世界はシームレスである」、あるいは「OOPを使うことで現実世界の様子をそのまま表現できる」といった主張を批判するトーンを弱めました。
これにあわせて、第2章のタイトルも「オブジェクト指向現実世界は大違い」から「オブジェクト指向と現実世界は似て非なるもの」に変更しました。

コラム「オブジェクトの向こう側」

オブジェクト指向の「モノ中心」というコンセプトが広まった背景について、本文とは別の観点から考察した2つのコラムを追加しました。

動的な型づけ言語の考慮

第1版のOOPの仕組みを解説する第4章で、メッセージパッシングの表記法や型チェック、例外の仕組みなどに関して、JavaとC#を前提にした説明になっていたのを、他のプログラミング言語にも当てはまるように修正しました。

トピックの追加

第1版では取り上げなかった重要なトピックである、仮想マシン、Objectクラスを頂点とする継承構造、アジャイル開発の主要なプラクティス(TDD、リファクタリング、継続的インテグレーション)について追記しました。

第13章「関数型言語でなぜつくるのか」

関数型言語の基本的な仕組みと思想を解説する第13章を新たに書き起こしました。
(今回の改訂作業に要した時間の多くをこの章の執筆に費やしました。)

より深く学ぶための参考書籍

各章末の参考書籍に関しては、2004年以降に発刊された良書を中心にほとんどを入れ替えました。

ウォーミングアップクイズ

各章の扉のウォーミングアップについては、その章のテーマによりふさわしいクイズになるように見直しを行い、全体の半数を入れ替えました。

全体の見直しと改良

すべての文章を丹念に読み返して、不適切な論旨の展開や文章表現を細かく修正しました。
冒頭の推薦のことばも平鍋さんに新たに書き起こしていただきました。


リンク

『オブジェクト指向でなぜつくるのか』(第1版)のサポートページへ
『UMLモデリングレッスン』のサポートページへ

主な更新履歴

2018/12/23 正誤表を更新しました。
2011/03/26 ページを公開しました。


© 2011-2018 Akira HIRASAWA All rights reserved.