ブランコの比喩の出自からソフトウェア設計の歴史を学びましょう
© - BASE, Inc. Xブランコの⽐喩はどこから来たのか2019.9.25 第142回PHP勉強会 #phpstudy- @hgsgtk
View Slide
© - BASE, Inc.よくみるブランコの⽐喩https://tech.nikkeibp.co.jp/it/article/COLUMN/ / /
© - BASE, Inc.• どこからこの⽐喩が⽣まれたかご存知ですか?• ブランコの⽐喩の出⾃からソフトウェア設計の歴史を⾒ていきますよくみるブランコの⽐喩
© - BASE, Inc.: @hgsgtkvar_dump($hgsgtk);東⼝ 和暉 ( Higashiguchi Kazuki )Back-end Engineer (Go, PHP, Python )BASE BANK, Inc. (BASE, Inc.)/ Dev Division / Tech Lead
© - BASE, Inc.• 時間の都合上、歴史を厳選ピックアップしてお届けしています本資料の注意事項
© - BASE, Inc.本トークの構成について• 序章:ブランコの⽐喩• 第⼆章:クリストファー‧アレグザンダーの理論• 第三章:ソフトウェア設計への展開• 終章:まとめ
© - BASE, Inc.Special Thanks:http://gihyo.jp/magazine/wdpress/plus/ - - - -
© - BASE, Inc.よくみるブランコの⽐喩https://tech.nikkeibp.co.jp/it/article/COLUMN/ / /“ユーザーは⾃分が本当に必要とする要件について正しく表現できない。ユーザーからの要求事項は絶対ではない。”
© - BASE, Inc.書籍『オレゴン⼤学の実験』著者: クリストファー‧アレグザンダー1975年に原著出版オレゴン⼤学で著者が試みた、建築‧計画に対するアプローチをまとめまたものhttps://www.amazon.co.jp/dp/
© - BASE, Inc.ブランコの⽐喩https://www.pinterest.com/pin/
© - BASE, Inc.掲載されたブランコの⽐喩のマンガ• 建築業界における各領域の専⾨家と利⽤者との理解の齟齬を批判的に⽰したのが、ブランコの⽐喩• アレグザンダー⽒のオリジナルではない• カリフォルニア⼤学バークレー校の研究所のドアによく貼られていたもの
© - BASE, Inc.序章まとめ• ブランコの⽐喩は、建築業界を出⾃としている• では、ソフトウェア業界‧建築業界がどう繋がって現在に⾄ったのか
tt令和PHPer
© - BASE, Inc.クリストファー‧アレグザンダー1936年ウィーン出⾝の都市計画家‧建築家建築‧都市計画の理論として、「パタン‧ランゲージ」を提唱https://en.wikipedia.org/wiki/Christopher_Alexander
© - BASE, Inc.アレグザンダー⽒の思考の変遷• 「⼈が⽣きるに値する暮らしを送れる」環境を提供すること、この⼀点を⽬指して構築してきた• その中で、⻑い研究⽣活の中で幾度も考えを変化させている参考書籍⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デザイン⾏為の意味を問う』
© - BASE, Inc.主な著書‧論⽂• 1964年 『形の合成に関するノート』• 1965年 『都市はツリーではない』• 1975年 『オレゴン⼤学の実験』• 1977年 『パタン‧ランゲージ』• 1979年 『時を超えた建設の道』
© - BASE, Inc.1964年 『形の合成に関するノート』https://www.amazon.co.jp/dp/ X
© - BASE, Inc.設計プロセスの数学的な形式化• 設計という⾏為を理論化する研究• 良い設計=なるべく多くの条件を満たす形態を探し当てる• 数学的なアプローチで解ける問題へ還元
© - BASE, Inc.やかんの例http://www.girlwonder.com/tag/cybernetics
© - BASE, Inc.数学的に扱うアプローチ. 要求条件を洗い出し細分化する• 要求条件の集合全体を「システム」と呼ぶ. 条件間の関係性を検討し、すべての条件について他の条件との関係性を洗い出す. それぞれの条件が適合している/していないという2値で取ると数値の集合として数学的に扱える
© - BASE, Inc.条件間は複雑に絡み合うためツリー構造へ. 要求条件を洗い出し細分化する• 要求条件の集合全体を「システム」と呼ぶ. 条件の関係を吟味、互いに影響を与えうる条件だけを集めて「サブシステム」とする. サブシステムで更に分割し、より⼩さなサブシステムへ. 全体の構造をシステム‧サブシステムの親⼦関係(ツリー構造)に還元していく、トップダウンなアプローチ
© - BASE, Inc.https://www.sfgate.com/travel/resources/transit/article/The-location-of-a-historic-BART-meeting-was-a- .php1964年 ベイエリア⾼速鉄道の計画※ 当時の写真ではありません
© - BASE, Inc.1964年 ベイエリア⾼速鉄道の計画 でわかった問題点• 要求分析をし、390個の要求分析をし、ツリー構造に分割• 膨⼤な数のサブシステムになり、計算プログラムも巨⼤に• 予期しなかったサブシステム間の連携が⽣じる• ex. チケットブースの列が膨らむ→⼈の通⾏が妨げられる
© - BASE, Inc.http://en.bp.ntu.edu.tw/wp-content/uploads/ / / -Alexander-A-city-is-not-a-tree.pdf1965年 『都市はツリーではない』
© - BASE, Inc.論⽂『都市はツリーではない』• それまでの都市計画に対する批判• それまでの都市計画によってできた都市を「⼈⼯都市」と呼ぶ、ツリー構造に還元される• ⾃然都市: ⾃然にできた都市• 1つの場所が複数の役割を同時に担うセミラティス構造を持つhttp://en.bp.ntu.edu.tw/wp-content/uploads/ / / -Alexander-A-city-is-not-a-tree.pdf
© - BASE, Inc.セミラティス構造とツリー構造https://www.researchgate.net/figure/Semilattice-a-and-Tree-Structures-b-Source-A-City-is-Not-a-Tree- _fig _
© - BASE, Inc.セミラティス構造• 重複を許すように分割するときに出来る構造• 市⺠の活動はツリー構造には収まらない• ex. 仕事と週末、同じ地域で⾏うこともある• 都市は、セミレティス構造のまま扱わなければならない
© - BASE, Inc.1975年『オレゴン⼤学の実験』https://www.amazon.co.jp/dp/
© - BASE, Inc.建築‧計画を⾏うための6つの原理. 有機的秩序の原理 (The principle of organicorder). 参加の原理 (The principle of participation). 斬新的成⻑の原理 (The principle of piecemealgrowth). パターンの原理 (The principle of patterns). 診断の原理 (The principle of diagnosis). 調整の原理 (The principle of coordination)書籍 Alexandar C 『オレゴン⼤学の実験』
© - BASE, Inc.詳説:6つの原理• 有機的秩序の原理• 計画や施⼯は、全体を個別的な⾏為から徐々に⽣み出していくようなプロセスによって導かれること• 参加の原理• 建築内容や建設⽅法に関するすべての決定は利⽤者の⼿に委ねること書籍 Alexandar C 『オレゴン⼤学の実験』
© - BASE, Inc.詳説:6つの原理• 斬新的成⻑の原理• 各予算年度に企画される建築は、⼩規模なプロジェクトに特に重点を置くこと• パターンの原理• すべての設計と建設は、正式に採⽤されたパターンと呼ばれる計画原理の集合によって指導されること書籍 Alexandar C 『オレゴン⼤学の実験』
© - BASE, Inc.詳説:6つの原理• 診断の原理• 各コミュニティ全体の健康状態は、コミュニティの変遷のどの時点でも、どのスペースが⽣かされ、どのスペースが⽣かされていないか、を詳しく説明する定期的な診断に基づいて保護されること書籍 Alexandar C 『オレゴン⼤学の実験』
© - BASE, Inc.詳説:6つの原理• 調整の原理• 全体における有機的秩序の緩やかな⽣成は、利⽤者の推進する個々のプロジェクトの流れに制御を施す財政的処理によって確実なものとされること。書籍 Alexandar C 『オレゴン⼤学の実験』
© - BASE, Inc.1977年『パタン‧ランゲージ』https://www.amazon.co.jp/dp/
© - BASE, Inc.パタン‧ランゲージ• 建築において繰り返し現れる構造を再利⽤しやすい形式にまとめたもの• 利⽤者と設計者の共通⾔語として使うことで、利⽤者が⾃分⾃⾝で建築の設計を⾏い、本当に望んだ建築を実現できる⽤になることを⽬指した書籍 Alexandar C 『パタン‧ランゲージ』
© - BASE, Inc.『パタン‧ランゲージ』の3つの部• 「町」:都市の⼤きな配置を考えるための⼤きなパターン• 「建築」:敷地の空間にどのように建物を配置すべきかというパターン• 「施⾏」:建物の構造‧材料、柱‧壁、床‧天井などの⼀つ⼀つの構造を決めるためのパターン
© - BASE, Inc.パタン‧ランゲージによる建築• 部品を⽤意してつなぎ合わせるというわけではない• 利⽤者と建築家をつなぐための⼯夫の集積、そのための道具の⼀つ
© - BASE, Inc.1979年『時を超えた建設の道』https://www.amazon.co.jp/dp/
© - BASE, Inc.『時を超えた建設の道』• ⼀連の著作の背景理論を述べた理論書• 「無名の質(QWAN: Quality WithoutA Name)」• ⽣き⽣きとした建物や町が持つ特性
© - BASE, Inc.第⼆章まとめ• 建築家アレグザンダーによる理論• 建築‧計画するための「6つの原理」• 「パタン‧ランゲージ」• 「無名の質」
© - BASE, Inc.OOPSLA• Object-Oriented Programming,Systems, Languages, andApplications• オブジェクト指向に関するシンポジウム• 1986年 オレゴンにて第⼀回開催
© - BASE, Inc.アレグザンダー⽒の理論の適⽤の初めhttps://en.wikipedia.org/wiki/Ward_Cunningham https://en.wikipedia.org/wiki/Kent_BeckWard Cunningham Kent Beck
© - BASE, Inc.パタン‧ランゲージへの興味https://www.amazon.co.jp/dp/Kent Beck⽒は、⼤学⽣のときに⽣協でこの書籍を読んだそう
http://wiki.c .com/?SemiconductorTestSystemsGroup
© - BASE, Inc.パターンを使ったシステム設計の試み• システム利⽤者に最終設計をしてもらう• ユーザーインターフェースに関するパターン5つ収集• パターンを使って設計してもらう
© - BASE, Inc.1987年 “Using Pattern Languages for Object-Oriented Programs”http://c .com/doc/oopsla .html
© - BASE, Inc.Using Pattern Languages for Object-OrientedPrograms• ユーザーインターフェースの設計をシステム設計に取り込む• 旧来の設計⽅法論(構造化分析‧エンティティリレーションシップ)は有効ではないという主張• アレグザンダーのパタン‧ランゲージを取り⼊れる
© - BASE, Inc.• Erich Gamma⽒がソフトウェアの設計に繰り返し現れる構造に着⽬するようになる繰り返し現れる構造への着⽬
© - BASE, Inc.1988年 “ET++ - An Object-Oriented ApplicationFramework in C++ “http://citeseerx.ist.psu.edu/viewdoc/download?doi= . . . . &rep=rep &type=pdf
© - BASE, Inc.1992年 “Documenting Frameworks using Patterns”/ Ralph E. Johnsonhttps://www.researchgate.net/publication/ _Documenting_Frameworks_Using_Patterns
© - BASE, Inc.1994年 GoF (Gang of Four)• 1992年 OOPSLAで、Erich Gamma、RichardHelm、Ralph E. Johnson、John MatthewVlissides の4⼈組が顔合わせ• 1994年10⽉、書籍『オブジェクト指向における再利⽤のためのデザインパターン』を発表• ソフトウェア設計において繰り返し現れる構造をパターンとしてまとめる
© - BASE, Inc.1996年~ C プロジェクト• C: Chrysler Comprehensive Compensationproject• 1996年、Kent BeckがChrysler社に呼ばれる• COBOLで書かれた給与計算プログラムをSmalltalkに置き換えるプロジェクト• これまでのコミュニティのパターンを徹底的に実践
© - BASE, Inc.C プロジェクトで実践されたプラクティス• Unit Testing• Integration, Relentless Testing• Short Iterations• YAGNI (You’re NOT gonna need it!)• Code Ownership• Pair Programming• etc
© - BASE, Inc.1999年 『XP エクストリーム‧プログラミング⼊⾨』• Kent Beckによる発表の書籍• 良いとされている⾏動指針を極端なまでに実践してみようという発想• C プロジェクトで培ったプラクティスをまとめた
© - BASE, Inc.第三章まとめ• アレグザンダーのパタン‧ランゲージの取り組みをソフトウェア設計に取り⼊れる試み• GoF デザインパターン• XP
ttGoF令和PHPerXP
© - BASE, Inc.まとめ• 序章:ブランコの⽐喩• 第⼆章:クリストファー‧アレグザンダーの理論• 第三章:ソフトウェア設計への展開• 終章:まとめ
© - BASE, Inc.まとめ• ソフトウェア開発は⼤きく建築設計の理論に影響を受けている• デザインパターン‧XPは、Kent Beckとその周辺コミュニティが起こしたムーブメントであり、アレグザンダーの思想をプログラミングの世界に持ち込む試み
© - BASE, Inc.パタン‧ランゲージとの対応• 「町」 ≈ アーキテクチャ• ex. Layers, MVC etc• 「建築」 ≈ GoFのデザインパターン• 「施⾏」 ≈ 各⾔語での実装パターン• ex. Smalltalkベストプラクティスパターン書籍 江渡 浩⼀郎. パターン、Wiki、XP 時を超えた創造の原則
© - BASE, Inc.アレグザンダーの6つの原理とXP. 有機的秩序の原理 ≈ ストーリー. 参加の原理 ≈ 実顧客の参加. 斬新的成⻑の原理 ≈ インクリメンタル設計‧配置. パターンの原理 ≈ ストーリー. 診断の原理 ≈ 常時結合‧テストファーストプログラミング. 調整の原理 ≈ 根本原因の分析書籍 江渡 浩⼀郎. パターン、Wiki、XP 時を超えた創造の原則
© - BASE, Inc.この流れを知って• 単純にプラクティスとして覚えて実践するよりも、その背景にどういう成り⽴ちがあるか知ると、かけがえのない歴史の積み重ねの結果だと分かる
© - BASE, Inc.Special Thanks• 〈建築理論研究 07〉──クリストファー‧アレグザンダー『形の合成に関するノート∕都市はツリーではない』『パタン‧ランゲージ』• http:// plus .jp/monthly/ / /- .php
© - BASE, Inc.おしまい