約30年の時を超えたデザインパターンの価値 -現代のスクラムチームの開発者がGoFのデザインパターンを学び直し得たもの- / The Timeless Quality of GoF Design Patterns
by
えわ
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
約30年の時を超えたデザインパターンの価値 -現代のスクラムチームの開発者がGoFのデザインパターンを学び直し得たもの- えわ (Yusuke Uchida) @ewa_mobile 2024/01/11 Regional Scrum Gathering Tokyo 2024
Slide 2
Slide 2 text
⾃⼰紹介 • えわ (Yusuke Uchida) • X(旧Twitter): @ewa_mobile • Cybozu • モバイルエンジニア • iOS / Android 2
Slide 3
Slide 3 text
GoFのデザインパターンについて 3
Slide 4
Slide 4 text
4 名前は知ってる 理解してる 使ったことがある Singletonとか! … GoFのデザインパターン
Slide 5
Slide 5 text
5 名前は知ってる 理解してる 使ったことがある 古い Singletonとか! … GoFのデザインパターン
Slide 6
Slide 6 text
GoFのデザインパターンとは GoF (Gang of Four) 本で紹介された23個の設計カタログ 建築家Christopher Alexanderからの影響 “オブジェクト指向システムにおいて重要でかつ 繰り返し現れる設計を、それぞれ体系的に名前づけし、 説明を加え、評価したものである。我々の⽬的は ⼈びとが効果的に利⽤できるような形式で設計経験を 整理することである。そのために、もっとも重要な デザインパターンをいくつか⽂書化し、カタログの 形で表⽰した。” 『オブジェクト指向における再利⽤のためのデザインパターン』より ※強調は発表者による 6
Slide 7
Slide 7 text
よく⾔われるメリット • 解決策を再利⽤できる • 共通⽤語を確⽴できる ※今⽇の発表で「パターン」「デザインパターン」と⾔った場合 基本的にはこのGoFのデザインパターンのことを指します 7
Slide 8
Slide 8 text
原著出版から約30年 原著出版は1995年 技術の移り変わりが激しい世界で2024年に • どれだけ役に⽴つ? • 学ぶ価値がどれだけある? 8
Slide 9
Slide 9 text
原著出版から約30年 原著出版は1995年 技術の移り変わりが激しい世界で2024年に • どれだけ役に⽴つ? • 学ぶ価値がどれだけある? 様々な意⾒、批判的なものも ※否定・反論したい話ではないので具体的に 触れませんが、⾃分⾃⾝過去に批判的な意⾒を 聞いて重要なものではないと思っていました 9
Slide 10
Slide 10 text
転機: Certified Scrum Developer (CSD) 研修 10 https://www.jp.agilergo.com/online-csd-bernstein-202306 David Bernstein • RSGT 2023 Keynote Speaker • 『レガシーコードからの脱却』著者 研修の半分がデザインパターン 様々な問いで理解を揺さぶられ 学び直しへ
Slide 11
Slide 11 text
実感したGoFのデザインパターンの価値 GoFのデザインパターンは設計原則を⽤いて適切に 抽象化している例 • 設計原則を適⽤するバリエーションを学べる • デザインパターンだけでなく設計原則の理解も同時に促進される 11
Slide 12
Slide 12 text
実感したGoFのデザインパターンの価値 GoFのデザインパターンは設計原則を⽤いて適切に 抽象化している例 • 設計原則を適⽤するバリエーションを学べる • デザインパターンだけでなく設計原則の理解も同時に促進される 実務の問題に働いている⼒を⾒極める能⼒が⾼まり、 デザインパターン以外の⽅法でも設計原則を適⽤して コードを適切な箇所で分割できるようになる 12
Slide 13
Slide 13 text
Target Audience & Learning Outcome 13
Slide 14
Slide 14 text
Target Audience / Learning Outcome Target オブジェクト指向⾔語で開発を⾏ってる スクラムチームの開発者で • GoFのデザインパターンをこれから学ぼうか悩んでいる • GoFのデザインパターンを学んだが活かし⽅に悩んでいる • 設計原則の適⽤⽅法に悩んでいる 14
Slide 15
Slide 15 text
Target Audience / Learning Outcome Target オブジェクト指向⾔語で開発を⾏ってる スクラムチームの開発者で • GoFのデザインパターンをこれから学ぼうか悩んでいる • GoFのデザインパターンを学んだが活かし⽅に悩んでいる • 設計原則の適⽤⽅法に悩んでいる Learning Outcome GoFのデザインパターンは単なる実装例のカタログではなく、 設計原則を学ぶための最⾼の教材だと感じた学び⽅を伝え、 GoFのデザインパターンを学んでみよう、学び直してみよう と思ってもらえる 15
Slide 16
Slide 16 text
今⽇の発表内容 16 GoFのデザインパターン
Slide 17
Slide 17 text
今⽇の発表内容 17 GoFのデザインパターン CSD研修 その後の学習 学び直しにつながる問い 効果的な学習⽅法
Slide 18
Slide 18 text
お断り • 個別のデザインパターンの詳細な説明は省略します • 知らなくても話の趣旨は理解してもらえるはず • 出てきたパターンを学んだ後⾒返すと新しい発⾒があるかも 18
Slide 19
Slide 19 text
アジャイル開発で なぜ設計原則が重要なのか 19
Slide 20
Slide 20 text
アジャイル開発での設計原則の重要性 20 短いサイクルで 開発・リリース
Slide 21
Slide 21 text
アジャイル開発での設計原則の重要性 21 サイクル毎に 回帰試験 短いサイクルで 開発・リリース
Slide 22
Slide 22 text
アジャイル開発での設計原則の重要性 22 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 短いサイクルで 開発・リリース
Slide 23
Slide 23 text
アジャイル開発での設計原則の重要性 23 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 短いサイクルで 開発・リリース 🙏
Slide 24
Slide 24 text
アジャイル開発での設計原則の重要性 24 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 🙏
Slide 25
Slide 25 text
アジャイル開発での設計原則の重要性 25 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 💥 🙏
Slide 26
Slide 26 text
アジャイル開発での設計原則の重要性 26 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース より⼩さく テスト可能な設計 💥 🙏
Slide 27
Slide 27 text
アジャイル開発での設計原則の重要性 27 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース より⼩さく テスト可能な設計 設計⼒ 設計原則の適⽤ 💥 🙏
Slide 28
Slide 28 text
アジャイル開発での設計原則の重要性 28 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 💥 🙏 設計⼒ 設計原則の適⽤
Slide 29
Slide 29 text
アジャイル開発での設計原則の重要性 29 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 リファクタリング 💥 🙏 設計⼒ 設計原則の適⽤
Slide 30
Slide 30 text
アジャイル開発での設計原則の重要性 30 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 リファクタリング 💥 🙏 💸 設計⼒ 設計原則の適⽤
Slide 31
Slide 31 text
アジャイル開発での設計原則の重要性 31 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 リファクタリング 💥 🙏 💸 設計⼒ 設計原則の適⽤
Slide 32
Slide 32 text
アジャイル開発での設計原則の重要性 開発のサイクルを健全に保ち開発速度を維持するために 設計原則とその使い⽅が重要 32 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 リファクタリング 💥 🙏 💸 設計⼒ 設計原則の適⽤
Slide 33
Slide 33 text
33 GoFのデザインパターン CSD研修 その後の学習 学び直しにつながる問い 効果的な学習⽅法
Slide 34
Slide 34 text
34 GoFのデザインパターン アジャイルで設計原則が重要 CSD研修 その後の学習 設計原則を学ぶための 最⾼の教材 学び直しにつながる問い 効果的な学習⽅法
Slide 35
Slide 35 text
CSD研修での 学び直しにつながった問い 35
Slide 36
Slide 36 text
講師からの問い 似ているパターン同⼠を⽐較して • そのパターンの意図は何なのか? • そのパターンは何をカプセル化しているのか? 36
Slide 37
Slide 37 text
講師からの問い 似ているパターン同⼠を⽐較して • そのパターンの意図は何なのか? • そのパターンは何をカプセル化しているのか? 印象的だった例 • Template MethodとStrategyの⽐較 • Decoratorと Chain of Responsibility (CoR)の⽐較 37
Slide 38
Slide 38 text
Template MethodとStrategyの⽐較 どちらもアルゴリズムの再利⽤を可能にする ⾊んな本で⽐較されていて、いわば鉄板の⽐較 38 Template Method Strategy
Slide 39
Slide 39 text
実装⽅法の違い: 継承か委譲か “ Template Methodパターンは継承を使って問題を解決し、 Strategyパターンは問題解決に委譲を使う。” 『アジャイルソフトウェア開発の奥義』より ※強調は発表者による 39 継承 委譲 Template Method Strategy
Slide 40
Slide 40 text
意図の違い “StrategyとTemplate Methodの違いの⼀つの⾒⽅は、 Strategyがアルゴリズムを変化させるために使われるのに対し、 Template Methodはアルゴリズムは共通で、そのステップを 変化させるために使われる” by David Bernstein ※強調は発表者による 40 アルゴリズムのステップ アルゴリズム Template Method Strategy
Slide 41
Slide 41 text
パターンの意図が重要 重要なのはクラス構造ではない 継承を使っていても意図を満たしていればTemplate Method 41
Slide 42
Slide 42 text
なぜ説明が異なるのか “template methodでは、アルゴリズムの⼀部を変更するために継承を 利⽤している。それに対してStrategyパターンでは、アルゴリズム全体を 変更するために委譲を利⽤している。” 『オブジェクト指向における再利⽤のためのデザインパターン』より ※強調は発表者による 42
Slide 43
Slide 43 text
なぜ説明が異なるのか “template methodでは、アルゴリズムの⼀部を変更するために継承を 利⽤している。それに対してStrategyパターンでは、アルゴリズム全体を 変更するために委譲を利⽤している。” 『オブジェクト指向における再利⽤のためのデザインパターン』より ※強調は発表者による 説明相⼿・⽬的に合わせた切り⼝の違い • 実装の違い: パターンを説明する⼊り⼝としてわかりやすいので着⽬ • 意図の違い: 設計原則をどう適⽤しているか理解をするために着⽬ 43
Slide 44
Slide 44 text
なぜ説明が異なるのか “template methodでは、アルゴリズムの⼀部を変更するために継承を 利⽤している。それに対してStrategyパターンでは、アルゴリズム全体を 変更するために委譲を利⽤している。” 『オブジェクト指向における再利⽤のためのデザインパターン』より ※強調は発表者による 説明相⼿・⽬的に合わせた切り⼝の違い • 実装の違い: パターンを説明する⼊り⼝としてわかりやすいので着⽬ • 意図の違い: 設計原則をどう適⽤しているか理解をするために着⽬ 意図に着⽬すると、設計原則を理解する教材として デザインパターンが機能することを実感 44
Slide 45
Slide 45 text
DecoratorとCoRの⽐較 どちらも複数の処理を連続で 呼び出すが、その違いは何か? 45
Slide 46
Slide 46 text
DecoratorとCoRの⽐較 どちらも複数の処理を連続で 呼び出すが、その違いは何か? GoF本では⾔及されてないが、 ⾔われてみると似ている 46 『オブジェクト指向における再利⽤のためのデザインパターン』より
Slide 47
Slide 47 text
本質的な違いを考える 浮かぶ実装例は違うが、本質的には何が違うのか…? 47 https://uxdaystokyo.com/articles/glossary/dunning-kruger-effect/
Slide 48
Slide 48 text
DecoratorとCoRの違い Decoratorは確実に全ての処理を実⾏するが、 CoRは1つ1つの処理ごとに検査し途中で⽌まり得る点が違う 48
Slide 49
Slide 49 text
CSD研修での学び パターンの意図や、どう設計原則が適⽤されているかを 考えることで、パターンに加えて設計原則の理解も促進される 49
Slide 50
Slide 50 text
CSD研修での学び パターンの意図や、どう設計原則が適⽤されているかを 考えることで、パターンに加えて設計原則の理解も促進される 少ない実装例を理解するだけで⾜を⽌めてしまうと、 狭く不正確な理解になることさえあると実感 50
Slide 51
Slide 51 text
CSD研修での学び パターンの意図や、どう設計原則が適⽤されているかを 考えることで、パターンに加えて設計原則の理解も促進される 少ない実装例を理解するだけで⾜を⽌めてしまうと、 狭く不正確な理解になることさえあると実感 学び直しへ… 51
Slide 52
Slide 52 text
何か1つ、GoF以外のでパターンでもいいので • そのパターンの意図 • どんな設計原則がどう適⽤されているか • 何をカプセル化している? • 何に影響を与えず、どんな責務を拡張できる? を考えてみてください 52 ◯◯パターン △△原則 ××原則 □□原則
Slide 53
Slide 53 text
GoFのデザインパターンの 効果的な学び⽅ 53
Slide 54
Slide 54 text
各書籍での⾔及 54 ※は本編後の付録などで⾔及されているもの パターン名 分類 CSD研修 by David Bernstein オブジェクト 指向のこころ アジャイル ソフトウェア 開発の奥義 パターン指向 リファクタリング ⼊⾨ Head First デザイン パターン 第2版 採⽤率 Abstract Factory ⽣成 ◯ ◯ ◯ 60% Builder ⽣成 ※ ◯ ※ 20% Factory Method ⽣成 ◯ ◯ ◯ ◯ ◯ 100% Prototype ⽣成 ※ ※ 0% Singleton ⽣成 ◯ ◯ ◯ ◯ ◯ 100% Adapter 構造 ◯ ◯ ◯ ◯ - 80% Bridge 構造 ◯ ◯ ◯ ※ 60% Composite 構造 ◯ ◯ ◯ 60% Decorator 構造 ◯ ◯ ◯ ◯ 80% Façade 構造 ◯ ◯ ◯ ◯ 80% Flyweight 構造 ※ 0% Proxy 構造 ◯ ◯ ◯ 60% Chain of Responsibility 振る舞い ◯ ※ 20% Command 振る舞い ◯ ◯ ◯ 60% Interpreter 振る舞い ◯ ※ 20% Iterator 振る舞い ◯ 20% Mediator 振る舞い ◯ ※ 20% Memento 振る舞い ※ 0% Observer 振る舞い ◯ ◯ ◯ ◯ 80% State 振る舞い ◯ ◯ ◯ ◯ 80% Strategy 振る舞い ◯ ◯ ◯ ◯ ◯ 100% Template Method 振る舞い ◯ ◯ ◯ ◯ ◯ 100% Visitor 振る舞い ◯ ◯ ※ 40%
Slide 55
Slide 55 text
実感した効果的な学び⽅ 1. 似ているパターンを⽐較する 2. さまざまな設計原則の適⽤⽅法を学ぶ 3. 同じパターンの異なる実装例を学ぶ 4. パターンを適⽤していく過程を学ぶ 5. ⾃分の理解を⼈に説明する 55
Slide 56
Slide 56 text
1. 似ているパターンを⽐較する パターンと設計原則の理解が深まる ⽐較する際の着⽬点 • 責務・実現していることが似てる • クラス構造が似てる 56 Template Method Strategy 実現していることが 似ている
Slide 57
Slide 57 text
1. 似ているパターンを⽐較する パターンと設計原則の理解が深まる ⽐較する際の着⽬点 • 責務・実現していることが似てる • クラス構造が似てる 57 Template Method Strategy State 実現していることが 似ている クラス構造が 似ている
Slide 58
Slide 58 text
2.さまざまな設計原則の適⽤⽅法を学ぶ 設計の幅が広がり、語彙が増え設計意図の説明⼒が⾼まる 58 書籍 取り上げている設計原則 オブジェクト指向のこころ オープン・クローズドの原則、依存関係逆転の原則、 リスコフの置換原則、流動的要素のカプセル化、 インターフェースに対するプログラミング アジャイルソフトウェア 開発の奥義 SOLID原則、パッケージ設計の原則 Head Firstデザインパターン 第2版 カプセル化、インターフェースに対するプログラミング、 継承より委譲、疎結合設計、 オープン・クローズドの原則、依存関係逆転の原則、 デメテルの法則、Tell Donʻt Ask、単⼀責任の原則
Slide 59
Slide 59 text
3.同じパターンの異なる実装例を学ぶ パターンの意図に注⽬した学び⽅ • 複数の実装例に共通する本質は何か • 最低限どこを満たせば良いのか、満たさなくても良い部分はどこか 59
Slide 60
Slide 60 text
3.同じパターンの異なる実装例を学ぶ パターンの意図に注⽬した学び⽅ • 複数の実装例に共通する本質は何か • 最低限どこを満たせば良いのか、満たさなくても良い部分はどこか 難しいパターンも様々な実装例を通して理解する 少ない実装例だけだと狭い理解になるが、 多く学ぶとパターンの意図の理解が深まる 60
Slide 61
Slide 61 text
4.パターンを適⽤していく過程を学ぶ 既存のコードを要求変更に適応するようリファクタリングする際 デザインパターンを⽅向性としコードを進化させる⼿順を学ぶ 61 サイクル毎に 回帰試験 テスト⾃動化 CI/CD 実⾏時間を抑える テスト戦略 短いサイクルで 開発・リリース 要求変更 より⼩さく テスト可能な設計 リファクタリング
Slide 62
Slide 62 text
4.パターンを適⽤していく過程を学ぶ ⼿順の写経がおすすめ • アジャイルソフトウェア開発の奥義 • パターン指向リファクタリング⼊⾨ 設計原則へ理解が深まり、 実務でもそのまま役⽴つ 62
Slide 63
Slide 63 text
5.⾃分の理解を⼈に説明する • 発表資料にまとめる • ブログにまとめる • ⼈とわいわいする • 「このパターンってアレのことかも?」など 63
Slide 64
Slide 64 text
番外編: GoF本を読む 難しいので最初から全てはわからないかも しれないが、理解した上で読むと味わいが 深まりそう 64
Slide 65
Slide 65 text
実感した効果的な学び⽅ 1. 似ているパターンを⽐較する 2. さまざまな設計原則の適⽤⽅法を学ぶ 3. 同じパターンの異なる実装例を学ぶ 4. パターンを適⽤していく過程を学ぶ 5. ⾃分の理解を⼈に説明する 6. (GoF本を読む) 65
Slide 66
Slide 66 text
GoFのデザインパターンを 現代で学ぶ価値 66
Slide 67
Slide 67 text
67 GoFのデザインパターン アジャイルで設計原則が重要 CSD研修 その後の学習 設計原則を学ぶための 最⾼の教材 学び直しにつながる問い 効果的な学習⽅法
Slide 68
Slide 68 text
68 GoFのデザインパターン アジャイルで設計原則が重要 CSD研修 その後の学習 設計原則を学ぶための 最⾼の教材 学び直しにつながる問い 効果的な学習⽅法 GoFのデザインパターン を現代で学ぶ価値
Slide 69
Slide 69 text
重要ではないと考えること 各パターンを厳密に定義すること パターンを⽐較して意図を理解するのは、中⼼を⾒定めるためで 境界をはっきりさせるためではない 69
Slide 70
Slide 70 text
重要ではないと考えること 各パターンを厳密に定義すること パターンを⽐較して意図を理解するのは、中⼼を⾒定めるためで 境界をはっきりさせるためではない パターンの特定の実装例を暗記すること • 実装例はわかりやすいのでそこから⼊るのは⼤賛成だが、 そこで⾜を⽌めたり、実装例に引っ張られすぎないことが⼤事 • パターンの意図を理解した上で、 ⾔語に合った実装(例えばクラス以外の⽅法を使うなど) を考えるのが良いのでは 70
Slide 71
Slide 71 text
重要だと考えること 各パターンがどんな問題を、どんな意図で、 どのように設計原則を適⽤し解決しているか学ぶこと • 設計原則を理解し活⽤できるようになる • 設計意図を⾔語化できるようになる 71
Slide 72
Slide 72 text
重要だと考えること 各パターンがどんな問題を、どんな意図で、 どのように設計原則を適⽤し解決しているか学ぶこと • 設計原則を理解し活⽤できるようになる • 設計意図を⾔語化できるようになる GoFのデザインパターンは⽂書化され多くの⼈が 議論しているから、学ぶと良い設計のための訓練になる 似たものが他にあるなら必ずしもGoFのパターンでなくても良いが、 GoFのパターンは1つの最適解なのでは 72
Slide 73
Slide 73 text
デザインパターンの時を超えた価値 GoFのデザインパターンを学ぶことで 実務の問題に働いている⼒を⾒極める能⼒が⾼まり、 デザインパターン以外の⽅法でも設計原則を適⽤して コードを適切な箇所で分割できるようになり、 開発速度を維持できる 73
Slide 74
Slide 74 text
デザインパターンの時を超えた価値 GoFのデザインパターンを学ぶことで 実務の問題に働いている⼒を⾒極める能⼒が⾼まり、 デザインパターン以外の⽅法でも設計原則を適⽤して コードを適切な箇所で分割できるようになり、 開発速度を維持できる デザインパターンはあらかじめ変化に備えて 適応しておくものではなく、要求変更が起きた時に 既存のコードを進化させる⼒を磨くために学ぶもの 74
Slide 75
Slide 75 text
次の沼へ: Christopher Alexanderの⾔葉 “逆説的だが、現実に役⽴っているパタンそのものを否定できるほど⾃由に なってこそ、⽣き⽣きとした建物ができることが分かる。 そして結局、ランゲージを⽤いる⼈⾃⾝が⾃由で無我である場合に限って、 ⽣き⽣きとした建物になる。そのような場合のみ、⾃分のイメージに 驚かされることなく、現実にあるがままの⼒を認識できるのである。 だが、その時点ではもうランゲージを必要としない。⾃分のイメージに 影響されたり歪められたりせず、現実に存在するさまざまな⼒を⾒ぬく ことができ、それらの⼒だけを頼りに建物をつくることができる- そこまで⾃分⾃⾝を解放しさえすれば、もはや完全にパタンなしで⾃由に 建物をつくることができる-つまり、パタンに込められた知識、さまざまな ⼒が現実にどう作⽤するかについての知識が、すでに⾃分⾃⾝のものに なっているからである。” 『時を超えた建設への道』より ※強調は発表者による 75
Slide 76
Slide 76 text
まとめ • GoFのデザインパターンは設計原則を学ぶための最⾼の教材 • 学ぶことで実務の問題に働いている⼒を⾒極める能⼒が⾼まり、 デザインパターン以外の⽅法でも設計原則を適⽤してコードを 適切な箇所で分割できるようになり、開発速度を維持できる • 実感した効果的な学び⽅は 1. 似ているパターンを⽐較する 2. さまざまな設計原則の適⽤⽅法を学ぶ 3. 同じパターンの異なる実装例を学ぶ 4. パターンを適⽤していく過程を学ぶ 5. ⾃分の理解を⼈に説明する 76
Slide 77
Slide 77 text
参考書籍 (1) 77 『オブジェクト指向における再利⽤のためのデザインパターン』 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 『アジャイルソフトウェア開発の奥義』 Robert C. Martin
Slide 78
Slide 78 text
参考書籍 (2) 78 『オブジェクト指向のこころ』 Alan Shalloway, James Trott 『パターン指向リファクタリング⼊⾨』 Joshua Kerievsky
Slide 79
Slide 79 text
参考書籍 (3) 79 『時を超えた建設の道』 Christopher Alexander 『Head Firstデザインパターン 第2版』 Eric Freeman, Elisabeth Robson