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
RDRA, ICONIX, DDDの実践から得た学び
Search
hsawaji
September 15, 2023
Programming
5
3.3k
RDRA, ICONIX, DDDの実践から得た学び
2023.09.14
asken withミライトデザインのDDDのはじめ方 DDD x RDRA x ICONIX
https://asken.connpass.com/event/293085/
hsawaji
September 15, 2023
Tweet
Share
More Decks by hsawaji
See All by hsawaji
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
960
Other Decks in Programming
See All in Programming
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.8k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
300
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
6
820
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
220
Python札幌 LT資料
t3tra
7
1.1k
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
290
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.1k
Navigating Dependency Injection with Metro
l2hyunwoo
1
190
gunshi
kazupon
1
120
Patterns of Patterns
denyspoltorak
0
370
ゆくKotlin くるRust
exoego
1
160
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
150
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
4.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.7k
Building Adaptive Systems
keathley
44
2.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
79
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Scaling GitHub
holman
464
140k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
98
The SEO identity crisis: Don't let AI make you average
varn
0
39
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
150
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
410
Transcript
© asken.inc RDRA, ICONIX, DDDの実践から得た学び 23/09/14 asken hsawaji
© asken.inc 2 背景 「あすけん」のサービスをリアーキテクチャするために、約5ヶ月間、技術検証を行って きました。 この検証では、既存システムを対象に分析から実装まで一通り行いました。その際、 RDRA, ICONIX, DDDなどの手法を活用して進めてきました。
今回は、各手法をどの用に使ったのか、どのような学びが合ったのかを紹介したいと 思います。
© asken.inc 3 自己紹介 askenでバックエンドエンジニアをやっています。 海外事業部にいたり、医療事業部にいたりして、 今は国内事業部でシステムのリアーキテクチャを推進しています。 askenではずっとPHPを触っていましたが今回のリアーキテクチャからKotlinを触るよ うになりました。 設計とアーキテクチャの勉強中です。
© asken.inc 4 テックブログも書いています PHPからKotlinへ、ドメイン駆動設計を用いたリアーキテクチャへの挑戦 https://tech.asken.inc/entry/2023/08/10/170000 より良い設計にするための勉強会を行いました https://tech.asken.inc/entry/2022/03/30/180000 Slackで「マルチチャンネルゲスト」のGithub通知を改善しました https://tech.asken.inc/entry/2022/10/07/170000
© asken.inc 5 スタート時点の私 RDRA - 「RDRAハンドブック2.0」は読んだ - 用語はざっくりと理解している -
実践した経験はない ICONIX - 「ユースケース駆動開発実践ガイド」は未読 - 用語はいくつか聞いたことがある - 実践した経験はない DDD - 「エヴァンス本」は読んだ - 社内の勉強会で学んだ - 用語と概要くらいはわかる - 実践した経験はない
© asken.inc 6 RDRA
© asken.inc 7 スプレッドシート版のRDRAを使用しました。 このスプレッドシートは、左のシートから順番に埋めていくことで、RDRAの 工程を進めてられるような構成になっています。 スプレッドシート版のRDRA: http://vsa.co.jp/rdratool/rdragraph0.7/RDRAToolDoc.pdf
© asken.inc 8 スプレッドシート版RDRAは下記のようなような流れで使い方を覚えました - ミライトデザインさんのRDRAワークショップの勉強会動画を見る - 参考: 【RDRA ×
AI】AI時代の要件定義ワークショップ【ペチオブ】 - https://www.youtube.com/watch?v=IfEu2KE7_5U - RDRAハンドブック2.0を見直しながらスプレッドシートと対応させていく
© asken.inc 9 食事記録 - ビジネスユースケース(BUC) - アクティビティ - ユースケース(UC)
- 情報 - アクター
© asken.inc 10 食事記録 目的達成までの ユーザの動き システムの動作 ユーザの目的 「情報」はエンティティ 対象ユーザ
左から記載していく
© asken.inc 11 あすけん会員 (アクティビティ) システム (UC) 食品検索 食事記録 分量変更
キーワード 検索を行う 食事記録を 保存する 食事記録の分量を 更新する 食品選択 食事を記録しよう (BUC) データ (情報) 食品マスタ 食事記録 あすけん会員 (アクター)
© asken.inc 12 効果 RDRAではユースケースをアクティビティから分析するので、既存のシステム に影響されることなくユースケースを洗い出すことができた 複数のユースケースが含まれていたControllerも ユースケース毎にクラスが切り出され処理がわかりやすくなった
© asken.inc Controller 13 Controller UseCase1 クラス UseCase2 クラス UseCase1.処理()
UseCase2.処理() UseCase1の処理 UseCase2の処理 UseCase1’の処理 UseCase3の処理 UseCase2’の処理 UseCase3.処理() UseCase3 クラス
© asken.inc 14 概念モデル
© asken.inc 15 設計に入る前に、既存システムの構成要素と各要素の関係を整理するために 「概念モデル」を作ることにしました 合計10時間ほど時間をかけて、全員でワークショップを行なった
© asken.inc 16 ワークショップはMiroを使って下記のような流れで行なった 1. 要素を付箋を書きながら周辺の業務知識を説明していく 2. 疑問点は都度質問を受けて付箋を使って説明をしていく 3. モデリングの観点で議論しながら付箋を修正していく
© asken.inc 17
© asken.inc 18 効果 - システムが「どうあるべきか」の共通認識が持てた - 既存システムがどうなっているかではなく「どうあるべきか」話すことができた - ドメイン知識の伝達ができた
- 概念に関連する知識を網羅的に説明できた - 質問を受けることで「暗黙的な知識」も説明できた - システムの複雑な箇所が可視化された - システムの複雑な所に対して検証を行うことができた - 概念と説明を同じ資料にまとめたので後で参照しやすくなった - 質問などで前提を説明する必要がなくなった - ドメインエキスパートとも同じ資料で会話ができた - 用語と関連性の情報なのでエンジニア以外も理解がしやすい
© asken.inc 19 チームで「概念モデル」を一緒に作ることにより素早く共通認識を作る事がで きた、出来上がったもと同じくらい過程も大切だと感じた このワークショップは、その後の開発をスムーズに行うために効果的だった
© asken.inc 20 ICONIX / ユースケース記述
© asken.inc 21 RDRAで洗い出したユースケースに対して、ユースケース記述をつくる ユースケース記述は、ユーザの操作とシステムの処理を数行で記載する
© asken.inc 22 ユーザの動作と システムの処理 代替コースは途中で 処理が終了するもの
© asken.inc 23 振る舞い モデルに必要な用語 ドメインモデルに反映 ドメインモデルに反映
© asken.inc 24 ユースケースを具体的に記述することで、見えていなかった概念が見えてくる それをドメインモデルに反映することで良いモデルにアップデートできる 必要な振る舞いがわかることで、クラス設計の足がかりになる 効果
© asken.inc 25 DDD (クラス設計 ~ 実装)
© asken.inc 26 分析を元に設計する 概念モデル ドメイン モデル ユースケース 記述 クラスの
分け方 クラスの 振る舞い
© asken.inc 27 設計を元に実装する 概念モデル ドメイン モデル ユースケース 記述 クラスの
分け方 クラスの 振る舞い ソースコード 実装
© asken.inc 28 実装の結果でモデルを更新する 概念モデル ドメイン モデル ユースケース 記述 クラスの
分け方 クラスの 振る舞い ソースコード 実装 フィードバック
© asken.inc 29 実装中に得られる情報 - 実装することで得られた知識 - 新しく思いついたアイデア - モデルの欠陥
(実装できない・情報が取れない) 実装を進めていくと、ドメインモデルがどんどん変わっていく 実装しながらドメインモデルも洗練していく アイデアを素早く確認するためにドメインモデルを使用する
© asken.inc 30 DDDを使うメリット - 実装からドメインモデルにフィードバックをするメリット - ドメインモデルの検証を実装で行なう - 実装することで、ドメインモデルの矛盾点や欠陥が明らかになる
- ドメインモデルを使うメリット - 設計の良し悪しはドメインモデルで全体を見たほうが分かりやすい - 視覚的に分かりやすいので、設計の議論をする際に共通認識を取りやすい - 簡単に変更できるので、レビューと修正がしやすい
© asken.inc 31 まとめ 今回の技術検証では RDRA、ICONIX、DDDを1つ1つ丁寧に行うことで、それぞ れの成果物が実装に繋がっている感覚を得ることができた 概念モデルは、素早く共通認識を作ることができ、非常に有効なものであった その概念モデルからドメインモデルを作るので、認識のズレが少なく設計の議 論ができたと感じている
© asken.inc 32 成果物のつながりのモデル
© asken.inc 33 スタート時点の私 RDRA - 「RDRAハンドブック2.0」は読んだ - 用語はざっくりと理解している -
実践した経験はない ICONIX - 「ユースケース駆動開発実践ガイド」は読んでいない - 用語はいくつか聞いたことがある - 実践した経験はない DDD - 「エヴァンス本」は読んだ - 社内の勉強会で学んだ - 用語と概要くらいはわかる - 実践した経験はない
© asken.inc 34 今の私 RDRA - RDRAの各要素の意味を理解した - 業務フローを意識して RDRAで分析できるようになった
- 既存システムに影響されないユースケースの分析ができるようになった ICONIX - ユースケース記述とモデルの関係性を理解した - ユースケース記述を設計に繋げられるようになった DDD - モデルと実装のフィードバックループの利点を理解した - ドメインモデルを中心とした開発を実践できるようになった
© asken.inc 35 この5ヶ月間で業務をモデル化してソースコードで検証する方法を学ぶことが出 来ました。 これらの方法を使って、リアーキテクチャを確実に前に進められるようになっ たと思います。 まだまだ勉強中ですが、頑張っていきます。
© asken.inc 36 ご清聴ありがとうございました