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
910
チームで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.1k
経験学習型キャリア探索法 ~ふりかえりで始めるキャリアパスの見つけ方~
d_endo
2
1.4k
負荷試験の観点から見るGraphQLにおけるPHPのコードチューニング
d_endo
1
2.9k
Step Functions Expressで作るフルマネージドなサーバーレスバッチ
d_endo
1
2.8k
AWS認定資格のススメ
d_endo
1
510
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
Claude Code for NOT Programming
kawaguti
PRO
1
110
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.6k
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
ClickHouseはどのように大規模データを活用したAIエージェントを全社展開しているのか
mikimatsumoto
0
270
AI駆動開発を事業のコアに置く
tasukuonizawa
1
400
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
520
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
170
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
210
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
210
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
770
Cosmos World Foundation Model Platform for Physical AI
takmin
0
980
Featured
See All Featured
BBQ
matthewcrist
89
10k
A designer walks into a library…
pauljervisheath
210
24k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How to Ace a Technical Interview
jacobian
281
24k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
170
The Cult of Friendly URLs
andyhume
79
6.8k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
160
The Spectacular Lies of Maps
axbom
PRO
1
530
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Agile that works and the tools we love
rasmusluckow
331
21k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
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