More Related Content
PDF
PDF
PDF
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部) PDF
PDF
PDF
PDF
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する What's hot
PDF
PDF
PDF
PDF
PDF
PPTX
世界一わかりやすいClean Architecture PDF
PDF
PDF
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える PDF
PDF
PDF
オブジェクト指向プログラミングのためのモデリング入門 PDF
PPTX
境界付けられたコンテキスト 概念編 (ドメイン駆動設計用語解説シリーズ) PDF
PDF
KEY
PDF
ドメイン駆動設計のための Spring の上手な使い方 PDF
Viewers also liked
PDF
PDF
『企業とカイワする』というエンジニアの選択肢 〜自社サービス「カイワジョブ」立ち上げ舞台裏〜 #guildconf PDF
技術者の働き方/ リモートワークという働き方 powered byドメイン駆動設計 PDF
PDF
PDF
PDF
PDF
3週連続DDDその3 ドメイン駆動設計 戦略的設計 PDF
「価値探索」がつないだクライアントと開発者の絆 PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
PDF
PDF
PDF
リーンなコードを書こう:実践的なオブジェクト指向設計 Similar to 実践に向けたドメイン駆動設計のエッセンス
PPTX
PDF
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD] PDF
PDF
Loose and fluffy_ddd_intro PPTX
PDF
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ PDF
「実践ドメイン駆動設計」 から理解するDDD (2018年11月) PDF
PDF
Aws Dev Day2021 「ドメイン駆動設計のマイクロサービスへの活用とデベロッパーに求められるスキル」参考資料(松岡パート) PPT
PDF
PDF
PDF
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8 PDF
PPTX
PPTX
PDF
20130202 ドメイン駆動設計読書会at名古屋のお誘い β More from 増田 亨
PDF
事業活動モデル・システム機能モデル・ビジネスロジックの記述 PDF
PDF
PDF
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer PDF
PDF
PDF
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ PDF
PDF
PDF
DDD sample code explained in Java PDF
PDF
PDF
PDF
PDF
越境する情シス:進化可能なアーキテクチャを手に入れる PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル PDF
実践に向けたドメイン駆動設計のエッセンス
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
今日の旅行日程
• 「まえがき」 から出発中核の概念
• 第1部の導入 基本用語の説明
– モデル/ドメイン
• 「結論」に飛んで、どこを目指しているかを見学
• 「まえがき」に戻って、前提と方向性の確認
– 複雑さという課題
– 設計対開発プロセス
– 本書の構成
– 本書が対象とする読者/ドメイン駆動チーム
• 第1部の導入から、3つの基本活動を理解する
– 知識をかみ砕く/言葉を使う/モデルと実装を結びつける
• チームのドメイン駆動設計力を高める体験型の学習
• 総合演習とその実践 モデルの成長のさせ方
※ 2部、3部、4部は、「本書の構成」と「体験型学習」で触れます
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
XP
• 設計重視
– 毎日、設計に投資する
–動いたあとも設計の改善に投資する(リファク
タリング)
• 費用対効果
– 未経験での設計より、経験や事実に基づく設
計のほうが費用対効果が大きい
– up front 設計が投資効果がある時はやる
べき
– ドキュメントが投資効果がある時は作るべき
- 45.
「本書の構成」
• 第1部 ドメインモデルを機能させる
–ドメイン駆動設計の基本的な目標
• 第2部 モデル駆動設計の構成要素
– オブジェクト指向ドメインモデリングの基本
• 第3部 より深い洞察に向かうリファクタリング
– 役に立つ実用的なモデルを見つける原則とテク
ニック
• 第4部 戦略的設計
– 第1部で示した目標をより大きな規模で実現する
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
関心事の基本部品
• 5種類の対象
ヒト・モノ・コト 時・場所
–どう 「識別」 しているか
– どう 「説明」 しているか
– どう 「関係」 しているか
• 具体的に例をあげて話あってみる
• 「豊かな」モデル、「深い」モデルへの手掛りを見つ
ける練習
– 5種類の任意の2つの組み合わせ(20パターン)の
「関係」について、具体例をどんどんあげてみる
- 69.
- 70.
- 71.
- 72.
- 73.
要点を図を使って整理するスキル
• 題材
– 実際の案件
–7章の貨物輸送システム
• 手法
– リレーションシップ駆動要件定義(RDRA)
– 目的や背景を整理⇒価値モデル(コンテキスト図)
– 「活動」を要約⇒業務モデル(アクティビティ図)
– 「関心事」を要約⇒概念モデル(クラス図)
• 狙い
– チームで、ドメインモデリングの基礎を習得する
- 74.
- 75.
- 76.
ドメインモデリング演習
• 一枚のメモ書き (システム企画書のドラフト)
•2時間 さくっとドメインモデリング
– メモを読む
– 目的を要約する ⇒ コンテキスト図を描く
– 利用者の活動を要約する ⇒ アクティビティ図を描く
– 利用者の関心事を要約する ⇒ 概念クラス図を描く
– メモ/コンテキスト図/アクティビティ図/概念クラス図を整合さ
せる
• 2時間 モデルの改良
– お互いのモデルを説明しあう
– 違いを話あう (言葉にする/耳を傾ける/矛盾を見つける)
– 話し合った内容の気づきを、自分のモデルに反映する
- 77.
- 78.
設計力をあげる
• ドメイン駆動設計に必要な設計力
– 第10章しやなかな設計
• 意図の明白なインタフェース (手段の隠ぺい)
• 概念の輪郭と一致させる
• 独立性を高める (組み立て型の柔軟性)
• ドメイン駆動設計のいやな臭いと処方箋
• 意図がはっきりしないメソッド/クラス/パッケージ
• 利用する人たちの関心事(概念)と一致しないコード
• 複雑に絡み合ったクラス/パッケージ
- 79.
- 80.
- 81.
- 82.
- 83.
良い部品
• Value Object
–ドメインに特化したString
• PersonName, MailAddress, Telephone, …
– ドメインに特化したInteger/Decimal
• Money, Quantity, Rate, …
– ドメインに特化したLocalDate
• DueDate, ExpireDate, DateOfBirth
• ファーストクラスコレクション
– 一覧、履歴、グループ
• Products, Members, PurchaseHistory, …
– 利用者の関心事をクラスで明示する
ループ処理の隠ぺい
データ操作の隠ぺい
- 84.
良い部品 (分岐の表現)
• ガード節
–if/else を 早期リターンを使って分解する
– 複文を複数の単文に ⇒ 独立した部品
• 1箇所だけの分岐構造
– 同じ分岐構造を複数個所に書かない
• 多態
– State/Strategy パターンで、分岐ごとのロジックを
別オブジェクトに
– Enum(列挙) で、区分の構造を宣言的に
– Enum(列挙) で、区分に振る舞いを持たせる
- 85.
- 86.
- 87.
- 88.
実装技術
• Spring Boot
–フレームワーク自体が三層+ドメインモデル指向
• @Controller/@Service/@Repository
– サンプルが三層+ドメインモデルになっている
• プレゼンテーション層
– Spring MVC HTTPとドメインモデルの変換技術
– Thymeleaf HTMLを尊重したビュー技術
• データソース層
– myBatis SQLを尊重したオブジェクトマッピング
- 89.
三層+ドメインモデル
設計の改善
• ドメインモデルに、利用者の関心事を集中する
– 豊かなモデル/ 深いモデル への道筋
• いやな臭いとリファクタリング
– プレゼンテーション層にまぎれこんだドメインロジック
• 新着アイコンをつけてわかりやすく ⇒ ドメインの関心事
• ビューに if(新着) を書かない工夫
– データソース層やSQLにまぎれこんだドメインロジック
• 動的にSQL組み立てない工夫
– 多態を使った検索の切り替え
• WHERE句やORDER BYの意図をドメインオブジェクトで表現
– SQLに渡すパラメータオブジェクトの設計改善
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.