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
750
チームで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
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.2k
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
150
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
980
OpenID BizDay#17 KYC WG活動報告(法人) / 20250219-BizDay17-KYC-legalidentity
oidfj
0
250
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
130
OpenID Connect for Identity Assurance の概要と翻訳版のご紹介 / 20250219-BizDay17-OIDC4IDA-Intro
oidfj
0
280
プロセス改善による品質向上事例
tomasagi
2
2.6k
Culture Deck
optfit
0
420
Classmethod AI Talks(CATs) #16 司会進行スライド(2025.02.12) / classmethod-ai-talks-aka-cats_moderator-slides_vol16_2025-02-12
shinyaa31
0
110
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
970
次世代KYC活動報告 / 20250219-BizDay17-KYC-nextgen
oidfj
0
260
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
9
440
GraphQLとの向き合い方2022年版
quramy
44
13k
Designing Experiences People Love
moore
140
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Being A Developer After 40
akosma
89
590k
BBQ
matthewcrist
87
9.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Code Reviewing Like a Champion
maltzj
521
39k
Gamification - CAS2011
davidbonilla
80
5.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
How STYLIGHT went responsive
nonsquared
98
5.4k
We Have a Design System, Now What?
morganepeng
51
7.4k
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