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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
1k
Other Decks in Programming
See All in Programming
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
Raku Raku Notion 20260128
hareyakayuruyaka
0
360
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
630
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
110
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.5k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
4k
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
280
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
140
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
330
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
230
Featured
See All Featured
Bash Introduction
62gerente
615
210k
Thoughts on Productivity
jonyablonski
74
5k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
920
Measuring & Analyzing Core Web Vitals
bluesmoon
9
760
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
440
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
150
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
The SEO identity crisis: Don't let AI make you average
varn
0
330
Odyssey Design
rkendrick25
PRO
1
500
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 ご清聴ありがとうございました