Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

パターン、Wiki、XP 時を超えた創造の原則

概要

デザインパターンWiki、XP(エクストリームプログラミング)に共通する起源
について書かれた本。
それぞれ独立した要素のように見えて実は建築家アレグザンダーの
建築原理を元にしています。

建築家アレグザンダー

アレグザンダーは建築には「無名の質(QWAN Quality without a Name)」=古い町並の美しさや
家や街並みなどに内在する、人々を満たすような質のことです。
アレグザンダーの定義では無名の質は以下の7つの要素になります。

  1. 生き生き
  2. 一体性
  3. 快適さ
  4. 自由さ
  5. 正確さ
  6. 無我
  7. 永遠

これらを満たすためにアレグザンダーは数学とパターンを用いて
問題を解決しようとしました。

その6つの原則が

  1. 有機的秩序の原理
  2. 参加の原理
  3. 斬新的成長の原理
  4. パターンの原理
  5. 診断の原理
  6. 調整の原理

です。また、個別の解決パターンをパターン・ランゲージとして
まとめました。

パターン、XP、Wiki

ソフトウェア開発でのパターンといえばデザインパターン
XPといえばアジャイル開発の中でも有名なエクストリームプログラミング
WikiといえばWikipediaPukiWikiなど共同編集に用いられるコラボレーションツール

GoFデザインパターンで知られるエーリヒ・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディース。
XPやJUnitの開発者として知られるケント・ベック
Wikiの原型であるWikiWikiWebの開発者としてしられるウォード・カニンガム
それぞれアレグザンダーの原則を元に、ソフトウェア開発に関わる問題の解決作として
OOPSLA*1PLoP*2、Hillside Group*3などでの議論・会議を経て
デザインパターン、XP、Wikiを生み出しました。

総括

パターン、XP、Wikiは共通の理念・原則に基づいていて
それが建築の思想から派生したものであり、今後ソフトウェアや建築の業界のみならず
様々な創造的活動を営む業界に広がりを見せるでしょう、という形で締めくくっています。

感想

2つの驚きがありました。

  • パターン、XP、Wikiという要素が同じ理念に基づいていること
  • 各要素に登場する人物の重複=ソフトウェア業界の格となる要素の存在の大きさを認識

3つのものを得ました。

  • 個別要素として見ていたパターン、XP、Wikiをひと繋がりのものとして認識出来た
  • 他の業界で有用なノウハウなどで、活かせるものは活かす。また相互にフィードバックをおこなう
  • 先人の知恵を活用する。車輪の再発明をしないという開発原則にも繋がりますね

たまたまプログラマー、医者、ゲーム開発者、3Dクリエイターなど知的創造系の業務をしている友人が
多いので機会があるごとに色々聞いてみようかな、と思います。

そして1つの課題が残った。
アレグザンダーの建築物の実例として日本の東野高校の例が挙げられていました。
顧客主導での建築=参加の原則と原則を実施しようとしたが、日本の建築業界の構造では
ゼネコン主導にならざるを得ず結局失敗したという結果になっています。
この辺、現在の日本のシステム開発業界が抱える問題そのままだなと。
XPやアジャイル。その他の開発手法で確実に有用と分かるようなプラクティスでも
業界構造や政治的事情などにより、採用されない場合が多い。
場合によっては元請け企業の担当者はシステム開発技法、手法などは全くわからないため
既存の手法(ウォーターフォール的な)を変えることを絶対に許さないなんてケースも多々。

日本のシステム産業をどう変えるか、をパターン化する。とか面白いかな?
実際に現状の業界が行なっているアンチパターンを集めて
最適な開発を行った場合と、アンチパターンで行った場合の長期的なコストを比較する。
また、システムのアーキテクチャやプログラムの品質を測る第三者機関などを用意し、
品質の低いシステムを開発している会社は「開発力ミシェラン」みたいな段階評価をされて
しまうようにして外部から開発力を評価されてしまうとか?

定量的には表し切れない部分もあって難しいとは思いますし、考えの浅い部分もあるとは
思いますが何も考えないで現状の不具合をほっておくよりはいいかな。
ブレーンストーミングの原則で。提案をすること自体を妨げるような批判をせず無理だと思っても
とにかく数を挙げること。
継続して改善案を考えよう。

個人としては業務中にアクセル全開で開発出来ず、制約の中での開発ばかりなら
自宅や知人友人との共同開発での学習でのなかでアクセルを全開にして
経験を積めばいいかなと思ってます。
(業務で手を抜くと言うわけではなく制約を変えようとする努力をし
その上で変えられなかった部分は限られた条件の中で最善をつくすのを前提としてますが。

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

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

*1:Object-Oriented Programming, Systems, Languages & Applications
オブジェクト指向プログラミングのシステム、言語、アプリケーションを主題とした国際会議です。

*2:Pattern Languages of Programs。ケント・ベック、ブーチ、カニンガム、ラルフ・ジョンソン、コプリエンなどが興した
パターンランゲージに関する議論を行うことを目的とした会議です。

*3:ケント・ベックとグラディ・ブーチが主催したパターンについてのグループです