Slide 1

Slide 1 text

© - BASE, Inc. デザインパターンを 出⾃から深く理解する PHPカンファレンス沖縄 2019 前夜祭 . . - @hgsgtk

Slide 2

Slide 2 text

© - BASE, Inc. 持ち帰っていただくこと • 「デザインパターン」を普段の視点ではあまり考え ない、その出⾃を視点に⾒る • 影響の⼤きい「パタン‧ランゲージ」を抑えた上 で、「デザインパターン」を⾒てみる

Slide 3

Slide 3 text

© - BASE, Inc. var_dump($hgsgtk); : @hgsgtk Kazuki Higashiguchi BASE BANK, Inc. / Dev Division / Tech Lead Software Developer

Slide 4

Slide 4 text

© - BASE, Inc. デザインパターン パタン‧ランゲージ パタン‧ランゲージとデザインパターン ⽬次

Slide 5

Slide 5 text

© - BASE, Inc. デザインパターン パタン‧ランゲージ パタン‧ランゲージとデザインパターン ⽬次

Slide 6

Slide 6 text

© - BASE, Inc. デザインパターンとは • オブジェクト指向ソフトウェアを設計する際の経験 を記録、カタログ化したもの • ソフトウェア設計において繰り返し現れる構造をパ ターンとしてまとめる • “種々の状況における設計上の⼀般的な問題の解法 に適⽤できるよう、オブジェクトやクラス間の通信 を記述したもの”

Slide 7

Slide 7 text

© - BASE, Inc. 1994年 GoF (Gang of Four) 1992年 OOPSLAで、Erich Gamma、Richard Helm、Ralph E. Johnson、John Matthew Vlissides の4⼈組が顔合わせ 1994年10⽉、書籍『オブジェクト指向における再利 ⽤のためのデザインパターン』を発表

Slide 8

Slide 8 text

© - BASE, Inc. 1994年『オブジェクト指向における再利⽤のためのデザインパターン』 https://www.amazon.co.jp/dp/

Slide 9

Slide 9 text

© - BASE, Inc. デザインパターン間の関連 https://www.simonvandyk.co.za/writes/ / / /software-design-patterns-in-c-uml

Slide 10

Slide 10 text

© - BASE, Inc. Abstract Factory Factory Method Singleton Builder Prototype ⽣成に関するパターン

Slide 11

Slide 11 text

© - BASE, Inc. Adapter Composite Facade Bridge Decorator Flyweight Proxy 構造に関するパターン

Slide 12

Slide 12 text

© - BASE, Inc. Chain of Responsibility Interpreter Mediator Command Iterator Memento 振る舞いに関するパターン

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

© - BASE, Inc. パターン名と分類 別名 適⽤可能性 ⽬的 動機 構造 協調関係 実装 構成要素 結果 デザインパターンのテンプレート(GoF Form)詳細

Slide 15

Slide 15 text

© - BASE, Inc. サンプルコード 関連するパターン 使⽤例 デザインパターンのテンプレート(GoF Form)

Slide 16

Slide 16 text

© - BASE, Inc. 例: Composite pattern https://www.codeproject.com/Articles/ /Illustrated-GOF-Design-Patterns-in-C-Part-II-Struc

Slide 17

Slide 17 text

© - BASE, Inc. パタン‧ランゲージの影響 “我々の成果は、Alexanderのものといろいろな意味 で似ている。どちらも、既存のシステムを観察してそ の中にあるパターンを⾒つけることを基礎に置いてい る。” ErichGamma、RichardHelm、RalphJohnson、JohnVlissides著∕本位⽥真⼀、吉⽥和樹監訳『オブジェクト指向における再利 ⽤のためのデザインパターン改訂版』ソフトバンククリエイティブ、1999、p.

Slide 18

Slide 18 text

© - BASE, Inc. 参考: アレグザンダーの建築理論とソフトウェア設計の関係性 https://speakerdeck.com/hgsgtk/where-did-the-swing-metaphor-come-from

Slide 19

Slide 19 text

© - BASE, Inc. デザインパターンまとめ • Gang of Four • パターンに名前がつけられ、同じテンプレートで表 現される • 「パタン‧ランゲージ」のアイデアに影響を受け “似て”いる

Slide 20

Slide 20 text

© - BASE, Inc. デザインパターン パタン‧ランゲージ パタン‧ランゲージとデザインパターン ⽬次

Slide 21

Slide 21 text

© - BASE, Inc. 1977年『パタン‧ランゲージ―環境設計の⼿引』 https://www.amazon.co.jp/dp/

Slide 22

Slide 22 text

1936年ウィーン出⾝の都市 計画家‧建築家 建築‧都市計画の理論とし て、「パタン‧ランゲージ」 を提唱 © - BASE, Inc. クリストファー‧アレグザンダー https://en.wikipedia.org/wiki/Christopher_Alexander

Slide 23

Slide 23 text

© - BASE, Inc. 建築において繰り返し現れる構造を再利⽤しやすい形 式にまとめたもの 利⽤者と設計者の共通⾔語(ランゲージ)として使う ことで、利⽤者が⾃分⾃⾝で建築の設計を⾏い、本当 に望んだ建築を実現できるようになることを⽬指した パタン‧ランゲージ

Slide 24

Slide 24 text

© - BASE, Inc. 『パタン‧ランゲージ』の3つの部 「町」:都市の⼤きな配置を考えるための⼤きなパ ターン 「建築」:敷地の空間にどのように建物を配置すべき かというパターン 「施⾏」:建物の構造‧材料、柱‧壁、床‧天井など の⼀つ⼀つの構造を決めるためのパターン

Slide 25

Slide 25 text

© - BASE, Inc. 『パタン‧ランゲージ』パタン例 町: ⾃⽴地域‧町の分布‧フィンガー上の都市と⽥園 ..etc 建築: 複号建物‧⾒えない駐⾞場‧窓のある場所 ..etc 施⼯: ⽣活空間にしたがう構造‧深い窓枠 ..etc

Slide 26

Slide 26 text

© - BASE, Inc. パタンの相互関係 • パタンには序列がある • 町→建築→施⼯は直列的なつながりで機能する • 各パタンは、ランゲージの上位にある特定のパタ ン、下位にある特定のパタンと結びつく C‧アレグザンダー著∕平⽥ 翰那訳『パタン‧ランゲージ―環境設計の⼿引』あるパタン‧ランゲージ

Slide 27

Slide 27 text

© - BASE, Inc. パタン名 上位パタンへのつながり 下位パタンへのつながり 写真 本⽂ パタン‧ランゲージのテンプレート

Slide 28

Slide 28 text

例: パタン 180 WIDOW PLACE パタン名: 「窓のある場所」 上位パタンへのつながり: 「⽞関 室」‧「禅窓」‧「どの 部屋も2⾯採光」 ..etc 下位パタンへのつながり: 「アルコー ブ」‧「低い窓台」 ..etc © - BASE, Inc. C‧アレグザンダー著∕平⽥ 翰那訳『パタン‧ランゲージ―環境設計の⼿引』あるパタン‧ランゲージ https://www.pinterest.jp/pin/

Slide 29

Slide 29 text

© - BASE, Inc. パタン‧ランゲージまとめ • 繰り返し現れる構造を再利⽤しやすい形式にまとめ た • パタンのテンプレート(形式)を定義している • 町‧建築‧施⼯の⼤きく3つの分類 • パタンごとに相互関係を持ち、パタンを関係の順に 適⽤していくことで建築物を⽣成する

Slide 30

Slide 30 text

© - BASE, Inc. デザインパターン パタン‧ランゲージ パタン‧ランゲージとデザインパターン ⽬次

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

© - BASE, Inc. 相違点はどこから “建築とソフトウェアの根本的な性質の違いからくると⾔える でしょう。⼈が暮らす町、建物、部屋は、⼈が⼈の姿と機能 を持っている限り、たとえば⾝⻑や体重が⼀定の範囲に収ま るといった暗黙の条件を備えています。しかしソフトウェア は、物としての実体を持っていないがゆえに、その前提条件を 暗黙の内に規定することはできません。” 江渡 浩⼀郎. パターン、Wiki、XP 時を超えた創造の原則 (WEB+DB PRESS plus) 9章 デザインパターン

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

© - BASE, Inc. パタン‧ランゲージとの対応 「町」 ≈ アーキテクチャ ex. Layers, MVC etc 「建築」 ≈ GoFのデザインパターン 「施⾏」 ≈ 各⾔語での実装パターン ex. Smalltalkベストプラクティスパターン 書籍 江渡 浩⼀郎. パターン、Wiki、XP 時を超えた創造の原則

Slide 36

Slide 36 text

© - BASE, Inc. “つまり⾔語には2つの機能がある。⼈間の過去の体験 を蓄積する機能。もう1つは、その蓄積された体験 (単語)を再利⽤(⽂法)して、無数の新しい概念 (⽂章)を作り出すという機能である。” C‧アレグザンダー著∕平⽥ 翰那訳『パタン‧ランゲージ―環境設計の⼿引』訳者あとがき

Slide 37

Slide 37 text

© - BASE, Inc. このトークでやったこと • デザインパターンと、その出⾃ともいえるパタン‧ ランゲージを抑えた • デザインパターンという概念の輪郭を、類似するも のと⽐較して捉え直した • デザインパターンという “⾔語” を基本に次の概念 が⽣まれているとも⾔える

Slide 38

Slide 38 text

© - BASE, Inc. まとめ(パターン作成者視点) • 名前をつけて⾔語とすることによる、経験の蓄積と 次の概念への発展の期待 • パターンを同じテンプレートで記述することによる わかりやすさ

Slide 39

Slide 39 text

© - BASE, Inc. まとめ(パターン利⽤者視点) • デザインパターンは完全なソフトウェアを作るもの ではないことは、発案者⾃⾝が⾔っていることに留 意 • 全てを解決できるわけではないが、これをひとつの “⾔語” として現状使えている。設計の “⾔語” とし て活⽤できる便利さがパターンにはある

Slide 40

Slide 40 text

© - BASE, Inc.