Slide 1

Slide 1 text

Re: ゼロから始める ドメイン駆動設計 satokoki645

Slide 2

Slide 2 text

とつぜんですが!

Slide 3

Slide 3 text

とつぜんですが! ドメインとは一体なんでしょうか?

Slide 4

Slide 4 text

ドメインとは

Slide 5

Slide 5 text

ドメインとは ・インターネットの住所?

Slide 6

Slide 6 text

ドメインとは ・インターネットの住所? ・ドメイン「モデル」だし、データベースとか?

Slide 7

Slide 7 text

ドメインとは ・インターネットの住所? ・ドメイン「モデル」だし、データベースとか? ・ビジネス側のこと?よく知らない

Slide 8

Slide 8 text

ドメインとは ・インターネットの住所? ・ドメイン「モデル」だし、データベースとか? ・ビジネス側のこと?よく知らない 脱却したい!

Slide 9

Slide 9 text

今回は

Slide 10

Slide 10 text

今回は Re: ゼロから始める

Slide 11

Slide 11 text

今回は Re: ゼロから始める ドメイン駆動設計

Slide 12

Slide 12 text

こんにちは 佐藤 功樹 satokoki645 🆔 フロントエンドエンジニア 󰳕 新篠津村出身 📍 札幌市と最も近い村

Slide 13

Slide 13 text

おしながき 第一章 『キックオフの余熱』
 第二章 『始まりの終わり』
 第三章 『終わりと始まり』


Slide 14

Slide 14 text

結論 1. 事業活動
 2. 事業理解
 3. 設計判断
 4. 各実装
 ・課題は何か? 
 ・事業の仕組みは? 
 ・ステークホルダー 
 ・競合他社は? 
 ・他サービスは? 
 ・自社の強みは? 
 ・収益モデルは? 
 ・対策は? 
 ・仕組みの欠陥は? 
 ・不利益があるか? 
 ・競合に勝てるか? 
 ・必須の機能は? 
 ・強みを伸ばすには 
 ・収益モデルの昇華 
 ・ビジネスの実装 
 ・システムで解決 
 ・実装すべきか? 
 ・コアコンピタンス 
 ・差別化の機能実装 
 ・アイデアの具現化 
 ・決済システム実装 
 ・トランザクション 
 ・ドメインモデル 
 ・レイヤー決め 
 ・セキュリティ 
 ・マイクロサービス 
 ・データメッシュ 
 ・テスト戦略 


Slide 15

Slide 15 text

第一章 『キックオフの余熱』

Slide 16

Slide 16 text

第一章 『キックオフの余熱』 ある日の午後 ━━━━━━━━━ 
 そうだ、今度新しいプロジェクトを任せる人を探しているんだよね。 興味ある? え、はい......私でよければ是非。 ちなみにどういう感じのプロジェクトですか? うーん、まあお客さまと二人三脚で作っていくものかな。 お客さまも熱意だけ持ってて、テクノロジーは分からないらしい。

Slide 17

Slide 17 text

第一章 『キックオフの余熱』 その後、新米PLはメンバーを集め、キックオフを行った。 
 これからよろしく。早速なんだけど、進め方を決めたいんだ。 イケてるECサイトを作りたいらしいんだけど、進め方に案がある人? お客さまも考えが固まってないようです。 アジャイルで柔軟に開発を進めていくのが良いのでは? うーん、知見者もいない中では若干不安だけど.....。 ではそのように。

Slide 18

Slide 18 text

第二章 『始まりの終わり』

Slide 19

Slide 19 text

第一章 『キックオフの余熱』 まずはお客さまの要望を整理しようか。 主なところで言うと以下の通りで、あとから仕様追加あるかも。 ・カッコいいUI、UX 
 ・誰にとっても簡単な購入プロセス 
 ・検索機能 
 本当に最低限ですね。 これくらいなら僕が爆速で作りましょう。 (この人実装速いって聞いたなぁ・・・)

Slide 20

Slide 20 text

第二章 『始まりの終わり』 技術は個人的に使いやすいし、フロントから作ろうかな。 Node.js + TypeScriptで。 🔍 ヒーロー 広告 商品一覧 商品情報 商品名 注文情報 かう!! メイン画面 
 カート画面 
 商品画面 
 その他の商品など 決済情報

Slide 21

Slide 21 text

第二章 『始まりの終わり』 よし、UIは大体できたな.....。 じゃあ機能実装で処理を作っていこう。 ※必要な処理を結構カットしてます。 完成!! 検索 購入

Slide 22

Slide 22 text

第三章 『終わりと始まり』

Slide 23

Slide 23 text

第三章 『終わりと始まり』 やあ、進捗はどうかな? 良かったら聞かせてほしい。 プロトタイプができました! (挙動を見せる)これでいかがでしょうか! おお!いいね。 それで追加実装なんだけど......。 第 n スプリントにて ━━━━━━ 


Slide 24

Slide 24 text

第三章 『終わりと始まり』 う〜〜〜ん、出来なくもないけど・・・。 複雑になってきたなぁ。 とりあえずこんな感じで。 よろしくね〜〜〜。 ・割引設定 
 ・税金計算 
 ・カテゴリ検索 
 ・MAX値段、MIN値段の指定 
 まあやっていくしかないよ。 頑張ってね。

Slide 25

Slide 25 text

第二章 『始まりの終わり』 さて、じゃあ作っていこう。 とりあえずこんな感じかな・・・。 完成!! 検索 購入

Slide 26

Slide 26 text

単語集 * アジャイル(Agile) 
 『計画→設計→実装→テスト』といった開発工程を機能単位の小さいサイクルで繰り返すことが特徴 の開発手法のひとつ。ウォーターフォールと対に語られがち。 * サ
 主要なドメインをさらに細分化したものです。 例えば、金融業界の中にある「ローン管理」や「資産運用」などの特定の領域を指します。 * ド
 特定のドメインにおけるビジネスルールや業務の流れを指します。 これはアプリケーションの中でドメインの振る舞いを決定する重要な部分です。

Slide 27

Slide 27 text

単語集 * ドメイン(Domain)- 事業活動 
 ソフトウェア開発において「ドメイン」は特定の問題領域や業務活動を指します。 例えば、金融業界、医療業界、教育業界など、それぞれ特有のビジネスルールや課題があります。 * サブドメイン(Sub Domain)- 業務領域 
 主要なドメインをさらに細分化したものです。 例えば、金融業界の中にある「ローン管理」や「資産運用」などの特定の領域を指します。 * ドメインロジック(Domain Logic)- 業務ロジック 
 特定のドメインにおけるビジネスルールや業務の流れを指します。 これはアプリケーションの中でドメインの振る舞いを決定する重要な部分です。

Slide 28

Slide 28 text

単語集 * コアドメイン(Core Domain) - 中核の業務領域 
 そのビジネスにとって最も重要で差別化要因となる業務領域です。 例えば、eコマースサイトの「商品検索とレコメンデーション」機能などがこれに該当します。 * ユビキタス言語(Ubiquitous Language)- 共通認識の言葉 
 開発者含めた関係者が共通で理解し使用する言葉や用語を指します。 これにより、コミュニケーションのギャップが減り、よりスムーズな開発が可能になります。 * 境界コンテキスト(Bounded Context)- 区切られた文脈 
 ドメイン内の明確な境界を示し、その中で特定のビジネスロジックやモデルが有効であることを意味 します。これにより、異なるサブドメイン間での混乱を避けることができます。

Slide 29

Slide 29 text

単語集 * コンテキストマップ(Context Map) - 文脈の地図 
 異なる境界コンテキスト間の関係やインタラクションを視覚的に示したものです。 いまだと、Miroとかで書かれがちっぽいです。 その他の用語について 
 もっと知りたい場合は、引用元をご確認ください。 参考文献もあり、かなりわかりやすい資料になっております。 https://www.ogis-ri.co.jp/otc/hiroba/technical/DDDEssence/ DDD難民に捧げる Domain-Driven Designのエッセンス