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を実践するためのことはじめ
Search
akkino/D-En
March 29, 2024
Technology
0
920
チームでDDDを実践するためのことはじめ
Daisuke Endo | @DddEndow
設計カンファレンス extends OOC
https://yumemi.connpass.com/event/310541/
akkino/D-En
March 29, 2024
Tweet
Share
More Decks by akkino/D-En
See All by akkino/D-En
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
2.2k
経験学習型キャリア探索法 ~ふりかえりで始めるキャリアパスの見つけ方~
d_endo
2
1.4k
負荷試験の観点から見るGraphQLにおけるPHPのコードチューニング
d_endo
1
3k
Step Functions Expressで作るフルマネージドなサーバーレスバッチ
d_endo
1
2.8k
AWS認定資格のススメ
d_endo
1
520
Laravel + Lighthouseで始める低コストなGraphQL入門
d_endo
4
4.3k
30分でOpenID Connect完全に理解したと言えるようになる勉強会
d_endo
48
30k
今だからこそ考える「科学技術の倫理学」
d_endo
2
1.5k
アホで乗り越える失敗との付き合い方
d_endo
2
1.5k
Other Decks in Technology
See All in Technology
マルチアカウント環境でSecurity Hubの運用!導入の苦労とポイント / JAWS DAYS 2026
genda
0
710
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
360
わたしがセキュアにAWSを使えるわけないじゃん、ムリムリ!(※ムリじゃなかった!?)
cmusudakeisuke
1
740
VLAモデル構築のための AIロボット向け模倣学習キット
kmatsuiugo
0
150
20260311 技術SWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
350
モブプログラミング再入門 ー 基本から見直す、AI時代のチーム開発の選択肢 ー / A Re-introduction of Mob Programming
takaking22
5
1.5k
アーキテクチャモダナイゼーションを実現する組織
satohjohn
2
920
オレ達はAWS管理をやりたいんじゃない!開発の生産性を爆アゲしたいんだ!!
wkm2
4
530
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
550
チームのモメンタムに投資せよ! 不確実性と共存しながら勢いを生み出す3つの実践
kakehashi
PRO
1
110
組織全体で実現する標準監視設計
yuobayashi
3
490
銀行の内製開発にて2つのプロダクトを1つのチームでスクラムしてみてる話
koba1210
1
130
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
780
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
My Coaching Mixtape
mlcsv
0
72
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
チームでDDDを実践するための ことはじめ 設計カンファレンス Extends OOC 2024.3.29 遠藤大輔 株式会社ゆめみ
株式会社ゆめみ リードエンジニア・アーキテクト 遠藤 大輔 X: @DddEndow 2019年4月にエンジニアとしてゆめみに入社。 PHPやKotlinを中心にプロジェクトを牽引しつつ、 DDD を導入する取り組みを行っている。
2 About me
3 ゆめみの会社情報
“ OOC2024 いかがでしたか? 4 OOC2024の思い出
5 OOC2024の思い出 思い出に残っているセッションはありますか?
6 OOC2024の思い出:思わず膝を打ってしまったセッション https://speakerdeck.com/yuitosato/functional-and-type-safe-ddd-for-oop
“ OOCの発表すげー! モチベーション上がる!! うちのプロジェクトでもDDDやってみたい!! 7
8 理解のある上司っぴ 理想的な職場
9 理解のある上司っぴ 理想的な職場 導入に意欲的なチームメンバー
10 理解のある上司っぴ 裁量のあるプロジェクト 理想的な職場 導入に意欲的なチームメンバー
導入に意欲的なチームメンバー 理想的な職場:そこになければないですね。 11 理解のある上司っぴ 裁量のあるプロジェクト 必ずしもあるとは限らない
12 理想的な職場:そこになければないですね。 OOC2024のとあるセッションでのアンケート 実際にDDDに取り組んだ経験のある人 会場の1/4~1/5
DDDをプロジェクトやチームに どうやって導入していくか 今日のテーマ 13
DDDをプロジェクトやチームに どうやって導入していくか 今日のテーマ 14 Tips集
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 15 一番伝えたいこと
16 導入するまでのフロー 個人がリードできる能力を確立 チームに展開, 不安要素をなくす ビジネスサイドと交渉し、 プロジェクトに取り入れる
アジェンダ ◉ ビジネスサイドやステークホルダーの説得 ◉ どうにかして知識と経験を得る ◉ チームで開発するための工夫 17
18 Tips: 1 ビジネスサイドやステークホルダーの説得 Tips1
19 新しい技術だからチャレンジさせて! Tips: 1:それはそう ダメです
• 取り入れることによるメリットや利益 ◦ 開発効率の向上 • 回避可能になる将来的なリスク ◦ 技術的負債の低減 • 想定される課題とその影響範囲
◦ 学習コストによる開発遅延 説得材料を手に入れる 20 Tips: 1:ビジネスサイドやステークホルダーの説得
• 取り入れることによるメリットや利益 ◦ 開発効率の向上 • 回避可能になる将来的なリスク ◦ 技術的負債の低減 • 想定される課題とその影響範囲
◦ 学習コストによる開発遅延 説得材料を手に入れる 21 Tips: 1:ビジネスサイドやステークホルダーの説得 どんな説明が最適かはプロジェクトによりけりなので、自分で 取捨選択して考える必要がある
“ 逆説的に、説明・説得できるだけの知識と 最低限の経験を身につけなくてはいけない 22 Tips: 1:ビジネスサイドやステークホルダーの説得
23 Tips: 1:ビジネスサイドやステークホルダーの説得 しっかりと説明できるなら問題ないが…
24 Tips: 1:それができれば苦労しないんじゃい! 何もわからんけど DDDやってみたい! 説得力のある知識や経験を 積んでから来い! DDD本難しすぎて何もわからん! DDDやったことないのに どうやって経験を身につけるんだ!!
説得力のある知識や経験を 積んでから来い! 説得力のある知識や経験を 積んでから出直せ!!
25 Tips: 2 どうにかして知識と経験を得る Tips2
• 書籍を読む • DDD導入済みの副業先で実務のコードに触れる • ドメインモデル図やコードを書いてみる 知識と経験を得る 26 Tips: 2:どうにかして知識と経験を得る
サンプルコードが 載っている書籍の方が イメージしやすいので、 入門としておすすめ
• 書籍を読む • DDD導入済みの副業先で実務のコードに触れる • ドメインモデル図やコードを書いてみる 知識と経験を得る 27 Tips: 2:どうにかして知識と経験を得る
サンプルコードが 載っている書籍の方が イメージしやすいので、 入門としておすすめ 難解 副業できない
28 ネット上のサンプルコードを写経してもよくわからん… & ドメインモデリングはどう練習すれば…? Tips: 2:どうにかして知識と経験を得る
“ IPA情報処理試験の データベーススペシャリストの 過去問を使おう 29 Tips: 2:IPA情報処理試験の過去問を活用する
30 Tips: 2:IPA情報処理試験の過去問を活用する
31 Tips: 2:IPA情報処理試験の過去問を活用する https://www.ipa.go.jp/shiken/mondai-kaiotu/2023r05.html
午後Ⅰ,Ⅱの問題が最適 • 仕様書の見本としての完成度が非常に高い • 回答としてER図が用意されているため、ドメインモデルとテー ブル構造の違いを比較しやすい • 実務に近い形でのトレーニングを行える IPAの過去問を活用する 32
Tips: 2:IPA情報処理試験の過去問を活用する
33 Q. コードを書く練習もできる? A. もちろん! Tips: 2:IPA情報処理試験の過去問を活用する
34 Tips: 2:実際に用意したものがこちらになります https://github.com/DddEndow/sample-ddd-laravel?tab=readme-ov-file
コードを書くことで得られること ほとんどのDDDの書籍はJavaを基本に書かれている →プログラミング言語やFWによって細かい調整が必要 • より適したアーキテクチャやパッケージ構造の模索 • ドメインモデルや集約の表現 • 実務レベルのコアロジックの実装 •
IDなど統合的なオブジェクトの実装 35 Tips: 2:IPA情報処理試験の過去問を活用する
36 実際に手を動かすことで知識と経験を補い 他の学習方法へのとっかかりを作る Tips: 2:IPA情報処理試験の過去問を活用する DDDちょっとわかってきたから OOC2024でもっと勉強してくるわ!! 先週終わったばっかやぞ!
37 Tips: 3:チームで開発するための工夫 チームで開発するための工夫 Tips3
38 Tips: 3:チームで開発するための工夫 個人でできる チームでできる ≠
39 実際にチームでやってみたら問題が色々出てきた! ↓ 開発に遅延が!! …とならないように Tips: 3:チームで開発するための工夫
開発が停滞しないようにするために • DDD以外の不安要素をなくす • コードを書く上で障害になるポイントを事前に潰す 40 Tips: 3:チームで開発するための工夫
DDD以外の不安要素をなくす ≒ 他の部分でリソースに余裕を持たせる • マネジメントのコストを減らす ◦ 関係性を構築済みのメンバー • 安定したプロジェクトで実施する ◦
規模が小さい or コアドメインが複雑ではない ◦ 技術力の高いメンバー 41 Tips: 3:チームで開発するための工夫
コードを書く上で障害になるポイントを事前に潰す • コーディング規約を作る • 複雑なロジックを持つサンプルコードを作る • 事前にメンバーにレクチャー PRのレビューで指摘するのは時間も労力もかかるので、 それ以外のことで負担を低減できるようにする 42
Tips: 3:チームで開発するための工夫
“ 2つ以上不安要素があるなら、導入を再検討した方が無難 プロジェクト中に発生する事態をある程度予想して対策する 43 Tips: 3:チームで開発するための工夫 Point!
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 44 Tips: 3:チームで開発するための工夫
45 まとめ まとめ
46 まとめ ビジネスサイドやステークホルダーの説得 Tips1
47 まとめ どうにかして知識と経験を得る Tips2
48 まとめ チームで開発するための工夫 Tips3
49 まとめ 個人がリードできる能力を確立 チームに展開, 不安要素をなくす ビジネスサイドと交渉し、 プロジェクトに取り入れる
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 50 まとめ
Thanks! 51