Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DDD時代に考えたいICONIXプロセス/ICONIX in DDD
Search
hiro@miraito
March 30, 2020
Programming
9
4.2k
DDD時代に考えたいICONIXプロセス/ICONIX in DDD
DDD をより駆動させるための ICONXプロセスとの付き合い方を紹介します。
BPStudy#151〜オブジェクト指向、モデリング、設計 LT大会[リモート開催]
2020/03/30
hiro@miraito
March 30, 2020
Tweet
Share
More Decks by hiro@miraito
See All by hiro@miraito
沖田畷の戦い/Battle-of-Okitanawate
hirodragon112
0
170
ドメインを中心にしたプロダクト開発/domain-driven-product
hirodragon112
1
920
僕がユースケース駆動開発をする理由/my-usecase-driven-development
hirodragon112
2
7.5k
ICONIXプロセスから学ぶオブジェクト指向モデリング/ICONIX for Object-Oriented
hirodragon112
3
3.6k
概念投影によるオブジェクト指向設計の考え方とその方法/Conceptual projection design
hirodragon112
15
5.2k
意訳Domain-Driven Design
hirodragon112
4
1.3k
カンファレンス主催者から見たCfPとプロポーザル
hirodragon112
0
1.8k
DDD導入に踏み切れない方へ贈る「2層 + CQS アーキテクチャ(Flyweight DDD)」/Flyweight DDD
hirodragon112
25
8.2k
Other Decks in Programming
See All in Programming
rails statsで大解剖 🔍 “B/43流” のRailsの育て方を歴史とともに振り返ります
shoheimitani
2
930
Full stack testing :: basic to basic
up1
1
930
useSyncExternalStoreを使いまくる
ssssota
6
1k
talk-with-local-llm-with-web-streams-api
kbaba1001
0
170
fs2-io を試してたらバグを見つけて直した話
chencmd
0
220
急成長期の品質とスピードを両立するフロントエンド技術基盤
soarteclab
0
920
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
180
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
3
950
HTTP compression in PHP and Symfony apps
dunglas
2
1.7k
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
120
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
510
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Facilitating Awesome Meetings
lara
50
6.1k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Visualization
eitanlees
146
15k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Transcript
DDD時代に考えたいICONIXプロセス BPSTUDY#151〜 オブジェクト指向、モデリング、設計 LT大会 @hirodragon
DDD時代に考えたいICONIXプロセス 2 いつも時間内におさまりきらなくてごめんなさい
DDD時代に考えたいICONIXプロセス 3 Today's Topic ICONIX in the DDD era My
Assumptions / Prerequisites Looking for clues on DDD modeling I will talk about What`s ICONIX ? How to Use ICONIX in DDD I will NOT talk about What`s DDD ICONIX Detail
DDD時代に考えたいICONIXプロセス 4 My assumptions / Prerequisites Looking for clues on
DDD modeling DDD ドメインを運用者と開発者がコミュニケーションをとりながら「モデル」育てる そして、そのモデルをソフトウェアとしてコードで表現する為の設計手法。 戦略設計 ドメインエキスパートと共にユビキタス言語を使いながら モデルを育てる 戦術設計 ドメインを表現したモデルをコードに落とし込む実装パターンやテクニック。 またはその考え方
DDD時代に考えたいICONIXプロセス 5 My assumptions / Prerequisites Looking for clues on
DDD modeling DDD ドメインを運用者と開発者がコミュニケーションをとりながら「モデル」育てる そして、そのモデルをソフトウェアとしてコードで表現する為の設計手法。 戦略設計 ドメインエキスパートと共にユビキタス言語を使いながら モデルを育てる 戦術設計 ドメインを表現したモデルをコードに落とし込む実装パターンやテクニック。 またはその考え方 ここ難しくないですか?
DDD時代に考えたいICONIXプロセス 6 要件定義 > 基本設計 > 詳細設計 > 実装 >
UT > ITa(ITb) > (ST) > UAT 一般的なシステム開発の流れ
DDD時代に考えたいICONIXプロセス 7 要件定義 > 基本設計 > 詳細設計 > 実装 >
UT > ITa(ITb) > (ST) > UAT 一般的なシステム開発の流れ 戦略設計ってどこからどこまで?? なんとなくこの辺ぽい
DDD時代に考えたいICONIXプロセス 8 I will talk about What`s ICONIX ? How
to Use ICONIX in DDD 今日はその辺のあまり話題にあがらない部分をフォーカスして、 プロセスの例を紹介しようというお話です。
DDD時代に考えたいICONIXプロセス 9 自己紹介 林 宏勝 Twitter : @hirodragon112 株式会社ミライトデザイン CEO
株式会社 Jocy CTO OOP/DDD/CQRS/ICONIX/Agile/ PHP/RDRA/ペチオブ/OOC らへんが好きなサーバーサイドエンジニア 上流から下流まで色々やります。
DDD時代に考えたいICONIXプロセス 10 ICONIXプロセス
DDD時代に考えたいICONIXプロセス 11 ダグ・ローゼンバーグ マット・ステファン 著
DDD時代に考えたいICONIXプロセス 12 ICONIXプロセス ユースケースからソースコードを作るプロセス
DDD時代に考えたいICONIXプロセス 13 ICONIXプロセス ユースケース 分析者は抽象的かつ本質的、技術に依存せず実装から独立したユースケースを書く 序文より アクター目線でこのシステムが何ができるのかを表している。 当然裏でどのような言語、技術が使用されているかはスコープではない
DDD時代に考えたいICONIXプロセス 14 ICONIXプロセス ユースケース(開発者目線) 不明瞭で曖昧、不完全で正しくない 序文より システムがやりたい事はわかる。 ただし、抽象的で具体的な方法論は記されていない。
DDD時代に考えたいICONIXプロセス 15 ICONIXプロセス ICONIXプロセスはそのギャップを埋める為のプロセス 本質的ではあるが不明瞭なユースケースを具体的な実装に変換する為のフレームワーク
DDD時代に考えたいICONIXプロセス 16 論理的には「理論」と「実際」に違いはない。 しかし、実際には違いがある
DDD時代に考えたいICONIXプロセス 17 ICONIXプロセス 1. 要求 2. 分析 / 予備レビュー 3.
予備設計レビュー 4. 詳細設計 5. 詳細設計レビュー 6. 実装
DDD時代に考えたいICONIXプロセス 18 ICONIXプロセス 1. 要求 機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー 2. 分析 / 予備レビュー
ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正 3. 予備設計レビュー 4. 詳細設計 シーケンス図作成、ドメインモデル更新、静的モデル整理 5. 詳細設計レビュー 6. 実装 コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備
DDD時代に考えたいICONIXプロセス 19 要件定義 > 基本設計 > 詳細設計 > 実装 >
UT > ITa(ITb) > (ST) > UAT 一般的なシステム開発の流れ ICONIXは開発の大半をカバーする
DDD時代に考えたいICONIXプロセス 20 ICONIX in the DDD era
DDD時代に考えたいICONIXプロセス 21 戦術的DDD → わかりやすい 戦術設計はオブジェクト指向のパターンなので開発者が理解しやすい 調べれば答えが見つかりやすい 集約, Entity, ValueObject
等々
戦略的DDD → 難しい(く感じる) 実装やツールの操作方法とは違い、実際のプロダクトの中にのみ答えがある。 調べても正解がわからない。 だから難しく感じる DDD時代に考えたいICONIXプロセス 22
DDD時代に考えたいICONIXプロセス 23 例えば
DDD時代に考えたいICONIXプロセス 24 戦略設計 ドメインエキスパートと共にユビキタス言語を使いながら モデルを育てる モデルを育てるって? - ドメインモデリングって具体的にどうやる? - ドメインエキスパートと話せばモデルを作れる?
ここが解決しない限りDDDなんてそもそも難しいよね?
DDD時代に考えたいICONIXプロセス 25 ICONIX in the DDD era (3回目)
DDD時代に考えたいICONIXプロセス 26 MDD DDD TDD RDRA 等 要件定義 分析設計 戦略設計
戦術設計 UT UCDD (ICONIX) これがないと、いき なり戦略設計をして も精度が悪い
DDD時代に考えたいICONIXプロセス 27 ICONIXプロセス 1. 要求 機能要求、ドメインモデリング、振る舞い要求(ドラフト版ユースケース作成)、要求レビュー 2. 分析 / 予備レビュー
ロバストネス分析、ドメインモデル更新、論理名付け、ドラフト版ユースケース修正 3. 予備設計レビュー 4. 詳細設計 シーケンス図作成、ドメインモデル更新、静的モデル整理 5. 詳細設計レビュー 6. 実装 コーディングと単体テスト、結合テストとシナリオテスト、次フェーズ準備 ICONIXの分析部分を取り入れるだけでも より効率的にDDDを回せるのでは
DDD時代に考えたいICONIXプロセス 28 そろそろ時間なくなってますよね
DDD時代に考えたいICONIXプロセス 29 要求 ドメインモデリング (概念モデル DDDの文脈とは粒度が違うので注意) - プロジェクトの用語集 - プロジェクトで実際に使われるすべての単語を辞書にする
- 用語の洗い出しをしながら関連も洗い出す - システム目線ではない。現実世界に焦点を置く - ユースケースを洗い出す前に行う ※ ユースケース駆動実践ガイドより引用
DDD時代に考えたいICONIXプロセス 30 要求 ユースケースモデリング (振舞要求) - 機能要求かをユースケースとドメインオブジェクトに割り当てる - 通常ケース代替ケースを考慮する -
関連に時間をかけない。何がおきているかにのみ着目する - アルゴリズムではない。アクターとシステムの対話ステップ ※ ユースケース駆動実践ガイドより引用
DDD時代に考えたいICONIXプロセス 31 要求 要求レビュー - ドラフトユースケースが出来たタイミングで顧客の要求に合致しているかを確認する - ドメインモデリングが顧客のわかる言葉(ユビキタス言語)で作成されているか確認できる - スコープを明確にする
- ユースケースから全ての要求が追跡できるかを確認する - ユーザーの望みがユースケースに網羅されているかを確認する
DDD時代に考えたいICONIXプロセス 32 分析 / 予備レビュー ロバストネス分析 - 分析でもあり設計でもある - ユースケースとオブジェクトを紐づける
- 概念の発見 - ユースケース記述からあいまいさを取り除く - ロバストネス分析中もユースケースの修正を行う - 関連線は気にしない - シーケンスではない ※ ユースケース駆動実践ガイドより引用
DDD時代に考えたいICONIXプロセス 33 分析 / 予備レビュー 予備設計レビュー - ロバストネス図、ユースケース図、ドメインモデル図の辻褄があっているかを確認する - 代替コースが漏れていないかを確認する
- 技術者以外(顧客等)双方が参加する
DDD時代に考えたいICONIXプロセス 34 分析 / 予備レビュー テクニカルアーキテクチャ - ここからでDDDの戦略設計に移行する - アーキテクチャ、パッケージ、コンポーネント等の選定
- 要求をベースにアーキテクチャの選定ができる - 非機能要件等の考慮 - テスタビリティ - コンテキストマップ
DDD時代に考えたいICONIXプロセス 35 ICONIXプロセスを一部取り入れる事により DDDはより駆動する
DDD時代に考えたいICONIXプロセス 36 @hirodragon