パターン、Wiki、XP - 第2部:ソフトウェア開発
第1部に登場した建築家アレグザンダーによるパターンランゲージ。次は、ソフトウェアの世界に取り込まれていく。第2部では、ソフトウェアの世界にどのように取り込まれていったのか歴史を追っていく。
大きく分けて2つの流れが存在する。ウォード・カニンガム、ケント・ベックによるプログラミングのパターンランゲージへの取り組みと、平行して起こったプログラミングに繰り返し現れる構造を再利用しようというデザインパターンの流れ。そして、同時代の関係者をつなげる学会やシンポジウムといったコミュニティの存在と徐々に統合、ブラッシュアップされていくソフトウェアの世界におけるパターンランゲージ。現実のソフトウェア開発現場においてパターンランゲージを適用し有用性を示すことになったChrysler社におけるC3プロジェクトの存在。
第2部はこのような流れになっている。
最終的にXPという一つの思想にまとめあげられていく過程をつぶさにみていくことで面白いと思ったのが、建築の世界で形作られたうまく成果を残すことができなかった思想がソフトウェアの世界と取り込まれ広がっていくその流れ。そして、人と人がつながることで思想自体を統合したり、ブラッシュアップしたりする役目を果たすことになるコミュニティの発生。
こっちの世界でうまくいかなくってもあっちの世界でうまくいって支持されている、というの一つの事例は自分にとっても今後ヒントになりそう。あとは、Li:d techも人と人が集まってやっているわけだけど、何かを生み出す流れになったらなあとぼんやりと思ったりして。
以下はほぼ抜き書きメモです(完全な抜き書きではなく手も加えてます)。
- 7章 オブジェクト開発
- ウォード・カニンガム、ケント・ベック p.56
- 2人は新しいプログラミングの概念について議論しては、考えた結果をテクニカルペーパーという短い論文としてまとめ、公表 p.56
- ウォード・カニンガム、ケント・ベック p.56
-
- ダグラス・エンゲルバート スタンフォード研究所
- コンピュータに関する会議(Fall Joint Computer Conference)で伝説的なプレゼンテーション p.58
- GUI:マウスによってポイントを動かし、画面上にウィンドウを開いて対話的にコンピュータを操作する p.58
- アラン・ケイはこのGUIをsmalltalkに取り込む p.58
- 1979年 スティーブ・ジョブスはPARCを見学し、Alto上で動くsmalltalkを見る p.59
- 1983年 GUIを搭載した初めてのパーソナルコンピュータ「Lisa」を発売 p.59
- 1984年 Apple「Macintosh」を発売。一般的な企業や個人でも変える価格帯で発売。GUIを瞬く間に世界に広めた p.59
- ダグラス・エンゲルバート スタンフォード研究所
- 8章 ソフトウェア開発へのパターンの適用
-
- ベックとカニンガムはパターンランゲージに興味 p.62
- Tektronix社内でベックとカニンガムは「パターンを使ったシステム設計」を試行 p.62
- ユーザインタフェースに関するパターンを5つ収集して、この5つのパターンからなるパターンランゲージをまとめる p.62
- システムの利用者が最終設計 p.62
-
-
-
-
- 1. タスクごとのウィンドウ(Window Per Task)
- 2. ウィンドウ内にペインはできるだけ少なく(Few Panes Per Window)
- 3. 標準的なペイン(Standard Panes)
- 4. 短いメニュー(Short Menus)
- 5. 名詞と動詞(Nouns and Verbs)
-
-
-
-
- 簡素ですが、非常にエレガントなデザインが実現 p.64
-
-
-
- 2人は結果を「オブジェクト指向プログラムのためのパターン言語の使用」という論文にまとめました。 p.64
-
-
- 2人は、プログラミングに関するパターンの収集も開始していました p.65
- 論文執筆の時点で10個ほど。20-30個のラフなアイディア。最終的には100-150個程度のパターンを収集できると予想していました p.65
- ソフトウェアの設計に繰り返し現れる構造をどのようにとらえ、他の人と共有できるかについて考え、論文としてまとめました。 p.66
- 2人は、プログラミングに関するパターンの収集も開始していました p.65
それと平行し、別のところでもソフトウェアに繰り返し現れる構造に目を向けている人がいた。
-
- コミュニティの発生
- OOPSLAは、このような同じ考えを持った人が出会う場として重要な役割を果たすことになります p.66
- コミュニティの発生
-
- デザインパターン誕生までの歴史
- 9章 デザインパターン
- GoF(ゴフ:Gang Of Four)
-
-
- デザインパターンという狭い範囲から始まったパターンの応用も、徐々に範囲を広げ、「町」「施工」といった違う粒度に相当するパターンも扱われるようになりました。 p.77
-
- 10章 プロセスへのパターンの適用
-
-
- これは、組織やプロセスを対象としたパターン、つまり「組織パターン」「プロセスパターン」という新しい考え方を発明したのだと言えます。 p.80
-
-
-
- コプリエンは組織が備えるべき「無名の質」についても言及しており、無名の質がソフトウェア開発を行う組織とプロセスの改善の糸口になるという考えを述べています p.80
-
-
-
- エピソーズは開発チームの組織やプロセスを記述したパターンランゲージで、ソフトウェア開発における問題解決のための文書のあり方やグループの構成方法、各役割担当者の心構えなどを提示 p.80
-
-
-
- カニンガムは、ソフトウェア開発にはドラマの起承転結のような流れと波があると考えました。そのためソフトウェア開発のさまざまな活動サイクルの単位を、メタファとして「エピソード」と呼びました。 p.81
-
-
- C3(Chrysler Comprehensive Compensation project:総合報酬プロジェクト)プロジェクト
-
-
- Chrysler社の給与計算プログラム、COBOL -> smalltalkに p.82
- Chryslerにはおよそ6千人の役員と10万人の従業員がおり、部署や役職によって給与支払いの制度と計算ルールが異なるため、複雑化 p.83
- プロジェクトは1993年に始まり1995年にはSmalltalkによる開発が始まっていたが、非常に難航 p.83
- ベックは今までコミュニティが培ってきた組織とプロセスのパターンを徹底的に実践 p.83
- C3プロジェクトで実践されたオリジナルのプラクティスは、ロン・ジェフリーズによって1997〜1998年ごろにまとめられ、Webで公開されました p.84
- Chrytslerの野心的な新システムは1999年まで開発が続きましたが、約1万人の月給雇用者をカバーするようになったところでプロジェクトは中止 p.87
- プロジェクトの体制や開発されたソフトウェアの品質については問題なかったが、ビジネス上の要求の変化によって中止の決定がなされたのだとベックは結論付けています p.88
- C3プロジェクト修了後も、Chryslerのシステムに関わり続けたメンバーたちがいるそうです。彼らはXPを適用することで、非常にバグが少ないプロジェクトを実現しています。 p.88
-
- 11章 エクストリームプログラミング
- ベック 「XPエクストリーム・プログラミング入門」を出版 p.89
- 「エクストリームプログラミング(Extreme Programming)」はベックが提唱するソフトウェア開発手法で、C3プロジェクトなどで培った経験に基づいて、ソフトウェア開発現場において良いとされる一連の行動指針を「プラスティス」と呼ばれる形にまとめあげたもの p.89
- ベック 「XPエクストリーム・プログラミング入門」を出版 p.89
-
- 「XPエクストリーム・プログラミング入門」-プロジェクトに関わる人々が共有して目指すべき4つの「価値」
-
- コミュニケーション
- シンプル
- フィードバック
- 勇気
-
- 「XPエクストリーム・プログラミング入門」-プロジェクトに関わる人々が共有して目指すべき4つの「価値」
-
- 4つの価値から導きだされる5つの基本「原則」
-
- 瞬時のフィードバック
- シンプルの採用
- インクリメンタルな変更
- 変化を取り入れる
- 質の高い作業
-
- 4つの価値から導きだされる5つの基本「原則」
-
-
- 「価値」と「原則」を達成するために、12個の「プラクティス」が提案
- 略
- 「価値」と「原則」を達成するために、12個の「プラクティス」が提案
-
-
-
-
- プロセスやツールよりも、人と人との交流を
- 包括的なドキュメントよりも、動作するソフトウェアを
- 契約上の交渉よりも、顧客との協調を
- 計画に従うことよりも、変化に適応することを
-
-
-
- 「XPエクストリーム・プログラミング入門 第2版」
- 「xpエクストリーム・プログラミング入門 第2版」が出版(2004年)
- 全体の構成から細部の記述に至るまですべてが新しく書き改められていた。
- ベック自身の経験や、XPを経験した他の多くの人々からのフィードバックによってXP自体が変化し洗練されていった
- 「XPエクストリーム・プログラミング入門 第2版」
-
-
- XPはアレグザンダーが建築の世界で目指したプロジェクトの推進方法を、非常に上手にソフトウェア開発の世界に取り込んだ p.103
-
-
- アレグザンダーの失敗
- 建築家は社会的な役割が固定化していて、建築家は設計する建築の詳細を最終的に決めるのは自分たちだという態度を放棄せず、利用者はそのような状況で自分たちの要求を適切に伝える術を知りません。そのため、アレグザンダーは最終的には建築家と利用者の間のバランスをとることに失敗したのだと語っています p.105
- 誕生して間もないコンピュータの世界であれば、利用者と開発者という社会的な関係を含めて新しくて意義しなおせるかもしれません。ベックは、「ソフトウェアでは、新たな社会構造を作る機会がある」(p.156)と語っています。つまりXPの本当の目的は「新たな社会構造を作る」ことにあるのです。 p.106
- アレグザンダーの失敗
-
-
- XPは、利用者と開発者が互いの垣根を越えて共同でソフトウェア開発へと向かい、生き生きとした、そして無名の質を備えたソフトウェアを実現しようと言う試みだったのだと言えます。 p.106
-
-
- 建築の世界から始まったパターンランゲージの影響は、一巡りしてソフトウェア業界からアレグザンダーへとフィードバックされました。 p.107