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
740
チームで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
1.3k
経験学習型キャリア探索法 ~ふりかえりで始めるキャリアパスの見つけ方~
d_endo
2
1.2k
負荷試験の観点から見るGraphQLにおけるPHPのコードチューニング
d_endo
1
2.6k
Step Functions Expressで作るフルマネージドなサーバーレスバッチ
d_endo
1
2.5k
AWS認定資格のススメ
d_endo
1
460
Laravel + Lighthouseで始める低コストなGraphQL入門
d_endo
4
4k
30分でOpenID Connect完全に理解したと言えるようになる勉強会
d_endo
47
29k
今だからこそ考える「科学技術の倫理学」
d_endo
2
1.3k
アホで乗り越える失敗との付き合い方
d_endo
2
1.4k
Other Decks in Technology
See All in Technology
Bounded Context: Problem or Solution?
ewolff
1
200
High Performance PHP
cmuench
0
130
Postman Vault を使った秘密情報の安全な管理
nagix
0
100
日経電子版 x AIエージェントの可能性とAgentic RAGによって提案書生成を行う技術
masahiro_nishimi
1
250
データの品質が低いと何が困るのか
kzykmyzw
6
780
プロセス改善による品質向上事例
tomasagi
0
430
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
260
これからSREになる人と、これからもSREをやっていく人へ
masayoshi
6
4k
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
19
7.3k
AndroidデバイスにFTPサーバを建立する
e10dokup
0
210
滅・サービスクラス🔥 / Destruction Service Class
sinsoku
6
1.4k
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
170
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Making Projects Easy
brettharned
116
6k
A designer walks into a library…
pauljervisheath
205
24k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
The Invisible Side of Design
smashingmag
299
50k
4 Signs Your Business is Dying
shpigford
182
22k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Speed Design
sergeychernyshev
25
770
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
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