Upgrade to Pro — share decks privately, control downloads, hide ads and more …

デザインパターンの使い方を パタン・ランゲージとの比較から考える / design-patte...

デザインパターンの使い方を パタン・ランゲージとの比較から考える / design-pattern-usage-inspired-by-pattern-language

Object Oriented Conference 2020 にて発表した内容です。

Kazuki Higashiguchi

February 16, 2020
Tweet

More Decks by Kazuki Higashiguchi

Other Decks in Technology

Transcript

  1. © - BASE, Inc. デザインパターンの使い⼿の “間違い” “デザインパターンを⾒る場合、たいてい の⼈はそのパターンが提供する解決策を 重視します。(中略)しかし、これを前提 にすると、間違った⽅向に進んでしまう

    のです。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 10.4 デザインパターンの使⽤ https://www.amazon.co.jp/dp/4621066048
  2. © - BASE, Inc. 分量上仕⽅ない現象とも⾔える “Alexander のパターンは扱う問題を強調 しているが、我々のデザインパターンは解 決法についてより詳細に記述している。” ErichGamma、RichardHelm、RalphJohnson、

    JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ https://www.amazon.co.jp/dp/4797311126
  3. © - BASE, Inc. どう “間違えて” いる? “問題そのものを理解することなしに、問題領 域の中からパターンが適⽤できそうな部分を探 し出すというアプローチを取ってしまうと、何

    をするかは⾒当がつくものの、いつそれを使う のかや何故それを使うのかといったことが判ら ないままになってしまうわけです。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 10.4 デザインパターンの使⽤
  4. © - BASE, Inc. “正しく使う” ヒントはないか “Christopher Alexander は、建築物や社会に存 在するパターンを初めて研究した建築家で、それ

    らを⽣成するための「パターン⾔語」を開発し た。我々は彼の本に何度も勇気づけられてきた。” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ
  5. © - BASE, Inc. 使い⽅をどのように考えるか • GoFが⼤きな影響をうけた Christoper Alexander のパタン‧ランゲージを知ることで、デザインパ

    ターンが何を⽬的とし、解決するのかがわかるの ではないか • そこから、どのようにデザインパターンと付き 合っていくか を探れるのではないか
  6. © - BASE, Inc. About me • BASE BANK, Inc.

    / Dev Division / Tech Lead • PHP, Go, Python, AWS etc • 関連発表 • 「デザインパターンを出⾃から深く理解する」 / PHPカン ファレンス沖縄 2019 前夜祭 • 「ブランコの⽐喩はどこから来たのか」 / 第142回 PHP勉強 会 Kazuki Higashiguchi (@hgsgtk)
  7. © - BASE, Inc. Christopher Alexander https://en.wikipedia.org/wiki/ Christopher_Alexander • 1936年ウィーン出⾝の都市計画

    家‧建築家 • 主なキーワード • 「パタン‧ランゲージ」 • 「無名の質(Quality Without A Name)」 https://www.amazon.co.jp/dp/ 
 https://www.amazon.co.jp/dp/ https://www.amazon.co.jp/dp/ https://www.amazon.co.jp/dp/ X https://www.amazon.co.jp/dp/
  8. © - BASE, Inc. アレグザンダーが追い求めた建築像 “すべての建築の⽬的、その幾何学的構成の⽬的と は、⽣き⽣きとした場所をもたらすことである。建 築の中⼼的課題は、⼈が⽣きるに値する暮らしを送 れるように、⽣き⽣きとした⼼地よさ、深い満⾜— 時には刺激—を維持し、促進するような構造を想像

    することである。このような⽬的が忘れ去られたと き、語るに⾜る建築など全く存在しない。” Christopher Alexander 著 『The Battle for the Life and Beauty of the Earth: A Struggle Between Two World-Systems』 https://global.oup.com/academic/product/the-battle-for-the-life-and- beauty-of-the-earth-9780199898077?cc=jp&lang=en&
  9. © - BASE, Inc. たとえば、やかんをデザインするとする コンロ 家族 家 社会的 情勢

    やかん ⼯場 やかん の材料 やかんは様々な状況に取り囲まれている
  10. © - BASE, Inc. デザイン問題の定義 ⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デザイン⾏為の意味を 問う』

    Ⅱ デザインの⾒⽅ コンテクスト 形 要求 適合 • コンテクストとは求める形に対して要求条件 (⼒)を提⽰してくるもの • 要求という⼒(フォース)に形を適合させようと する努⼒のことを、デザインと呼ぶ
  11. © - BASE, Inc. (補⾜)現実世界の段階 コンテクスト 形 要求 適合 https://photohito.com/photo/

    /?cid=kinarino_presses 求める形でじかに触れ合うことを通じてコンテクス トに適合する形を求める 現実 Cons) : 時間‧コストというコンテクスト 2: 情報共有、個⼈の感覚の世界
  12. © - BASE, Inc. (補⾜)イメージの段階 コンテクスト 形 要求 適合 イメージの世界の中でデザインが進んでいく

    現実 コンテクスト 形 イメージ https://archi.fukuicompu.co.jp/products/architrendzero/download/ zumen/04_heimenzu.pdf Cons) : 間接的であるため間違える可能性 2: 処理対象の情報量増加に耐えられない
  13. © - BASE, Inc. (補⾜)形式的操作の段階 コンテクスト 形 要求 適合 より⼀般的で抽象的な記号で表す、⾼度な抽象概念

    を操作することで適合する 現実 コンテクスト 形 イメージ 形式的操作 コンテクスト 形
  14. “It was important from the beginning, because one of the

    characteristics of any good environment is that every part of it is extremely highly adapted to its particularities. That local adaptation can happen successfully only if people (who are locally knowledgeable) do it for themselves.” Keynote Speech to the OOPSLA Convention by Christopher Alexander https://www.patternlanguage.com/archive/ieee.html
  15. © - BASE, Inc. (補⾜)思考の変遷:ツリー構造からセミラチス構造へ 1964. 『形の合成に関するノート』 • 数学的に解ける問題 •

    要求条件を細分化 • ツリー構造に還元 http://www.girlwonder.com/tag/cybernetics 1965. 『都市はツリーではない』 • 「⼈⼯都市」を批判、ツリー構造とな る • 「⾃然都市」は、⼀つの場所が複数 の役割を同時に担うセミラチス構造 https://www.researchgate.net/figure/Semilattice-a-and-Tree-Structures-b-Source-A-City-is-Not-a-Tree-4_fig1_333821711
  16. © - BASE, Inc. パタン‧ランゲージ • 建築において繰り返し現れる構造を再利⽤しやす い形式にまとめたもの • 利⽤者と設計者の共通⾔語(ランゲージ)として

    使うことで、利⽤者が⾃分⾃⾝で建築の設計を⾏ い、本当に望んだ建築を実現できるようになるこ とを⽬指した • コンフリクトから開放された都市の幾何学的関係 を求めようとした
  17. © - BASE, Inc. パタン‧ランゲージの構造 パタンはどれも同⼀のフォーマットにまとめられる コンテクスト パターン名 問題 解決

    結果 井庭 崇著,編集∕中埜 博, ⽵中 平蔵, 江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄⼀ 『パター ン‧ランゲージ: 創造的な未来をつくるための⾔語 (リアリティ‧プラス)』第3 章 政策⾔語=政策デザインのパターン‧ランゲージをつくる フォース の対⽴‧葛藤 (=コンフリクト) フォース の対⽴‧葛藤 の解消
  18. © - BASE, Inc. パタン‧ランゲージは3つの部からなる CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ 「町」 「建築」

    「施⼯」 都市の⼤きな配置を考えるための⼤きなパ ターン 敷地の空間にどのように建物を配置すべきか というパターン 建物の構造‧材料、柱‧壁、床‧天井などの ⼀つ⼀つの構造を決めるためのパターン
  19. © - BASE, Inc. パタンは⾃然⾔語で記述される CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ 「町」 「建築」

    「施⼯」 ⾃⽴地域‧町の分布‧フィンガー上の都市と⽥ 園 ..etc 複号建物‧⾒えない駐⾞場‧窓のある場所 ..etc ⽣活空間にしたがう構造‧深い窓枠 ..etc 誰にでも理解でき、誰もがデザイン‧プロセスに参 加することができる
  20. © - BASE, Inc. パターンの集積に対する⼀連の操作⼿順 CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ʰ࣌Λ௒͑ͨݐઃͷಓʱ 19ষ ۭؒͷ෼Խ “個々のパタンは空間分化の操作者である。つま

    り、差異のないところに差異を⽣じさせるのであ る。(中略)ランゲージとは、このような⼀連の 操作のシーケンスである。それぞれの操作が、そ れ以前の産物であるイメージを、更に分化してい くのである。”
  21. © - BASE, Inc. パタンの相互関係と序列 • パタンには序列がある • 町→建築→施⼯は直列的なつながりで機能す る

    • 各パタンは、ランゲージの上位にある特定の パタン、下位にある特定のパタンと結びつく CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ
  22. © - BASE, Inc. 上位パタン‧下位パタンと連なる パタン(180)名: 「窓のある場所」 上位パタンへのつながり: 「⽞関 室」‧「禅窓」‧「どの

    部屋も2⾯採光」 ..etc 下位パタンへのつながり: 「アル コーブ」‧「低い窓台」 ..etc CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ
  23. “So far, as a lay person trying to read some

    of the works that have been published by you in this field, it looks to me more as though mainly the pattern concept, for you, is an inspiring format that is a good way of exchanging fragmentary, atomic, ideas about programming. Indeed, as I understand it, that part is working very well. But these other two dimensions, ( ) the moral capacity to produce a living structure and ( ) the generativity of the thing, its capability of producing coherent wholes—I haven't seen very much evidence of those two things in software pattern theory” Keynote Speech to the OOPSLA Convention by Christopher Alexander https://www.patternlanguage.com/archive/ieee.html
  24. © - BASE, Inc. Alexander ⽒の評価(私訳) • うまくいっている点 • フォーマットによるプログラミングア

    イデアの交換 • 機能しているとは⾔えない点 • ⽣きている構造を⽣む道徳的能⼒ • ⼀貫した全体性を作り出す⽣成能⼒
  25. © - BASE, Inc. フォーマット > GoF視点の類似点 . 既存システムを観察してその中にあるパターンを⾒つけることを基 礎においている

    .パターンを記述するためのテンプレートを 持っている(=フォーマット) . 形式⾔語ではなく⾃然⾔語と多数の例を使⽤し、それぞれのパター ンに理論的な根拠を与えている ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳『オ ブジェクト指向における再利⽤のためのデザインパターン改訂版』 6.3 パターンのコミュニティ
  26. “I understand that the software patterns, insofar as they refer

    to objects and programs and so on, can make a program better. That isn't the same thing, because in that sentence "better" could mean merely technically efficient, not actually "good." Again, if I'm translating from my experience, I would ask that the use of pattern language in software has the tendency to make the program or the thing that is being created is morally profound—actually has the capacity to play a more significant role in human life.” Keynote Speech to the OOPSLA Convention by Christopher Alexander https://www.patternlanguage.com/archive/ieee.html
  27. © - BASE, Inc. ⽣成能⼒ > GoF視点の相違点 . 建築物には数千年の歴史があり、利⽤できる古典も多い。ソフト ウェアシステムの場合は歴史がずっと短く、古典と呼べるものはほ

    とんどない . Alexanderはパターンを利⽤する優先順位を付けたが、我々は順位 を付けていない . Alexanderのパターンは扱う問題を強調しているが、我々のデザイ ンパターンは解決⽅法についてより詳細に記述している .Alexanderは提案したパターンによって完全な建築物が⽣ 成できると主張しているが、我々は提案したパターンに よって完全なプログラムが⽣成できるとは主張していない ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳『オ ブジェクト指向における再利⽤のためのデザインパターン改訂版』 6.3 パターンのコミュニティ
  28. © - BASE, Inc. 「町」‧「建築」‧「施⼯」の中で「建築」のみを扱う 「町」 江渡 浩⼀郎著『パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB

    PRESS plus)』 章 デザインパターン http://gihyo.jp/magazine/wdpress/plus/978-4-7741-3897-8 「建築」 「施⼯」 アーキテクチャ デザインパターン 実装パターン ex. SmallTalkベストプラクティス ex. Layersパターン, MVCパターン
  29. © - BASE, Inc. いかに使えそうか • AlexanderとGoFの⾒解が⼀致している 点は、フォーマットがもたらす機能性 だった •

    つまり、デザイン‧パターンは、名前と それぞれが同⼀構造を持つ、開発者間の 語彙(ランゲージ)となる
  30. © - BASE, Inc. 同じデザイン問題ではある コンテクスト 形 要求 適合 •

    コンテクストが提⽰するフォースに形を適合させ ようとする努⼒であることは変わらない
  31. © - BASE, Inc. デザイン‧パターンのフォーマットにおける「問題」 • パターン名: 設計における⽤語の語彙を増やすため • 問題:

    問題と⽂脈 • 解法: 設計の要素、解法および責任、協調関係 • 結果: 適⽤した結果やトレードオフ
  32. “⼀つの指針としては、デザイン‧パターンを構成す る、よりクリエイティブでより根源的な「デザイ ン‧プリンシンプル」(設計原則)をエンジニアが しっかりと学び、⾝体化する。”(⽻⽣⽥ 栄⼀) 井庭 崇著,編集∕中埜 博, ⽵中 平蔵,

    江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄⼀ 『パターン‧ランゲージ: 創造的な未来をつくるための⾔語 (リアリティ‧プラス)』第4章 パターン‧ランゲージとネイ チャー‧オブ‧オーダー https://www.amazon.co.jp/dp/4766419871
  33. © - BASE, Inc. 背後にある原則によって補完する • (SOLID原則) • 単⼀責任原則(Single Responsibility

    Principle) • 開放/閉鎖原則(open/closed principle) • 依存性逆転原則(dependency inversion principle) • リスコフ置換原則(Liskov substitution principle) • 流動性要素のカプセル化 • etc アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 14 デザインパターンの原則と戦略
  34. © - BASE, Inc. どうやって正しく使うか • デザインパターンがパタンとして機能している点 は、フォーマットを通じたコミュニケーション • そこから読み取れるのは、「解決策」に⽬が向き

    がちだが、それらは先⼈たちが気がついた「コン テクスト」から発⽣する「問題」と、それに対す る「解決」という⼀連のデザイン問題の解決経験 である
  35. © - BASE, Inc. なぜ⾒失ったのか • いつ使うか‧何故使うのかを⾒失っていたのは、 そのパターンのコンテクスト‧問題を⾒逃してい たからと⾔える •

    「認識のメガネ」としてパターンを使って、コー ドの問題を⾒る • コンテクスト‧問題に脳内インデックスをはっ て、現場で問題に対する検索精度を上げていくこ とが、正しい使い⽅なのかもしれません
  36. © - BASE, Inc. 参考⽂献 • アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 •

    ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕ 本位⽥真⼀、吉⽥和樹監訳『オブジェクト指向における再利⽤のた めのデザインパターン改訂版』 • Keynote Speech to the OOPSLA Convention by Christopher Alexander • https://www.patternlanguage.com/archive/ieee.html • https://www.youtube.com/watch?v= LdFA-_zfA • 江渡 浩⼀郎著『パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus)』
  37. © - BASE, Inc. 参考⽂献 • C‧アレグザンダー著∕平⽥ 翰那訳 『パタン‧ランゲージ―環境設 計の⼿引』

    • C‧アレグザンダー著∕平⽥ 翰那訳『時を超えた建設の道』 • 井庭 崇著,編集∕中埜 博, ⽵中 平蔵, 江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄 ⼀ 『パターン‧ランゲージ: 創造的な未来をつくるための⾔語 (リア リティ‧プラス)』 • ⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デザ イン⾏為の意味を問う』 • Christopher Alexander 著 『The Battle for the Life and Beauty of the Earth: A Struggle Between Two World-Systems (Center for Environmental Structure)』
  38. © - BASE, Inc. 参考⽂献 • クリストファー‧アレグザンダー再考 | 難波和彦 •

    http://db. plus .jp/backnumber/article/articleid/ / • クリストファー‧アレグザンダー 著∕稲葉 武司, 押野⾒ 邦英 訳 『形 の合成に関するノート/都市はツリーではない』 • 【翻訳】プロダクトマネジメントトライアングル • https://ninjinkun.hatenablog.com/entry/the-product- management-triangle-ja • GoF デザインパターン チートシート | ちょうぜつ Advent Calendar Day | @tanakahisateru • https://qiita.com/tanakahisateru/items/df d f d a a