Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
アカウント発行システムをDDDでリファクタリングしたら 幸せになりそうな予感がした
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sorch
December 23, 2020
Technology
310
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アカウント発行システムをDDDでリファクタリングしたら 幸せになりそうな予感がした
sorch
December 23, 2020
More Decks by sorch
See All by sorch
他言語と比較して今こそ理解しよう! 目指せ、列挙型マスター!
soachr
0
290
おさらい!PHP8で廃止される機能
soachr
1
690
元Javaエンジニアが怖いと思うPHPの仕様
soachr
0
300
Other Decks in Technology
See All in Technology
FinOps Agentが生んだ技術負債:コスト自動調査の落とし穴と解消までの道のり
oasis1994liveforever
3
300
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
620
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
0
380
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
360
背中から、背中へ ー 社外コミュニティで学んだ「雑に背中を押す」という恩送り ー / easygoing encouragement and pay forward to community
naitosatoshi
0
320
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
250
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1.1k
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
110
QAエンジニアがSoutherを使ってみたの〜10分でわかるSouther〜
mhlyc
0
120
日本AIベンチャーレポート2026
kentarofujii
0
230
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
310
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
3
1.1k
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
650
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
620
WENDY [Excerpt]
tessaabrams
14
40k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
720
Transcript
アカウント発行システムをDDDで リファクタリングしたら 幸せになりそうな予感がした @soachr (そーく) 設計・モデリング LT会 2020/12/23
@soachr(そーく)
今日話すこと
DDDのよさ is 仕様変更が圧倒的楽
社内の読書会で ドメイン駆動設計(DDD) と出会う https://booth.pm/ja/items/1835632
DDDやりたい
立ちはだかる壁
1. 10年以上ご愛顧いただいているサービスだからこそ発生する a. 追加仕様によるプログラムの肥大化&複雑化 b. 複雑すぎて誰も手が出せないプログラム 2. トランザクショナルなプログラム a. ビジネスロジックとデータ永続化が混在
b. 多い分岐・点在するコピペ処理
None
None
サービスに対してDDDは難しい けど...
サブシステムの アカウント発行システムなら 規模も小さい
アカウント発行システムを DDDでRe:モデリングしてみた
前提:アカウント発行システム • BtoB向けクラウドサービスのアカウント発行システムを想定 • アカウント発行時に契約したプラン・オプションを選択する 機能/プラン Premium Standard 機能A ◦
◦ 機能B ◦ ◦ 機能C ◦ - 機能D ※オプション ※オプション
アプリケーション層 =なにをするか(What)
ドメイン層 =どうやって実現するか (How) 機能/プラン Premium Standard 機能A ◦ ◦ 機能B
◦ ◦ 機能C ◦ - 機能D ※オプション ※オプション
DDDのよさ is 仕様変更が圧倒的楽
例:新しいプランを増設することになった 機能/プラン Premium Standard Lite 機能A ◦ ◦ ◦ 機能B
◦ ◦ - 機能C ◦ - - 機能D ※オプション ※オプション ※オプション
DDDじゃなかったら (トランザクショナルなら) • 設計・実装 ◦ 既存仕様理解&影響調査が大変 ▪ 大量にあるif分岐 ▪ 同じ変数による条件分岐が色々な場所に点在している
... ▪ ifとelseの処理がほぼ一緒でちょっとだけ違う ... • テスト ◦ 既存機能のデグレが怖い
None
DDDだったら • (ほぼ)1クラス追加するだけ
アプリケーション層は変更なし! 具体的にどうやってアカウントを発行するか はドメイン層に移譲しているため 変更点はなし 具体的にどうやってアカウントを発行するか の処理はドメイン層に移譲しているため 変更点はなし
None
おわりに • DDDでもっと楽できるはず! ◦ ”やること”を決めて”やり方”をビジネスの変化に伴って変えられる 設計 • サービスへのDDD適用は難しいかもしれないけれど、アカウント発行シ ステムなら手が出せそうかも!
ご清聴ありがとうございました