$30 off During Our Annual Pro Sale. View Details »

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

デザインパターンの使い方を パタン・ランゲージとの比較から考える / 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. X
    デザインパターンの使い⽅を
    パタン‧ランゲージとの⽐較から
    考える
    . . Object Oriented Conference
    - @hgsgtk

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    Kazuki Higashiguchi (@hgsgtk)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. © - BASE, Inc.
    たとえば、やかんをデザインするとする
    コンロ
    家族

    社会的
    情勢
    やかん
    ⼯場
    やかん
    の材料
    やかんは様々な状況に取り囲まれている

    View Slide

  14. © - BASE, Inc.
    デザイン⾏為を観察する枠組み
    コンテクスト = 求める形を取り囲む世界の状況全て

    コンロ
    家族

    社会的
    情勢
    やかん
    ⼯場
    やかん
    の材料

    View Slide

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

    View Slide

  16. © - BASE, Inc.
    コンテクストと形を適合させる
    コンロ
    家族

    社会的
    情勢
    やかん
    ⼯場
    やかん
    の材料

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. “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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. © - BASE, Inc.
    パタンの相互関係と序列
    • パタンには序列がある
    • 町→建築→施⼯は直列的なつながりで機能す

    • 各パタンは、ランゲージの上位にある特定の
    パタン、下位にある特定のパタンと結びつく
    CɾΞϨάβϯμʔஶʗฏా ᷨಹ༁
    ʰύλϯɾϥϯήʔδ―؀ڥઃܭͷखҾʱ͋Δύλϯɾϥϯήʔδ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  35. “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

    View Slide

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

    View Slide

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

    View Slide

  38. “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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  62. Photo by Sorasak on Unsplash
    まとめ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide