オブジェクト倶楽部 2009 夏イベントに登壇させていただきました

本日はオブジェクト倶楽部夏イベントにて 90 分もの長時間(!)喋らせていただきました。
会場にてお聞きくださった皆様、ありがとうございました。


講演の内容はというと、「創発的設計 (Emergent Design) 」というコンセプトについて講演をさせていただきました。自分は何を学んできたのか、何に学んできたのかを明かにし、いまの理解を立体化しました。「テスト駆動開発を本当に厳格に行うならば3イテレーション程度でアーキテクチャが破綻する」という意見に対する私の考えの表明でもあります。




テスト駆動開発者はテスト駆動開発という手段だけで開発を行っている、つまり先行設計をしない、という誤解に対して、そのようなことはないという (ごく真っ当な) 結論になっています。本当にゼロから設計するというのは思考実験に近い、現実味の薄い議論といえます。それでは私たちの知識や経験自体を否定することにもなってしまうでしょう。テスト駆動開発の強みは開発と共に設計を変えていくことの支え、もっと言えば設計を変える原動力を得ることであり、それは初期の設計が不要ということを言っているのではありません。「完璧な設計はできない」しかし、できないなら設計をやらない、という逆側の極端に振るのも良くない、ということです。



設計の変更にはコストがかかり、そのコストを下げるのがバージョン管理や自動テスト、自動化、リファクタリングです。もちろん有限の時間内でシステムを組む以上、全体として設計の変更量が少ないことに越したことはありません。

良い(と言われる)設計に近い地点から始めたり、近づくためには、良い設計を知っておくことは重要です。自分の道具箱に入れておくことで、自分の「シンプル設計」の持ち札が増えます。



講演では書籍『Emergent Design』から創発的設計のピラミッドを引用し、そのピラミッドを組み上げるもの、そして既にピラミッドの外に出てしまっている状態からピラミッドに戻るための手法の手がかりを発表しました。手がかりとなるのは、実際の現場で遭遇する問題に立ち向かうための三冊です。


これらの本が出てきたことで、あとから良い設計に「近づく」ことが可能になってきたと考えています。手法の実践者が増えてきて、ノウハウや問題点の共有、克服がなされてきていることを示している本だと考えています。


この講演では、たくさんの書籍を参考文献として言及させていただきました。まさに「巨人の肩に乗って」います。参考にした本を列挙してエントリの締めとします。(書籍データは amazon.co.jp から API 経由で取得しました)


Emergent Design: The Evolutionary Nature of Professional Software Development (Net Objectives Lean-Agile Series)

Emergent Design: The Evolutionary Nature of Professional Software Development (Net Objectives Lean-Agile Series)

Emergent Design: The Evolutionary Nature of Professional Software Development (Net Objectives Lean-Agile Series)

Amazon.com での平均評価 [4.0] (9 reviewers)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)

テスト駆動開発入門

テスト駆動開発入門

テスト駆動開発入門

Amazon での平均評価 [3.0] (10 reviewers)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)

  • 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/05
  • メディア: 単行本
  • 購入: 94人 クリック: 3,091回
  • この商品を含むブログ (312件) を見る
Amazon での平均評価 [4.5] (18 reviewers)

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法

Amazon での平均評価 [5.0] (4 reviewers)

プレファクタリング―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)

プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)

プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

Amazon での平均評価 [4.0] (4 reviewers)

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

Amazon での平均評価 [3.5] (3 reviewers)

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

Amazon での平均評価 [4.5] (5 reviewers)

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン

Amazon での平均評価 [4.5] (15 reviewers)

プログラムデザインのためのパターン言語―Pattern Languages of Program Design選集 (Pattern Languages of Program Design選集)

プログラムデザインのためのパターン言語―Pattern Languages of Program Design選集

プログラムデザインのためのパターン言語―Pattern Languages of Program Design選集

Amazon での平均評価 [5.0] (1 reviewers)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

Amazon での平均評価 [3.5] (6 reviewers)

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

Clean Code アジャイルソフトウェア達人の技

達人プログラマーシステム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (347件) を見る
Amazon での平均評価 [4.5] (13 reviewers)

達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化 (Ascii software engineering series)

達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化 (Ascii software engineering series)

達人プログラマー―ソフトウェア開発に不可欠な基礎知識 バージョン管理/ユニットテスト/自動化 (Ascii software engineering series)

Amazon での平均評価 [4.5] (2 reviewers)

パターンによるソフトウェア構成管理 (IT Architects’ Archive―ソフトウェア開発の課題)

パターンによるソフトウェア構成管理 (IT Architects’ Archive―ソフトウェア開発の課題)

パターンによるソフトウェア構成管理 (IT Architects’ Archive―ソフトウェア開発の課題)

Amazon での平均評価 [3.0] (2 reviewers)

アンチパターン―ソフトウェア危篤患者の救出

アンチパターン―ソフトウェア危篤患者の救出

アンチパターン―ソフトウェア危篤患者の救出

Amazon での平均評価 [4.5] (7 reviewers)

Code Reading―オープンソースから学ぶソフトウェア開発技法

Code Reading―オープンソースから学ぶソフトウェア開発技法

Code Reading―オープンソースから学ぶソフトウェア開発技法

Amazon での平均評価 [4.0] (10 reviewers)

Code Quality ~コードリーディングによる非機能特性の識別技法~

Code Quality ~コードリーディングによる非機能特性の識別技法~

Code Quality ~コードリーディングによる非機能特性の識別技法~

Amazon での平均評価 [4.0] (1 reviewers)

ビューティフルコード

ビューティフルコード (THEORY/IN/PRACTICE)

ビューティフルコード (THEORY/IN/PRACTICE)

Amazon での平均評価 [4.5] (2 reviewers)

プログラミング作法

プログラミング作法

プログラミング作法

Amazon での平均評価 [4.5] (22 reviewers)

Code Complete第2版〈上〉―完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

Amazon での平均評価 [4.5] (10 reviewers)

ケント・ベックSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集

ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集

ケント・ベックのSmalltalkベストプラクティス・パターン―シンプル・デザインへの宝石集

  • 作者: ケントベック,Kent Beck,梅沢真史,皆川誠,小黒直樹,森島みどり
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2003/03
  • メディア: 単行本
  • 購入: 7人 クリック: 94回
  • この商品を含むブログ (55件) を見る
Amazon での平均評価 [5.0] (1 reviewers)

実装パターン

実装パターン

実装パターン

Amazon での平均評価 [3.5] (3 reviewers)

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

データベース・リファクタリング

データベース・リファクタリング

データベース・リファクタリング

  • 作者: スコット W アンブラー,ピラモド・サダラージ,梅澤真史,越智典子,小黒直樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/03/26
  • メディア: 単行本
  • 購入: 10人 クリック: 211回
  • この商品を含むブログ (53件) を見る
Amazon での平均評価 [3.5] (2 reviewers)

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series)

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

xUnit Test Patterns: Refactoring Test Code (Addison-Wesley Signature Series (Fowler))

Amazon.com での平均評価 [4.5] (11 reviewers)