著者が運営するサポートページです。
|
トップ | 正誤表 | 関連情報 | 関数型言語でなぜつくるのか |
7年前に出版した書籍『オブジェクト指向でなぜつくるのか』の改訂版を書く機会をいただきました。
大変ありがたいことに、初版は当初想定していた以上の多くの方に手にとっていただけました。
この本のメインテーマはオブジェクト指向ですが、それだけでなく、構造化プログラミング、コンパイラ、業務分析、データモデリング、設計、開発プロセス、関数型言語など、コンピュータの登場以来、多くの研究者や技術者たちが工夫と改良を重ねてきたソフトウエア開発技術の多くの要素を盛り込んだつもりです。
この本がまた皆様のお役に立てることを願っています。
章 | タイトル | 主なキーワード |
---|---|---|
1 | オブジェクト指向はソフトウエア開発を楽にする技術 | 用語の洪水、比喩の乱用、なんでもオブジェクト症候群 |
2 | オブジェクト指向と現実世界は似て非なるもの | オブジェクト指向の三大要素、現実世界 |
3 | OOPを理解する近道はプログラミング言語の歴史にあり | 機械語、アセンブリ言語、高級言語、構造化プログラミング |
4 | OOPは無駄を省いて整理整頓するプログラミング言語 | クラス、ポリモーフィズム、継承、パッケージ、例外、ガベージコレクション |
5 | メモリの仕組みの理解はプログラマのたしなみ | スレッド、仮想マシン、静的領域、ヒープ領域、スタック領域、ポインタ、メソッドテーブル |
6 | OOPがもたらしたソフトウエアとアイデアの再利用 | クラスライブラリ、フレームワーク、コンポーネント、デザインパターン |
7 | 汎用の整理術に化けたオブジェクト指向 | 集合論、役割分担 |
8 | UMLは形のないソフトウエアを見る道具 | クラス図、シーケンス図、コミュニケーション図、ユースケース図、アクティビティ図 |
9 | 現実世界とソフトウエアのギャップを埋めるモデリング | 業務分析、要求定義、ビジネスアプリケーション、組み込みソフトウエア |
10 | 擬人化して役割分担させるオブジェクト指向設計 | 凝集度、結合度、依存関係、擬人化 |
11 | オブジェクト指向から生まれたアジャイル開発とTDD | イテレーション、アジャイル開発プロセス、TDD、リファクタリング、継続的インテグレーション |
12 | オブジェクト指向を使いこなそう | - |
13 | 関数型言語でなぜつくるのか | 関数、式、高階関数、部分適用、関数の合成、副作用、遅延評価、パターンマッチ、型推論 |
関数型言語の解説を追加したことを除いて、基本的な内容は初版と大きく変えていません。
ただし、JavaやC#、Rubyなどのオブジェクト指向言語が開発現場に普及した現状を踏まえて、説明のスタンスを若干変更しました。
また、より多くの方に受け入れていただける内容にするため、アマゾンの書評やブログ、SNSなどに投稿していただいた感想やレビューをひとつひとつ読んで、コメントいただいた内容を本文に反映するように努力しました。
初版からの主な変更点は次の通りです。
初版の副題は「知っておきたいプログラミング、UML、設計の基礎知識」でしたが、編集者さんと相談して「知っておきたいOOP、設計、関数型言語の基礎知識」としました。
関数型言語の解説は当初コラムで簡単に解説するつもりでしたが、最終的に40ページ以上の文章になったため、関数型言語の解説もしていることを副題で示すことにしました。
JavaやC#などが開発現場に普及し、オブジェクト指向を概念的にとらえて混乱している人が少なくなった状況を踏まえて、初版で強調していた「オブジェクト指向と現実世界はシームレスである」、あるいは「OOPを使うことで現実世界の様子をそのまま表現できる」といった主張を批判するトーンを弱めました。
これにあわせて、第2章のタイトルも「オブジェクト指向現実世界は大違い」から「オブジェクト指向と現実世界は似て非なるもの」に変更しました。
オブジェクト指向の「モノ中心」というコンセプトが広まった背景について、本文とは別の観点から考察した2つのコラムを追加しました。
初版のOOPの仕組みを解説する第4章で、メッセージパッシングの表記法や型チェック、例外の仕組みなどに関して、JavaとC#を前提にした説明になっていたのを、他のプログラミング言語にも当てはまるように修正しました。
初版では取り上げなかった重要なトピックである、仮想マシン、Objectクラスを頂点とする継承構造、アジャイル開発の主要なプラクティス(TDD、リファクタリング、継続的インテグレーション)について追記しました。
関数型言語の基本的な仕組みと思想を解説する第13章を新たに書き起こしました。
(今回の改訂作業に要した時間の多くをこの章の執筆に費やしました。)
各章末の参考書籍に関しては、2004年以降に発刊された良書を中心にほとんどを入れ替えました。
各章の扉のウォーミングアップについては、その章のテーマによりふさわしいクイズになるように見直しを行い、全体の半数を入れ替えました。
すべての文章を丹念に読み返して、不適切な論旨の展開や文章表現を細かく修正しました。
冒頭の推薦のことばも平鍋さんに新たに書き起こしていただきました。
2021/04/05 トップページを更新しました。
2021/03/21 正誤表を更新しました。
2021/03/21 関連情報を更新しました。
2021/03/08 サイトを引っ越しました。
2011/03/26 ページを公開しました。
『UMLモデリングレッスン』のサポートページへ |
第3版のサポートページへ |
初版のサポートページへ |
トップ | 正誤表 | 関連情報 | 関数型言語でなぜつくるのか |