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
ドメインを中心にしたプロダクト開発/domain-driven-product
Search
hiro@miraito
September 14, 2023
Programming
1.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメインを中心にしたプロダクト開発/domain-driven-product
2023.9.14
asken withミライトデザインのDDDのはじめ方 DDD x RDRA x ICONIX にて
株式会社ミライトデザイン
林宏勝
hiro@miraito
September 14, 2023
More Decks by hiro@miraito
See All by hiro@miraito
不確実性と戦いながら見積もりを作成するプロセス/mitsumori-process
hirodragon112
1
280
沖田畷の戦い/Battle-of-Okitanawate
hirodragon112
0
370
僕がユースケース駆動開発をする理由/my-usecase-driven-development
hirodragon112
2
9.8k
ICONIXプロセスから学ぶオブジェクト指向モデリング/ICONIX for Object-Oriented
hirodragon112
4
4.1k
DDD時代に考えたいICONIXプロセス/ICONIX in DDD
hirodragon112
10
4.8k
概念投影によるオブジェクト指向設計の考え方とその方法/Conceptual projection design
hirodragon112
15
6.2k
意訳Domain-Driven Design
hirodragon112
4
1.6k
カンファレンス主催者から見たCfPとプロポーザル
hirodragon112
0
2.4k
DDD導入に踏み切れない方へ贈る「2層 + CQS アーキテクチャ(Flyweight DDD)」/Flyweight DDD
hirodragon112
26
8.8k
Other Decks in Programming
See All in Programming
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
250
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
170
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
430
リアルな遅延を測る仕様
kota_yata
1
130
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
350
実装をデザインガイドラインに追従させるための取り組み / 260731-dip-mosh-design-system
dachi023
0
7.9k
バグを直したら useEffect が消えた
colorful12
3
770
高専キャリア LT 発表内容
crysta1221
5
4.4k
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
440
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.3k
React本体のコードリーディング
high_g_engineer
1
160
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
480
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
410
Fireside Chat
paigeccino
42
4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
180
Practical Orchestrator
shlominoach
191
12k
Building Applications with DynamoDB
mza
96
7.2k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
450
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Balancing Empowerment & Direction
lara
6
1.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Transcript
ドメインを中心にした プロダクト開発 asken withミライトデザインのDDDのはじめ方 DDD x RDRA x ICONIX 2023.09.14
@林 宏勝(株式会社ミライトデザイン) 資料 https://speakerdeck.com/hirodragon112/domain-driven-product
ドメインを中心にしたプロダクト開発 2 林 宏勝(X : hiro@miraito) 株式会社ミライトデザイン CEO Object Oriented
Conference2020主催 ドメイン駆動設計入門レビュアー OOPやDDD中心に設計などに興味があります 自己紹介
ドメインを中心にしたプロダクト開発 3 「確かな設計によるよりよいシステムを」 主に上流工程・コンサルから開発・運用まで幅広く プロダクト開発のお手伝いをしています 会社紹介 株式会社ミライトデザイン
ドメインを中心にしたプロダクト開発 4 勉強会「ペチオブ」開催 https://phper-oop.connpass.com/ 設計・アジャイル・要件定義・その他諸々 プロダクト開発に関する色んな事を一緒に学ぼう という勉強会 月一第一木曜日に開催中 会社紹介
ドメインを中心にしたプロダクト開発 5 Youtube :Mirait Channel https://www.youtube.com/@miraito エンジニアリングに関する動画から関係ない 動画まで不定期更新してますので、チャンネ ル登録よろしくお願いします! 会社紹介
ドメインを中心にしたプロダクト開発 6 ドメインを中心にしたプロダクト開発とは??
ドメインを中心にしたプロダクト開発 7 その前に 一般的に理想(理論)と現実のギャップが必ずある事を理解する • 全てを作り直す事はできないケースがある • データ構造にいきなり手を入れられないケースがある • 効果測定をしたくても既存システムにその仕組みがない(入れられない)
• 等々 理論の話しではなく実務の話しなのでその辺を気にしながら話します
ドメインを中心にしたプロダクト開発 8 リニューアルの成功とは? 既存課題が解決できる事 潜在課題に対処できる事 解決?対処?
ドメインを中心にしたプロダクト開発 9 理想 定量的に成功のGoalを決めたい 現実 既存の問題等を数値化する仕組みがない(数値化するのが困難) デプロイが楽になった 修正や機能追加が容易になった ソースコードが理解しやすくなった ←定性的判断をひとまずPoCでしてもらう
ドメインを中心にしたプロダクト開発 10 進める上で意識していること 1. 教条主義にならない 2. QCDS、特にSを明確にする 3. 「何を」「なぜ」作るかを明確にする
ドメインを中心にしたプロダクト開発 11 ドメインを中心にしたプロダクト ≠教科書通りのパターンを使うこと (エリックエバンスの)ドメイン駆動設計本通りのできているかどうかを指針とし ない。 教条主義にならない
ドメインを中心にしたプロダクト開発 12 ドメインを知りそれをシステムに投影できるか ただ動くものではなく、ドメインを表現したシステム構造にできるか 現実解が常に問われる
ドメインを中心にしたプロダクト開発 13 全てを一気に作り直す事は現実的ではないが、 現実的にどの単位でわけられるかも案外複雑 Cost, Quality, は事業上必ず制約が発生するのでその上で適切な Scope, Delivery を計画する
QCDS、特にSを明確にする
ドメインを中心にしたプロダクト開発 14 世のプロダクトの大半は、何を作れば良いかわから ないまま何かを作っている プロダクト開発の恐怖の都市伝説 「何を」「なぜ」作るかを明確にする 既存システムをただトレースすると、既に不要な機能などもリニューアル 対象になってしまう。 改めてフローを整理し、どのユースケース、どの業務フローと結びついて いる機能かを明確にしていく
ドメインを中心にしたプロダクト開発 15 知る 作る 解決したい課題を知る ドメインを知る (技術的)制約をを知る 課題を解消したプロダクト ドメインを表現したプロダクト 制約を踏まえた現実解を探す
進め方
ドメインを中心にしたプロダクト開発 16 具体的に行った事 1. 業務と関連するユースケースの洗い出し 2. PoC期間に実装検証する対象のユースケース選定 3. 概念モデル作成 4.
アーキテクチャ検討 5. ユースケースから詳細設計までの流れの確認 6. Kotlinにて対象ユースケースを実装してみる 7. 上記を2~3サイクル回して、今後の開発フローとしていけるか確認
ドメインを中心にしたプロダクト開発 17 1. 業務と関連するユースケースの洗い出し 2. PoC期間に実装検証する対象のユースケース選定 Poc時に作成途中のRDRAシート RDRAで整理する 主な目的 •
コンテキストの理解 • 業務フロー整理 • 状態、バリエーションの整理 • ユースケース洗い出し • 各機能の「なぜ」を理解する
ドメインを中心にしたプロダクト開発 18 1. 業務と関連するユースケースの洗い出し 2. PoC期間に実装検証する対象のユースケース選定 RDRAで整理する Poc時に作成途中のRDRAダイアグラム
ドメインを中心にしたプロダクト開発 19 3.概念モデル作成 Poc時に作成途中の概念モデル RDRA分析と並行して概念モデルを作成する 主な目的 • 概念整理 • 用語の統一(ユビキタス言語)
• スコープの確認
ドメインを中心にしたプロダクト開発 20 4. アーキテクチャ検討 5.ユースケースから詳細設計までの流れの確認 ICONIXプロセスを使用してユースケースを詳細に落としていく 主な目的 • 分析したユースケースを実装に近づける •
自然言語とオブジェクトのマッピング • ユースケースの規模の確認 詳細はこちら DDD時代に考えたいICONIXプロセス https://speakerdeck.com/hirodragon112/iconix-in-ddd
ドメインを中心にしたプロダクト開発 21 6. Kotlinにて対象ユースケースを実装してみる 選定言語にて実際の実装を行う 主な目的 • 選定技術の実用性の確認 • 開発フローと速度の確認
• チームに浸透しそうかの確認
ドメインを中心にしたプロダクト開発 22 今後見えている課題 1. データモデルの変更が行えない為、既存のデータモデルによる制約 2. スパークタイム(昼食時)の非機能性能を確認 3. PoC以降のチームビルド
ドメインを中心にしたプロダクト開発 23 @hirodragon