Slide 1

Slide 1 text

© - BASE, Inc. X デザインパターンの使い⽅を パタン‧ランゲージとの⽐較から 考える . . Object Oriented Conference - @hgsgtk

Slide 2

Slide 2 text

https://fortee.jp/object-oriented-conference-2020/proposal/11ec9777-ea5c-48b8-81c5-f9b840d89548

Slide 3

Slide 3 text

© - BASE, Inc. デザインパターンの使い⼿の “間違い” “デザインパターンを⾒る場合、たいてい の⼈はそのパターンが提供する解決策を 重視します。(中略)しかし、これを前提 にすると、間違った⽅向に進んでしまう のです。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 10.4 デザインパターンの使⽤ https://www.amazon.co.jp/dp/4621066048

Slide 4

Slide 4 text

© - BASE, Inc. 分量上仕⽅ない現象とも⾔える “Alexander のパターンは扱う問題を強調 しているが、我々のデザインパターンは解 決法についてより詳細に記述している。” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ https://www.amazon.co.jp/dp/4797311126

Slide 5

Slide 5 text

© - BASE, Inc. どう “間違えて” いる? “問題そのものを理解することなしに、問題領 域の中からパターンが適⽤できそうな部分を探 し出すというアプローチを取ってしまうと、何 をするかは⾒当がつくものの、いつそれを使う のかや何故それを使うのかといったことが判ら ないままになってしまうわけです。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 10.4 デザインパターンの使⽤

Slide 6

Slide 6 text

© - BASE, Inc. “正しく使う” ヒントはないか “Christopher Alexander は、建築物や社会に存 在するパターンを初めて研究した建築家で、それ らを⽣成するための「パターン⾔語」を開発し た。我々は彼の本に何度も勇気づけられてきた。” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ

Slide 7

Slide 7 text

© - BASE, Inc. 使い⽅をどのように考えるか • GoFが⼤きな影響をうけた Christoper Alexander のパタン‧ランゲージを知ることで、デザインパ ターンが何を⽬的とし、解決するのかがわかるの ではないか • そこから、どのようにデザインパターンと付き 合っていくか を探れるのではないか

Slide 8

Slide 8 text

© - BASE, Inc. About me • BASE BANK, Inc. / Dev Division / Tech Lead • PHP, Go, Python, AWS etc • 関連発表 • 「デザインパターンを出⾃から深く理解する」 / PHPカン ファレンス沖縄 2019 前夜祭 • 「ブランコの⽐喩はどこから来たのか」 / 第142回 PHP勉強 会 Kazuki Higashiguchi (@hgsgtk)

Slide 9

Slide 9 text

東野⾼等学校事務室 - 投稿者⾃⾝による作品, CC 表⽰-継承 4.0, https://commons.wikimedia.org/w/ index.php?curid= による パタン‧ランゲージを知る

Slide 10

Slide 10 text

© - 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/

Slide 11

Slide 11 text

© - 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&

Slide 12

Slide 12 text

⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デ ザイン⾏為の意味を問う』 https://www.amazon.co.jp/dp/4395320465 “デザインの究極的な⽬標は形だ”

Slide 13

Slide 13 text

© - BASE, Inc. たとえば、やかんをデザインするとする コンロ 家族 家 社会的 情勢 やかん ⼯場 やかん の材料 やかんは様々な状況に取り囲まれている

Slide 14

Slide 14 text

© - BASE, Inc. デザイン⾏為を観察する枠組み コンテクスト = 求める形を取り囲む世界の状況全て 形 コンロ 家族 家 社会的 情勢 やかん ⼯場 やかん の材料

Slide 15

Slide 15 text

⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デ ザイン⾏為の意味を問う』 Ⅱ デザインの⾒⽅ https://www.amazon.co.jp/dp/4395320465 “すべてのデザインの問題は、次の⼆つの 実在の間に適合性をもたらそうとする努 ⼒から始まる。その⼆つの実在とは、求 める形とそのコンテクストである。”

Slide 16

Slide 16 text

© - BASE, Inc. コンテクストと形を適合させる コンロ 家族 家 社会的 情勢 やかん ⼯場 やかん の材料

Slide 17

Slide 17 text

© - BASE, Inc. デザイン問題の定義 ⻑坂 ⼀郎 著 『クリストファー‧アレグザンダーの思考の軌跡―デザイン⾏為の意味を 問う』 Ⅱ デザインの⾒⽅ コンテクスト 形 要求 適合 • コンテクストとは求める形に対して要求条件 (⼒)を提⽰してくるもの • 要求という⼒(フォース)に形を適合させようと する努⼒のことを、デザインと呼ぶ

Slide 18

Slide 18 text

© - BASE, Inc. (補⾜)デザインの三つの段階 .現実世界の段階(無⾃覚な状況) .イメージの段階(⾃覚的な状況) .形式的操作の段階(記号的な状況) クリストファー‧アレグザンダー 著∕稲葉 武司, 押野⾒ 邦英 訳 『形の合成に関するノート/都市はツリーではない』 6 プログラム

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

© - BASE, Inc. (補⾜)イメージの段階 コンテクスト 形 要求 適合 イメージの世界の中でデザインが進んでいく 現実 コンテクスト 形 イメージ https://archi.fukuicompu.co.jp/products/architrendzero/download/ zumen/04_heimenzu.pdf Cons) : 間接的であるため間違える可能性 2: 処理対象の情報量増加に耐えられない

Slide 21

Slide 21 text

© - BASE, Inc. (補⾜)形式的操作の段階 コンテクスト 形 要求 適合 より⼀般的で抽象的な記号で表す、⾼度な抽象概念 を操作することで適合する 現実 コンテクスト 形 イメージ 形式的操作 コンテクスト 形

Slide 22

Slide 22 text

クリストファー‧アレグザンダー再考 | 難波和彦 http://db.10plus1.jp/backnumber/article/articleid/1378/ “彼は形とコンテクストをすべて記号化し、デザイ ナーの経験や勘に頼っているこれまでの曖昧なプロ セスに代えて、デザイン‧プロセスを誰もが理解で きるようにグラスボックス化‧⺠主化しようとし た。その後アレグザンダーの⽅法は⼤きく転回する が、デザイン‧プロセスのグラスボックス化‧⺠主 化をめざすという⽬標は現在に⾄るまで変わってい ない。”

Slide 23

Slide 23 text

“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

Slide 24

Slide 24 text

© - 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

Slide 25

Slide 25 text

クリストファー‧アレグザンダー再考 | 難波和彦 http://db.10plus1.jp/backnumber/article/articleid/1378/ “建設的ダイアグラムの中には、状況が変化してもく り返し現われるものがある。それをパタンとして抽 出し、パタンのネットワークすなわちパタンによっ て綴られた⾔語としてセミラチスな環境をつくり出 そうとするのがパタン‧ランゲージである。”

Slide 26

Slide 26 text

© - BASE, Inc. パタン‧ランゲージ • 建築において繰り返し現れる構造を再利⽤しやす い形式にまとめたもの • 利⽤者と設計者の共通⾔語(ランゲージ)として 使うことで、利⽤者が⾃分⾃⾝で建築の設計を⾏ い、本当に望んだ建築を実現できるようになるこ とを⽬指した • コンフリクトから開放された都市の幾何学的関係 を求めようとした

Slide 27

Slide 27 text

© - BASE, Inc. パタン‧ランゲージの構造 パタンはどれも同⼀のフォーマットにまとめられる コンテクスト パターン名 問題 解決 結果 井庭 崇著,編集∕中埜 博, ⽵中 平蔵, 江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄⼀ 『パター ン‧ランゲージ: 創造的な未来をつくるための⾔語 (リアリティ‧プラス)』第3 章 政策⾔語=政策デザインのパターン‧ランゲージをつくる フォース の対⽴‧葛藤 (=コンフリクト) フォース の対⽴‧葛藤 の解消

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

© - BASE, Inc. パタンは⾃然⾔語で記述される CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ 「町」 「建築」 「施⼯」 ⾃⽴地域‧町の分布‧フィンガー上の都市と⽥ 園 ..etc 複号建物‧⾒えない駐⾞場‧窓のある場所 ..etc ⽣活空間にしたがう構造‧深い窓枠 ..etc 誰にでも理解でき、誰もがデザイン‧プロセスに参 加することができる

Slide 30

Slide 30 text

© - BASE, Inc. パターンの集積に対する⼀連の操作⼿順 CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ʰ࣌Λ௒͑ͨݐઃͷಓʱ 19ষ ۭؒͷ෼Խ “個々のパタンは空間分化の操作者である。つま り、差異のないところに差異を⽣じさせるのであ る。(中略)ランゲージとは、このような⼀連の 操作のシーケンスである。それぞれの操作が、そ れ以前の産物であるイメージを、更に分化してい くのである。”

Slide 31

Slide 31 text

© - BASE, Inc. パタンの相互関係と序列 • パタンには序列がある • 町→建築→施⼯は直列的なつながりで機能す る • 各パタンは、ランゲージの上位にある特定の パタン、下位にある特定のパタンと結びつく CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ

Slide 32

Slide 32 text

© - BASE, Inc. 上位パタン‧下位パタンと連なる パタン(180)名: 「窓のある場所」 上位パタンへのつながり: 「⽞関 室」‧「禅窓」‧「どの 部屋も2⾯採光」 ..etc 下位パタンへのつながり: 「アル コーブ」‧「低い窓台」 ..etc CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁ ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ

Slide 33

Slide 33 text

https://www.simonvandyk.co.za/writes/ / / /software-design-patterns-in-c-uml デザイン‧パターン == パタン‧ランゲージ ?

Slide 34

Slide 34 text

https://www.youtube.com/watch?v= LdFA-_zfA

Slide 35

Slide 35 text

“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

Slide 36

Slide 36 text

© - BASE, Inc. Alexander ⽒の評価(私訳) • うまくいっている点 • フォーマットによるプログラミングア イデアの交換 • 機能しているとは⾔えない点 • ⽣きている構造を⽣む道徳的能⼒ • ⼀貫した全体性を作り出す⽣成能⼒

Slide 37

Slide 37 text

© - BASE, Inc. フォーマット > GoF視点の類似点 . 既存システムを観察してその中にあるパターンを⾒つけることを基 礎においている .パターンを記述するためのテンプレートを 持っている(=フォーマット) . 形式⾔語ではなく⾃然⾔語と多数の例を使⽤し、それぞれのパター ンに理論的な根拠を与えている ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳『オ ブジェクト指向における再利⽤のためのデザインパターン改訂版』 6.3 パターンのコミュニティ

Slide 38

Slide 38 text

“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

Slide 39

Slide 39 text

© - BASE, Inc. 道徳的能⼒についての指摘 ソフトウェアパターンによってプログラム は “良く”なるが、実際の⼈間の⽣活が良 くなるわけではないのではないか、とい う指摘

Slide 40

Slide 40 text

“熟達したデザイナー(エンジニア)とそうでないデ ザイナー(エンジニア)の差を埋めるために、パ ターン‧ランゲージが⽤いれるようになった。(中 略)そこにはユーザーは登場せず、デザイナーと ユーザーのコラボレーションは視野から外れてし まった。”(井庭 崇⽒) 井庭 崇著,編集∕中埜 博, ⽵中 平蔵, 江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄⼀ 『パターン‧ランゲージ: 創造的な未来をつくるための⾔語 (リアリティ‧プラス)』序章 創造的な未来をつくるための⾔語 https://www.amazon.co.jp/dp/4766419871

Slide 41

Slide 41 text

© - BASE, Inc. ⽣成能⼒ > GoF視点の相違点 . 建築物には数千年の歴史があり、利⽤できる古典も多い。ソフト ウェアシステムの場合は歴史がずっと短く、古典と呼べるものはほ とんどない . Alexanderはパターンを利⽤する優先順位を付けたが、我々は順位 を付けていない . Alexanderのパターンは扱う問題を強調しているが、我々のデザイ ンパターンは解決⽅法についてより詳細に記述している .Alexanderは提案したパターンによって完全な建築物が⽣ 成できると主張しているが、我々は提案したパターンに よって完全なプログラムが⽣成できるとは主張していない ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳『オ ブジェクト指向における再利⽤のためのデザインパターン改訂版』 6.3 パターンのコミュニティ

Slide 42

Slide 42 text

“Alexander の⾒⽅によれば、本書に⽰したパターン はパターン⾔語を構成してはいない。構築されたソ フトウェアシステムの多様性を考えると、ステップ バイステップにアプリケーション設計指針を与える ような 完璧な パターン集合を提供することは困難で ある” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ

Slide 43

Slide 43 text

“デザインパターンは、ソフトウェアのための広範な パターン⾔語の⼀部に過ぎない” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ

Slide 44

Slide 44 text

© - BASE, Inc. 「町」‧「建築」‧「施⼯」の中で「建築」のみを扱う 「町」 江渡 浩⼀郎著『パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus)』 章 デザインパターン http://gihyo.jp/magazine/wdpress/plus/978-4-7741-3897-8 「建築」 「施⼯」 アーキテクチャ デザインパターン 実装パターン ex. SmallTalkベストプラクティス ex. Layersパターン, MVCパターン

Slide 45

Slide 45 text

© - BASE, Inc. ⽣成能⼒についての限定的な能⼒ • パタン‧ランゲージは、町‧建築‧施⼯と、広く カバーした上で、それぞれのパタンを使⽤するこ とで、完全な建造物が⽣成できるとしていた • デザインパターンは、パタン‧ランゲージの⼀部 のみであり、順序をもった設計指針を与えている わけではない

Slide 46

Slide 46 text

Photo by Caspar Camille Rubin on Unsplash デザインパターンを使う

Slide 47

Slide 47 text

© - BASE, Inc. いかに使えそうか • AlexanderとGoFの⾒解が⼀致している 点は、フォーマットがもたらす機能性 だった • つまり、デザイン‧パターンは、名前と それぞれが同⼀構造を持つ、開発者間の 語彙(ランゲージ)となる

Slide 48

Slide 48 text

© - BASE, Inc. デザイン‧パターンの構造 パタン‧ランゲージ同様、同⼀のフォーマットにま とめられる コンテクスト パターン名 問題 解決 結果 フォース

Slide 49

Slide 49 text

© - BASE, Inc. 同じデザイン問題ではある コンテクスト 形 要求 適合 • コンテクストが提⽰するフォースに形を適合させ ようとする努⼒であることは変わらない

Slide 50

Slide 50 text

© - BASE, Inc. ソフトウェアにおけるコンテクスト コンテクストは、形を取り巻くすべての状況だと説 明した では、ソフトウェアにおけるコンテクストには、ど のような主要キャラクターがいるだろうか その中における、開発者というコンテクストはどの 程度の存在だろうか

Slide 51

Slide 51 text

© - BASE, Inc. プロダクトマネジメントトライアングル “ソフトウェア会社におけるプロダクトは事実 上、⼈々がアクセスできる環境にデプロイされた コードで構成されている。全てのプロダクトは三 つのこと、開発者、ユーザー、ビジネスで繋がっ ている。” 【翻訳】プロダクトマネジメントトライアングル https://ninjinkun.hatenablog.com/entry/the-product-management-triangle-ja

Slide 52

Slide 52 text

© - BASE, Inc. 開発者も「形」に影響するコンテクストである ソフトウェア‧プロダクトを取り巻くコ ンテクストは多数あるなかで、⽬が向く のがユーザーとビジネスだが、開発者と いうコンテクストも⼗分無視できない存 在感をもつ

Slide 53

Slide 53 text

© - BASE, Inc. コンテクスト‧問題に焦点を当てる • パタンという概念の前提にあるデザインの問題 は、コンテクストと形の間に適合性をもたらすこ とであった • 焦点を当てるべくは「コンテクスト‧問題」 コンテクスト パターン名 問題 解決 結果 フォース

Slide 54

Slide 54 text

© - BASE, Inc. デザイン‧パターンのフォーマットにおける「問題」 • パターン名: 設計における⽤語の語彙を増やすため • 問題: 問題と⽂脈 • 解法: 設計の要素、解法および責任、協調関係 • 結果: 適⽤した結果やトレードオフ

Slide 55

Slide 55 text

© - BASE, Inc. 例:Template Method パターン 問題: ⼀定レベルで整合性のある⼿続きや⼀連の⼿順が 存在するものの、個々の処理が詳細レベルで異なっ た実装になる可能性がある https://en.wikipedia.org/wiki/Template_method_pattern

Slide 56

Slide 56 text

User:Akendall - 投稿者⾃⾝による作品, CC 表⽰-継承 3.0, https://commons.wikimedia.org/w/index.php? curid= による デザインパターンを 補完する

Slide 57

Slide 57 text

© - BASE, Inc. デザインパターンとどう付き合っていくか デザインパターンは、それを順序⽴てて 適⽤していくことで完全なソフトウェア を形作るものではない。そのうえで「⽣ きた」ソフトウェアを作るにあたり、少 しでも補完する何かはないだろうか

Slide 58

Slide 58 text

“Alexander は創造⼒が不要だとは⾔っていない。彼の 提案したパターンの中には、その建築物を使⽤する⼈ の習慣を理解しなければ使いこなせないものもある し、彼が設計の ʻ詩’ を信じると⾔うとき、それは、パ ターン⾔語を超えた熟練レベルの存在が前提となってい る。” ErichGamma、RichardHelm、RalphJohnson、 JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳 『オブジェクト指向における再利⽤のためのデザインパター ン改訂版』 6.3 パターンのコミュニティ

Slide 59

Slide 59 text

“⼀つの指針としては、デザイン‧パターンを構成す る、よりクリエイティブでより根源的な「デザイ ン‧プリンシンプル」(設計原則)をエンジニアが しっかりと学び、⾝体化する。”(⽻⽣⽥ 栄⼀) 井庭 崇著,編集∕中埜 博, ⽵中 平蔵, 江渡 浩⼀郎, 中⻄ 泰⼈, ⽻⽣⽥ 栄⼀ 『パターン‧ランゲージ: 創造的な未来をつくるための⾔語 (リアリティ‧プラス)』第4章 パターン‧ランゲージとネイ チャー‧オブ‧オーダー https://www.amazon.co.jp/dp/4766419871

Slide 60

Slide 60 text

“(デザインパターンの)もう⼀つの有効な学習⽅法 は、デザインパターンの本質的なメカニズム、およ びそれが基にしている原則と戦略を学ぶというもの です。(中略)これは実際のところ、「後にパター ンと呼ばれることになる解決策」を考えだした開発 者の考え⽅、価値観を学ぶということなのです。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 14 デザインパターンの原則と戦略

Slide 61

Slide 61 text

© - BASE, Inc. 背後にある原則によって補完する • (SOLID原則) • 単⼀責任原則(Single Responsibility Principle) • 開放/閉鎖原則(open/closed principle) • 依存性逆転原則(dependency inversion principle) • リスコフ置換原則(Liskov substitution principle) • 流動性要素のカプセル化 • etc アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 14 デザインパターンの原則と戦略

Slide 62

Slide 62 text

Photo by Sorasak on Unsplash まとめ

Slide 63

Slide 63 text

© - BASE, Inc. どうやって正しく使うか • デザインパターンがパタンとして機能している点 は、フォーマットを通じたコミュニケーション • そこから読み取れるのは、「解決策」に⽬が向き がちだが、それらは先⼈たちが気がついた「コン テクスト」から発⽣する「問題」と、それに対す る「解決」という⼀連のデザイン問題の解決経験 である

Slide 64

Slide 64 text

“パターンが有効となるのは、あなたの思考を 助ける道具として使⽤する場合であり、パター ンを解決策につながる解答と捉えるべきではあ りません。” アラン‧シャロウェイ, ジェームズ‧R‧トロット著∕村上雅章訳 『オブジェクト指向のこころ』 14.6 健全な猜疑⼼

Slide 65

Slide 65 text

“その結果何が起きたかというと、無⽬的なデ ザインパターンの乱⽤です。⽬的はわからない けど、デザインパターンを盛り込んだ⽅がソフ トウェアが⾼級になるらしい、なんてとんでも ない迷信がはびこったのです。⽬的のないパ ターンはただの難読化です。” GoF デザインパターン チートシート | ちょうぜつ Advent Calendar Day | @tanakahisateru https://qiita.com/tanakahisateru/items/df d f d a a

Slide 66

Slide 66 text

© - BASE, Inc. なぜ⾒失ったのか • いつ使うか‧何故使うのかを⾒失っていたのは、 そのパターンのコンテクスト‧問題を⾒逃してい たからと⾔える • 「認識のメガネ」としてパターンを使って、コー ドの問題を⾒る • コンテクスト‧問題に脳内インデックスをはっ て、現場で問題に対する検索精度を上げていくこ とが、正しい使い⽅なのかもしれません

Slide 67

Slide 67 text

© - 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)』

Slide 68

Slide 68 text

© - 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)』

Slide 69

Slide 69 text

© - 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

Slide 70

Slide 70 text

© - BASE, Inc. X END . . Object Oriented Conference - @hgsgtk