メインコンテンツまでスキップ

境界づけられたコンテキスト 40章アウトライン🗺️✨

全体の進め方(ざっくり)🧭✨

  • 前半:**“なぜBCが必要か”**を体験で理解🔥
  • 中盤:**“境界の見つけ方”**を手順で覚える🔍
  • 後半:**“境界を守る実装”**をC#で形にする💻🔒
  • 最後:演習で1本つなげる🎮✅

Part 1:まず「境界」って何?(導入〜イメージづくり)🌱

第01章:この教材でできるようになること🎯

  • ゴール:BCを見つけて、分けて、守れるようになる💪
  • “設計こわい”を“設計たのしい”へ変える話😊
  • 今日の学び方:例→気づく→手順→実装→演習📚✨

第02章:題材紹介(ミニECで進めるよ)🛒

  • 登場する世界:注文・在庫・配送・請求📦💳🚚
  • “同じ言葉”が衝突しやすい舞台になってるよ😵‍💫
  • 章ごとに少しずつ改善していく流れ🌸

第03章:DDDの地図(超入門)🧭

  • DDDって何のため?(業務の複雑さに勝つため)🧠
  • DDDの中でBCはどこ?(“言葉の意味の範囲”担当)🗺️
  • 深追いしない約束:今日はBCが主役👑

第04章:モデルって何?(クラス図じゃなくてOK)🧩

  • モデル=“業務の見方”をコードにしたもの👀
  • ルール(制約)をコードの形で守るのが設計✨
  • “データ袋”から一歩進む感覚🧺➡️🧠

第05章:ユビキタス言語って何?🗣️✨

  • そのチーム/領域で通じる“同じ言葉”📖
  • 仕様書より会話を大事にする理由💬
  • 用語集(ミニ辞書)を作る準備📒

第06章:Bounded Contextを1行で言うと📝

  • BC=言葉とモデルの意味が一貫する範囲
  • 境界の外では、同じ単語でも別物でOK🙆‍♀️
  • “混ぜない勇気”が大事💪✨

Part 2:衝突を体験して「必要性」を腹落ちさせる🔥

第07章:事故例①「顧客」が3人いる👤👤👤

  • 会員としての顧客/請求先/配送先…別物だよね?
  • 1つのCustomerに詰めるとどうなる?💥
  • “意味のズレ”を言語化する練習🗣️

第08章:事故例②「注文」が部署で別物📦

  • 受注・出荷・請求で“注文の定義”がズレる😇
  • 状態(ステータス)を1本にすると地獄になる話🔥
  • 何が混ざってるかをメモする📝

第09章:事故例③「万能Userクラス」爆誕💣

  • プロパティ増殖・if増殖・影響範囲が読めない🙅‍♀️
  • “便利そう”が一番危ない罠⚠️
  • 責任が混ざる=境界が無いサイン🚨

第10章:変更が怖くなる正体(設計初心者向け)😵‍💫

  • 変更理由が違うものが同居すると壊れる💥
  • テストが書けない/直せないが起きる理由🧪❌
  • BCで「壊れる範囲」を狭める発想🛡️

Part 3:境界の見つけ方(手順を覚えるゾーン)🔍✨

第11章:境界発見の全体手順(テンプレ)📌

  • ①業務を言葉にする → ②イベントにする → ③固まりを見る
  • ④関係性を描く → ⑤実装で守る
  • 迷ったらこのチェックリストに戻る🔁

第12章:材料集め(業務を“会話”にする)💬

  • 仕様を「誰が」「何を」「いつ」へ分解🧩
  • 例:カスタマーが注文する→支払い→出荷…
  • 文章を短くするだけで見える世界✨

第13章:イベントストーミング準備編🧰🌩️

  • “イベント”=起きた事実(過去形)📌
  • 粒度の目安(細かすぎ問題を避ける)📏
  • まずは10〜20個でOK👌

第14章:イベントストーミング実施編🧩🌩️

  • イベントを時系列に並べる⏳
  • 似たものを固める(グルーピング)🧺
  • そこで使われる言葉を横に書く📝

第15章:読み取り編(境界の“匂い”を探す)👃🔍

  • 固まりごとに“目的”が違うなら境界候補✅
  • イベントの間が重い(調整・確認)が境界サイン⚡
  • “衝突しそうな単語”に印を付ける🖊️

第16章:ズレ探しA「同じ単語・意味が違う」🧨

  • 注文/顧客/金額/住所…同名異義を見つける🔍
  • “誰の視点か”で意味が変わるよね👀
  • 用語の衝突メモを作る📝

第17章:ズレ探しB「同じ意味・言い方が違う」🌀

  • 例:会員IDと顧客番号、請求先と決済先…
  • 同じものを別名で呼ぶと、統合で事故る😇
  • 用語統一 or 境界分離の判断ポイント⚖️

第18章:ズレ探しC「データは似てるけど責務が違う」📦

  • 住所=配送の住所 vs 請求の住所(責任が違う)
  • 金額=注文合計 vs 請求金額(計算ルールが違う)
  • “責任の違い”を言語化する練習🗣️

第19章:変更理由で切る(SoCの感覚)✂️

  • どこが一番よく変わる?(割引、送料、在庫ルール)🔁
  • 変更の波が違うなら分けると楽🌊
  • “変更の波メモ”を作る📒

第20章:サブドメイン入門A(直感でOK)🧭🍰

  • コア/支援/汎用のざっくり理解
  • 何に力を入れるべきかが見える👀✨
  • “全部コア”はだいたい嘘😇

第21章:サブドメイン入門B(BCとの関係)🔗

  • サブドメインとBCは1対1じゃない🙅‍♀️
  • まずは境界の候補を出す→後で整える👌
  • チーム・リリース都合も境界に影響する🏃‍♀️

第22章:境界候補の絞り込みチェックリスト✅

  • 用語が一貫してる?/責任が一貫してる?
  • 変更の波は同じ?/テスト単位にできる?🧪
  • “いったん仮置き”の勇気も大事🧡

Part 4:境界を決める(粒度・共有・一貫性)📏🔒

第23章:粒度の基本(小さすぎvs大きすぎ)📏

  • 小さすぎ:連携地獄😵‍💫/大きすぎ:衝突地獄💥
  • “会話のまとまり”が最初の目安💬
  • まずは3〜6個のBCが現実的👌

第24章:境界の命名ルール(ここ超大事)🏷️✨

  • “注文BC”みたいな雑名は危険⚠️
  • 役割が分かる名前にする(例:OrderManagementなど)
  • 境界名=会話の速さ🚀

第25章:共有DBが境界を壊す(超あるある)🧱💥

  • 共有テーブル=意味が混ざる近道😇
  • “読めるけど触らない”ルールの考え方👀🔒
  • まずは“所有者”を決める🏠

第26章:境界と一貫性(トランザクションの気持ち)🔁

  • どこまでを“同時に正しい”にする?✅
  • 境界をまたぐと“すぐ一致しない”が起きる🕒
  • ユーザー体験として許せるズレを決める😊

第27章:ケーススタディでBC案を確定(仮でOK)🛒📦🚚

  • 例:受注管理/在庫管理/配送管理(+請求)
  • 境界ごとの用語集(ミニ)を作る📒
  • “ここから育てる”宣言🌱✨

Part 5:Context Map(境界どうしの付き合い方)🗺️🤝

第28章:Context Mapとは?(描けるようになろう)🗺️

  • BC同士の関係を1枚にする
  • 依存の向きが見えると事故が減る✅
  • “図にできない関係”はだいたい危険⚠️

第29章:関係A Customer/Supplier(供給と利用)🧑‍🤝‍🧑

  • 供給側がルールを持つ/利用側が合わせる
  • 仕様変更の影響を読む練習📖
  • “誰が主導権?”を決める👑

第30章:関係B Conformist(合わせきる)🙇‍♀️

  • “相手に合わせる”と割り切るパターン
  • メリット:速い/デメリット:相手都合が刺さる⚡
  • どこまで合わせるかの境界線📏

第31章:ACL入門A(なぜ必要?)🛡️

  • 外部や別BCの“クセ”を中に入れない
  • ドメインを守る防波堤🌊🧱
  • “翻訳”って何を翻訳するの?📖

第32章:ACL入門B(どう作る?)🔧

  • DTO⇔ドメイン型の変換
  • 命名・単位・欠損値・真偽値の揺れを吸収
  • 変換が肥大化したら設計見直しサイン🚨

第33章:ACL入門C(テスト&運用)🧪

  • ACLは壊れると連鎖するのでテスト重要✅
  • “変換ルール”を仕様として固定する📌
  • 変更通知が来たときのチェック手順🔁

第34章:Published Language(公開する言葉)📢

  • 境界を越えるときの“契約の言葉”
  • API/イベント/DTOの語彙を揃える🧾
  • 後方互換の考え方を超入門で☘️

Part 6:C#で境界を守る(Windows+最新環境想定)💻🔒

第35章:プロジェクト構成A(まず置き場所)🏗️

  • Visual Studioでソリューションを切る
  • “BCごとにプロジェクト”の基本案📦
  • まずはモジュラーモノリスでOK👌

第36章:プロジェクト構成B(参照ルールを固定)📐

  • どこがどこを参照していい?(依存の向き)➡️
  • “共通”プロジェクト乱立の危険⚠️
  • 境界を守るための最小共通化🥺→控えめに!

第37章:namespaceとフォルダ設計(見ただけで分かる)📁✨

  • Contextごとに名前空間を分ける
  • “同名クラス禁止”で衝突を見える化👀
  • 迷ったら「用語集」と一致させる📒

第38章:公開範囲で守る(public/internalの感覚)🔒

  • 境界外に見せていいもの・ダメなもの
  • “ドメイン型を持ち出さない”の基本姿勢🙅‍♀️
  • 境界越えは契約(DTO)で📨

第39章:境界越えのデータ設計(DTOとバージョンの超入門)📦📨

  • DTOを薄くするコツ(必要最小限)🥗
  • 後方互換を壊さない追加の仕方➕
  • “破壊変更”を避ける段取り(段階的に)🚧

第40章:総合演習(BC分割→Context Map→実装修正)🎮✅

  • 分割前コードを読む(地雷探し)🧨
  • BC案を決めて、用語集&関係図を作る🗺️📒
  • 実装を分割して、DTO/ACLで守る🔒
  • テストで“境界が崩れてない”を確認🧪
  • 最後にレビュー観点チェック✅(言葉の一貫性・依存の向き・共有の扱い)

各章に毎回つける「お助けAIプロンプト」例🤖✨(共通テンプレ)

  • 「この文章から、同じ単語で意味が変わる箇所を列挙して」🔍
  • 「イベント(過去形)として箇条書きにして」🌩️
  • 「イベントの固まりごとに“目的”を1行で付けて」🏷️
  • 「境界候補を3案出して、メリデメも書いて」⚖️
  • 「DTOにするなら必要最小のフィールド案を出して」📨

必要なら次は、この40章をベースにして

  • 各章:説明(やさしく)+図(文章で)+ミニ演習+つまずきポイント🧩 まで“第1章から順に”本文化していけるよ😊✨