Slide 1

Slide 1 text

スタートアップでDDD を始めた時の困難

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

所属 株式会社TechBowl 住んでるところ 東京 何やってる? 「TechTrain 」というサービスで反復横跳びし続けている 何でも屋さん(Laravel, Next.js, AWS, etc...) 趣味 お酒( よく溺れる) サウナ 読書 2024-05-13 | スタートアップでDDD を始めた時の困難 3

Slide 4

Slide 4 text

TechTrain エンジニア教育+Direct スカウトのサービス。 Coding Stoic をテーマにちゃんとコードを書いていこう ね!というメンターが多めのエンジニアを育てるための サービスです。 2024-05-13 | スタートアップでDDD を始めた時の困難 4

Slide 5

Slide 5 text

一緒に働いてくれる人を探しています! 1. バックエンドエンジニア(Laravel + DDD) 2. フロントエンドエンジニア(Next.js with TypeScript) 3. TechTrain のメンター -> 筋がいい人なら教えたいぜ! 2024-05-13 | スタートアップでDDD を始めた時の困難 5

Slide 6

Slide 6 text

結論 2024-05-13 | スタートアップでDDD を始めた時の困難 6

Slide 7

Slide 7 text

チームの状態に合わせてグラデーションをつける 2024-05-13 | スタートアップでDDD を始めた時の困難 7

Slide 8

Slide 8 text

前提 職種を超えて、信頼を獲得していること、しようとしていること ドメインエキスパートが増えるように施策は打っておくこと 業務委託を含めたチームが急激に増え始めたタイミングであること 2024-05-13 | スタートアップでDDD を始めた時の困難 8

Slide 9

Slide 9 text

なぜ戦略的DDD の導入だったのか? 2024-05-13 | スタートアップでDDD を始めた時の困難 9

Slide 10

Slide 10 text

ドメインが広くなった・・・ 2024-05-13 | スタートアップでDDD を始めた時の困難 10

Slide 11

Slide 11 text

ドメイン知識を全く知らない人の入社が増えた 人材業界、ダイレクトリクルーティング、エンジニアについて知らないぞ? 飲み屋出身だから本当に何も知らないぞ? 2024-05-13 | スタートアップでDDD を始めた時の困難 11

Slide 12

Slide 12 text

で、ここからちゃんと「チームの状態に合わせてグラ デーション」は何をやったのか? 2024-05-13 | スタートアップでDDD を始めた時の困難 12

Slide 13

Slide 13 text

全体のMax プランのアクション エンジニアサイドビジネスサイド関わりなく 1. 全員がドメインの知識を習熟し、顧客が誰かを定義している 2. 用語の揺れなどがあれば、用語集などに編集に行く 3. ユースケースなどの定義に全員が参加して進める 2024-05-13 | スタートアップでDDD を始めた時の困難 13

Slide 14

Slide 14 text

まぁ工数的に難しいことが多い 2024-05-13 | スタートアップでDDD を始めた時の困難 14

Slide 15

Slide 15 text

グラデーションをつけて導入していく 2024-05-13 | スタートアップでDDD を始めた時の困難 15

Slide 16

Slide 16 text

戦略的設計の主要な要素 △ ドメインモデリングとドメインの識別 境界づけられたコンテキストの設定 コンテキスト間の関係の管理 システムの分割・統合( コンテキストのとも言えるかも) 2024-05-13 | スタートアップでDDD を始めた時の困難 16

Slide 17

Slide 17 text

ドメインモデリングとドメインの識別 Max プラン 次のことを関係者全員で行う コアドメイン、サブドメインの特定 ドメインモデル図の作成 2024-05-13 | スタートアップでDDD を始めた時の困難 17

Slide 18

Slide 18 text

ドメインモデリングとドメインの識別 グラデーション ドメインモデル図などに揺れや漏れがある時にエンジニアが収束させにいく 最低限のビジネスサイドとエンジニアでドメインモデル図の作成 ステークホルダーへの確認と修正 2024-05-13 | スタートアップでDDD を始めた時の困難 18

Slide 19

Slide 19 text

どの時点で見直す? システムも含めて分割を行い、関係者の分割をできたら見直しを入れる 2024-05-13 | スタートアップでDDD を始めた時の困難 19

Slide 20

Slide 20 text

境界づけられたコンテキストの設定/ コンテキスト間の 関係の管理 Max プラン 2024-05-13 | スタートアップでDDD を始めた時の困難 20

Slide 21

Slide 21 text

境界づけられたコンテキストの設定/ コンテキスト間の 関係の管理 グラデーション 最低限のエンジニアとビジネスサイドで定義して勝手にやれるうちは、あまり明確に ドメインエキスパートが抑えこみに行かない 2024-05-13 | スタートアップでDDD を始めた時の困難 21

Slide 22

Slide 22 text

境界づけられたコンテキストの設定/ コンテキスト間の 関係の管理 いつ見直すのか? 勝手にチームでこれができなくなってきた時にドメインエキスパートがここを厳しめ にちゃんとやるひつようが出てくると理解 2024-05-13 | スタートアップでDDD を始めた時の困難 22

Slide 23

Slide 23 text

システムの分割・結合 Max プラン Micro サービスなどにして分割していく 2024-05-13 | スタートアップでDDD を始めた時の困難 23

Slide 24

Slide 24 text

グラデーション ユースケースをどのドメイン領域で誰が何をやっているのか?などを明確に分け て進めている 2024-05-13 | スタートアップでDDD を始めた時の困難 24

Slide 25

Slide 25 text

いつ見直すのか? 分けないとアウトカムが明らかに出ないようになってきている状態、認知負荷を 確実に超えてきたなと言える状態になってきた 2024-05-13 | スタートアップでDDD を始めた時の困難 25

Slide 26

Slide 26 text

このグラデーションによるデメリット チームのカルチャーによって、アウトカムではなくアウトプットへの執着になり うる エンジニアとビジネスサイドの確認、連携がうまく機能しない可能性がある 2024-05-13 | スタートアップでDDD を始めた時の困難 26

Slide 27

Slide 27 text

全体のグラデーションとしてのアクションのまとめ 1. 最低限の関係者が集まり、ドメインについての情報を集約と深掘り 2. 集約した情報をもとにユースケースを整理し、共有 3. ドメインモデル図など必要なドキュメントをエンジニアが起こす 4. 用語集は気づいたタイミングで職種関係なく更新 5. ドメインエキスパートがそれぞれドメイン知識を移植するための勉強会を開く 2024-05-13 | スタートアップでDDD を始めた時の困難 27

Slide 28

Slide 28 text

結論 2024-05-13 | スタートアップでDDD を始めた時の困難 28

Slide 29

Slide 29 text

チームの状態に合わせてグラデーションをつける 2024-05-13 | スタートアップでDDD を始めた時の困難 29

Slide 30

Slide 30 text

以降は参考です! 2024-05-13 | スタートアップでDDD を始めた時の困難 30

Slide 31

Slide 31 text

1. DDD をどのように考えているのか 2024-05-13 | スタートアップでDDD を始めた時の困難 31

Slide 32

Slide 32 text

構成要素 ユビキタス言語 ドメインエキスパート 境界づけられたコンテキスト 2024-05-13 | スタートアップでDDD を始めた時の困難 32

Slide 33

Slide 33 text

ユビキタス言語 1. 業界についての情報 2. 実際の運用で利用する情報 3. 社内における独自の用語 2024-05-13 | スタートアップでDDD を始めた時の困難 33

Slide 34

Slide 34 text

ドメインエキスパート 1. 業界の事情を網羅している 2. ソフトウェアとドメイン知識を行使する現場との橋渡し 2024-05-13 | スタートアップでDDD を始めた時の困難 34

Slide 35

Slide 35 text

境界づけられたコンテキスト 同じ用語を別の使い方になっていないか?ということが重要 現場で揺れ始めているのを感じたら気づいたエンジニアから分割or 統一に向かう 2024-05-13 | スタートアップでDDD を始めた時の困難 35

Slide 36

Slide 36 text

前提となるコンテキスト1: ドメインの領域が広いor 複数ある 1. TechTrain( エンジニア教育のプラットフォーム) 2. DirecTrain( ダイレクトリクルーティング) 3. AgenTrain( 人材紹介) 3 つの業界をまたがっていると言っても良い。 2024-05-13 | スタートアップでDDD を始めた時の困難 36

Slide 37

Slide 37 text

前提となるコンテキスト2: チームのメンバー状態の急激な変化 1. 業務委託のエンジニア 2. 業務委託のビジネスサイド 3. 正社員のエンジニア 4. 正社員のビジネスサイド 2024-05-13 | スタートアップでDDD を始めた時の困難 37

Slide 38

Slide 38 text

2. なぜDDD を取り入れようと思ったのか 当時概念が多くなっていたにも関わらず何もまとめていなかった 事業の種類も増え、ビジネスサイドのエンジニアサイドの人数が増えていた ビジネスサイドとエンジニアサイドで用語の分離が起こり始めていた 2024-05-13 | スタートアップでDDD を始めた時の困難 38

Slide 39

Slide 39 text

そこに現れてくれたDDD を実践している人の登場 最初のカジュアル面談のタイミングで概念の図を一緒に起こした その時点で、これからも概念が大きく増えて横断的に利用される実感が湧いたた め、DDD をチーム的に導入することに決めた この時点で、戦術的実装についてはほとんど検討していなかった 2024-05-13 | スタートアップでDDD を始めた時の困難 39

Slide 40

Slide 40 text

概念をまとめるための細かいツールの変遷についてはこちらのブログを見ていただけ ますと・・・! DDD × Whimsical で快適モデリングライフ! 2024-05-13 | スタートアップでDDD を始めた時の困難 40

Slide 41

Slide 41 text

3. 実際にどこまでワークしているのか、していないの か 2024-05-13 | スタートアップでDDD を始めた時の困難 41

Slide 42

Slide 42 text

戦略的設計の主要な要素 ️ ドメインモデリングとドメインの識別 境界づけられたコンテキストの設定 コンテキスト間の関係の管理 コンテキストの統合 2024-05-13 | スタートアップでDDD を始めた時の困難 42

Slide 43

Slide 43 text

境界づけられたコンテキストの設定 なぜこれが必要か? 同じ言葉を使っているのに別の使われ方をしているということが出てきたら、こ ちらを丁寧にやっていく必要があると思うが、今は必要ないと判断。 むしろ今やってしまうと、同じコンテキストで扱えているのに別で管理する必要 性に迫られ、必要のない工数が増える。 今は境界づけるようなものはほとんどない。一部あるが、チームで認識をとって 必要になった時にコンテキストを最低限分割することができている。 勝手にチームでこれができなくなってきた時にドメインエキスパートがここを厳 しめにちゃんとやるひつようが出てくると理解。 2024-05-13 | スタートアップでDDD を始めた時の困難 43

Slide 44

Slide 44 text

システムの分割・結合 これはやってない というかエンジニアを採用できないとできない。 今ドメインの事情が諸々絡み合ってるので、システム自体の分割( 特にバックエン ド) が難しい。 ユースケースを変に統一しないことで割り切っている。 いろんなところで使われるからこそ、どこで誰かと言うところまで分けて定 義している システムは分割していないが、その分アプリケーションレイヤーを細かく区 切って誰が何をするのかがわかりやすいようにしている。(戦術が少し入っ てしまうんだけど) サブドメインはやってない ドメインがデカくなった時にしっかり分割を進めていけば、それが自然にサ ブドメインになるんじゃね? またサブドメインを跨ぐと、認知限界を超えてくると考えているので、一旦 2024-05-13 | スタートアップでDDD を始めた時の困難 44

Slide 45

Slide 45 text

結論 2024-05-13 | スタートアップでDDD を始めた時の困難 45

Slide 46

Slide 46 text

チームの状態に合わせてグラデーションをつける 2024-05-13 | スタートアップでDDD を始めた時の困難 46

Slide 47

Slide 47 text

2024-05-13 | スタートアップでDDD を始めた時の困難 47