Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
チームでDDDを実践するための ことはじめ 設計カンファレンス Extends OOC 2024.3.29 遠藤大輔 株式会社ゆめみ
Slide 2
Slide 2 text
株式会社ゆめみ リードエンジニア・アーキテクト 遠藤 大輔 X: @DddEndow 2019年4月にエンジニアとしてゆめみに入社。 PHPやKotlinを中心にプロジェクトを牽引しつつ、 DDD を導入する取り組みを行っている。 2 About me
Slide 3
Slide 3 text
3 ゆめみの会社情報
Slide 4
Slide 4 text
“ OOC2024 いかがでしたか? 4 OOC2024の思い出
Slide 5
Slide 5 text
5 OOC2024の思い出 思い出に残っているセッションはありますか?
Slide 6
Slide 6 text
6 OOC2024の思い出:思わず膝を打ってしまったセッション https://speakerdeck.com/yuitosato/functional-and-type-safe-ddd-for-oop
Slide 7
Slide 7 text
“ OOCの発表すげー! モチベーション上がる!! うちのプロジェクトでもDDDやってみたい!! 7
Slide 8
Slide 8 text
8 理解のある上司っぴ 理想的な職場
Slide 9
Slide 9 text
9 理解のある上司っぴ 理想的な職場 導入に意欲的なチームメンバー
Slide 10
Slide 10 text
10 理解のある上司っぴ 裁量のあるプロジェクト 理想的な職場 導入に意欲的なチームメンバー
Slide 11
Slide 11 text
導入に意欲的なチームメンバー 理想的な職場:そこになければないですね。 11 理解のある上司っぴ 裁量のあるプロジェクト 必ずしもあるとは限らない
Slide 12
Slide 12 text
12 理想的な職場:そこになければないですね。 OOC2024のとあるセッションでのアンケート 実際にDDDに取り組んだ経験のある人 会場の1/4~1/5
Slide 13
Slide 13 text
DDDをプロジェクトやチームに どうやって導入していくか 今日のテーマ 13
Slide 14
Slide 14 text
DDDをプロジェクトやチームに どうやって導入していくか 今日のテーマ 14 Tips集
Slide 15
Slide 15 text
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 15 一番伝えたいこと
Slide 16
Slide 16 text
16 導入するまでのフロー 個人がリードできる能力を確立 チームに展開, 不安要素をなくす ビジネスサイドと交渉し、 プロジェクトに取り入れる
Slide 17
Slide 17 text
アジェンダ ◉ ビジネスサイドやステークホルダーの説得 ◉ どうにかして知識と経験を得る ◉ チームで開発するための工夫 17
Slide 18
Slide 18 text
18 Tips: 1 ビジネスサイドやステークホルダーの説得 Tips1
Slide 19
Slide 19 text
19 新しい技術だからチャレンジさせて! Tips: 1:それはそう ダメです
Slide 20
Slide 20 text
● 取り入れることによるメリットや利益 ○ 開発効率の向上 ● 回避可能になる将来的なリスク ○ 技術的負債の低減 ● 想定される課題とその影響範囲 ○ 学習コストによる開発遅延 説得材料を手に入れる 20 Tips: 1:ビジネスサイドやステークホルダーの説得
Slide 21
Slide 21 text
● 取り入れることによるメリットや利益 ○ 開発効率の向上 ● 回避可能になる将来的なリスク ○ 技術的負債の低減 ● 想定される課題とその影響範囲 ○ 学習コストによる開発遅延 説得材料を手に入れる 21 Tips: 1:ビジネスサイドやステークホルダーの説得 どんな説明が最適かはプロジェクトによりけりなので、自分で 取捨選択して考える必要がある
Slide 22
Slide 22 text
“ 逆説的に、説明・説得できるだけの知識と 最低限の経験を身につけなくてはいけない 22 Tips: 1:ビジネスサイドやステークホルダーの説得
Slide 23
Slide 23 text
23 Tips: 1:ビジネスサイドやステークホルダーの説得 しっかりと説明できるなら問題ないが…
Slide 24
Slide 24 text
24 Tips: 1:それができれば苦労しないんじゃい! 何もわからんけど DDDやってみたい! 説得力のある知識や経験を 積んでから来い! DDD本難しすぎて何もわからん! DDDやったことないのに どうやって経験を身につけるんだ!! 説得力のある知識や経験を 積んでから来い! 説得力のある知識や経験を 積んでから出直せ!!
Slide 25
Slide 25 text
25 Tips: 2 どうにかして知識と経験を得る Tips2
Slide 26
Slide 26 text
● 書籍を読む ● DDD導入済みの副業先で実務のコードに触れる ● ドメインモデル図やコードを書いてみる 知識と経験を得る 26 Tips: 2:どうにかして知識と経験を得る サンプルコードが 載っている書籍の方が イメージしやすいので、 入門としておすすめ
Slide 27
Slide 27 text
● 書籍を読む ● DDD導入済みの副業先で実務のコードに触れる ● ドメインモデル図やコードを書いてみる 知識と経験を得る 27 Tips: 2:どうにかして知識と経験を得る サンプルコードが 載っている書籍の方が イメージしやすいので、 入門としておすすめ 難解 副業できない
Slide 28
Slide 28 text
28 ネット上のサンプルコードを写経してもよくわからん… & ドメインモデリングはどう練習すれば…? Tips: 2:どうにかして知識と経験を得る
Slide 29
Slide 29 text
“ IPA情報処理試験の データベーススペシャリストの 過去問を使おう 29 Tips: 2:IPA情報処理試験の過去問を活用する
Slide 30
Slide 30 text
30 Tips: 2:IPA情報処理試験の過去問を活用する
Slide 31
Slide 31 text
31 Tips: 2:IPA情報処理試験の過去問を活用する https://www.ipa.go.jp/shiken/mondai-kaiotu/2023r05.html
Slide 32
Slide 32 text
午後Ⅰ,Ⅱの問題が最適 ● 仕様書の見本としての完成度が非常に高い ● 回答としてER図が用意されているため、ドメインモデルとテー ブル構造の違いを比較しやすい ● 実務に近い形でのトレーニングを行える IPAの過去問を活用する 32 Tips: 2:IPA情報処理試験の過去問を活用する
Slide 33
Slide 33 text
33 Q. コードを書く練習もできる? A. もちろん! Tips: 2:IPA情報処理試験の過去問を活用する
Slide 34
Slide 34 text
34 Tips: 2:実際に用意したものがこちらになります https://github.com/DddEndow/sample-ddd-laravel?tab=readme-ov-file
Slide 35
Slide 35 text
コードを書くことで得られること ほとんどのDDDの書籍はJavaを基本に書かれている →プログラミング言語やFWによって細かい調整が必要 ● より適したアーキテクチャやパッケージ構造の模索 ● ドメインモデルや集約の表現 ● 実務レベルのコアロジックの実装 ● IDなど統合的なオブジェクトの実装 35 Tips: 2:IPA情報処理試験の過去問を活用する
Slide 36
Slide 36 text
36 実際に手を動かすことで知識と経験を補い 他の学習方法へのとっかかりを作る Tips: 2:IPA情報処理試験の過去問を活用する DDDちょっとわかってきたから OOC2024でもっと勉強してくるわ!! 先週終わったばっかやぞ!
Slide 37
Slide 37 text
37 Tips: 3:チームで開発するための工夫 チームで開発するための工夫 Tips3
Slide 38
Slide 38 text
38 Tips: 3:チームで開発するための工夫 個人でできる チームでできる ≠
Slide 39
Slide 39 text
39 実際にチームでやってみたら問題が色々出てきた! ↓ 開発に遅延が!! …とならないように Tips: 3:チームで開発するための工夫
Slide 40
Slide 40 text
開発が停滞しないようにするために ● DDD以外の不安要素をなくす ● コードを書く上で障害になるポイントを事前に潰す 40 Tips: 3:チームで開発するための工夫
Slide 41
Slide 41 text
DDD以外の不安要素をなくす ≒ 他の部分でリソースに余裕を持たせる ● マネジメントのコストを減らす ○ 関係性を構築済みのメンバー ● 安定したプロジェクトで実施する ○ 規模が小さい or コアドメインが複雑ではない ○ 技術力の高いメンバー 41 Tips: 3:チームで開発するための工夫
Slide 42
Slide 42 text
コードを書く上で障害になるポイントを事前に潰す ● コーディング規約を作る ● 複雑なロジックを持つサンプルコードを作る ● 事前にメンバーにレクチャー PRのレビューで指摘するのは時間も労力もかかるので、 それ以外のことで負担を低減できるようにする 42 Tips: 3:チームで開発するための工夫
Slide 43
Slide 43 text
“ 2つ以上不安要素があるなら、導入を再検討した方が無難 プロジェクト中に発生する事態をある程度予想して対策する 43 Tips: 3:チームで開発するための工夫 Point!
Slide 44
Slide 44 text
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 44 Tips: 3:チームで開発するための工夫
Slide 45
Slide 45 text
45 まとめ まとめ
Slide 46
Slide 46 text
46 まとめ ビジネスサイドやステークホルダーの説得 Tips1
Slide 47
Slide 47 text
47 まとめ どうにかして知識と経験を得る Tips2
Slide 48
Slide 48 text
48 まとめ チームで開発するための工夫 Tips3
Slide 49
Slide 49 text
49 まとめ 個人がリードできる能力を確立 チームに展開, 不安要素をなくす ビジネスサイドと交渉し、 プロジェクトに取り入れる
Slide 50
Slide 50 text
“ 開発中はドメインの追求や プロジェクトを推進することに 注力できるようにする 50 まとめ
Slide 51
Slide 51 text
Thanks! 51