Skip to main content

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

前提は Windows + VS Code + AI拡張あり(Copilot / Codex等)、TypeScriptは **2026/02/02 時点で安定版ラインの 5.9.x(npm latest は 5.9.3)**を基準にするよ🧸💻 ※TypeScript 6.0/7.0(ネイティブ移行の流れ)は「今後の見通し」として後半で軽く触れる感じにするね🌱 (参考:npmのlatest 5.9.3、公式ブログのTS 6.0/7.0方針、ネイティブプレビュー)(npmjs.com)


Part 0:はじめに “設計の地図” を渡すよ🗺️✨(1〜5)

第1章 ゴールと進め方🎯😊

  • ねらい:Bounded Context(BC)を「説明できる+自分で境界案を作れる」ようにする🎉
  • やること:この教材で作るミニアプリ(学内フリマ🛍️)を紹介
  • 成果物:最後に作る “Context Map” の完成イメージを見る👀✨

第2章 まずは “境界がないと地獄” を体験😇➡️😱

  • ねらい:「全部ひとつモデル」だと壊れやすい理由を体感する💥
  • やること:同じ言葉が衝突する例(ユーザー/会員/出品者)を眺める🌀
  • 成果物:衝突リスト(何が混ざって困る?)を箇条書きで作る📝

第3章 DDDとBCの関係(超やさしく)🧠🌱

  • ねらい:BCは「ドメインの言葉を守る境界」って感覚をつかむ🛡️
  • やること:DDDは“道具箱”、BCは“境界線”だよ〜の整理📦
  • 成果物:「BCとは何か」を自分の言葉で1〜2行で書く✍️😊

第4章 例題の世界観(学内フリマ)を決める🏫🛍️

  • ねらい:想像できる題材で、言葉のズレが起きる準備をする🙂
  • やること:登場人物(出品者/購入者/運営)と目的を決める🎭
  • 成果物:簡単なユースケース3つ(出品・購入・発送)を書く📌

第5章 開発セットアップ(Windows/VS Code/TS)🔧💻

  • ねらい:環境で迷って学習が止まらないようにする🧸

  • やること:VS CodeでTSプロジェクトを動かす準備(最小)🚀

  • 成果物:実行できる空プロジェクト+README(手順)📄✨

    • AI相棒🤖:READMEをAIに生成させて、自分で整える練習もするよ😊

Part 1:Bounded Context のコア感覚🌸(6〜10)

第6章 “同じ言葉、別の意味” がBCの出発点🗣️💡

  • ねらい:用語がズレると設計が壊れる理由を理解する🧩
  • やること:「ユーザー」という単語が何種類に割れるか考える🤔
  • 成果物:用語カード(言葉→意味→使う場面)を作る🃏✨

第7章 BCの定義(やさしい版)📌😊

  • ねらい:BC=「意味がブレない範囲」って言えるようにする🎈
  • やること:境界の中では言葉が1つの意味で固定される話🧱
  • 成果物:BCの定義を “例題の言葉” で言い換える✍️🛍️

第8章 何が嬉しいの?(メリット3つ)🎁✨

  • ねらい:モチベが出るメリットを先に掴む🔥
  • やること:変更が怖くない/チームでも揉めない/テストしやすい🧪
  • 成果物:「BCがある世界」と「ない世界」の比較メモを作る📝😄

第9章 “境界の中のモデル” って何?🧱🧠

  • ねらい:モデルは「現実のコピー」じゃなく「目的のための道具」だと知る🔧
  • やること:同じUserでも、BCごとに持つ属性が違ってOKな話🙆‍♀️
  • 成果物:BCごとに “Userに必要な情報” を分けて書く📝

第10章 SoC(関心の分離)とBCのつながり🔍🧼

  • ねらい:BCはSoCの強力なやり方の1つだと理解する✨
  • やること:UI都合・DB都合をドメインに混ぜない感覚を持つ🚫
  • 成果物:「混ぜると困るものリスト」を作る🧾⚠️

Part 2:境界候補を見つける練習✂️🔎(11〜18)

第11章 まず “業務のかたまり(能力)” を並べる🧱📋

  • ねらい:境界の候補を作る材料を集める🧺
  • やること:出品管理・決済・配送・問い合わせ…みたいに分解🧩
  • 成果物:能力リスト(ざっくりでOK)を作る📝😊

第12章 イベントで切る(Event Storming風ミニ)📣🕰️

  • ねらい:「何が起きる?」で境界候補を見つける👀
  • やること:出品した/購入した/発送した…を時系列で並べる⏳
  • 成果物:イベント列+関連する用語をメモする📝✨

第13章 ルールの違いで切る⚖️🧠

  • ねらい:ルールが違う場所が境界になりやすいと知る📌
  • やること:返品ルール、手数料、出品制限…などを分けて見る💡
  • 成果物:「ルールのまとまり」を3つ作る🧩

第14章 データの寿命で切る🗄️⌛

  • ねらい:短命データと長命データが混ざるとツラいと知る😵
  • やること:一時的なカート情報 vs 取引履歴みたいな話🛒📜
  • 成果物:データ分類表(短命/長命/監査必要)を作る📝

第15章 “責任者(オーナー)” 視点で切る👩‍💻🏷️

  • ねらい:誰が面倒を見るかで境界が決まる現実を知る🌍
  • やること:運営担当、学生側機能、外部サービス担当…の想定🤝
  • 成果物:担当(想定)と責任を紐づける🧾

第16章 UIフローとドメインフローを分けて考える🪞🚦

  • ねらい:画面遷移に引きずられず、業務の境界を考える🧠
  • やること:画面の都合と業務ルールの都合を分離する🧼
  • 成果物:同じ機能でも「業務視点の流れ」を書く✍️✨

第17章 境界案を3つ作る(発散)🌈📝

  • ねらい:正解探しじゃなく、案を出せるようになる😊

  • やること:11〜16章の材料から、境界案A/B/Cを作る📦📦📦

  • 成果物:境界案3つ(名前つき)を用意する🏷️✨

    • AI相棒🤖:境界案の“追加案”をAIに出させて比較するのもOK🎀

第18章 境界案を比べる(判断)⚖️👀

  • ねらい:トレードオフで選ぶ練習をする🧠
  • やること:変更頻度・複雑さ・依存の強さ・将来分割のしやすさを比較📌
  • 成果物:採用案1つ+採用理由(3行)を書く✍️😊

Part 3:決めた境界を “言葉” と “記録” で固める🧱📝(19〜22)

第19章 コンテキスト名を決める(超大事)🏷️✨

  • ねらい:名前が曖昧だと境界も曖昧になるのを防ぐ🛡️
  • やること:例:Listing(出品)/Trading(取引)/Shipping(配送)など📦
  • 成果物:各BCの名前+一言説明を書く📝😊

第20章 各BCの「責務・目的・非目的」を書く🎯🚫

  • ねらい:境界を守る“ルール文”を作る📜
  • やること:このBCは何を扱い、何は扱わないかを明確化📌
  • 成果物:BCごとに3点セット(目的/責務/非目的)📝✨

第21章 用語集(ユビキタス言語)をBCごとに作る📚🗣️

  • ねらい:言葉のブレを減らす(最強の地味努力💪)
  • やること:同じ単語でもBCごとに意味を固定する🧷
  • 成果物:BCごとのミニ辞書(10語くらい)📖✨

第22章 ADRミニ(設計判断のメモ)🧾🧠

  • ねらい:後で迷子にならないように記録する😊
  • やること:背景→選択→結果(短く)を残す✍️
  • 成果物:ADR 1枚(採用した境界案の理由)📄✨

Part 4:Context Map で “関係の取り決め” を描く🗺️🤝(23〜28)

第23章 Context Mapとは?(関係図)🗺️✨

  • ねらい:BC同士がどう繋がるかを“見える化”する👀
  • やること:箱(BC)と矢印(関係)で描く📦➡️📦
  • 成果物:白紙に手描きでもOKのContext Mapを作る📝😊

第24章 Customer/Supplier(主導権がある関係)🤝👑

  • ねらい:どっちが仕様を決める?を意識できるようにする🧠
  • やること:Supplierの変更がCustomerに影響する話を理解する⚠️
  • 成果物:例題で「どっちが主導?」を書き込む🖊️

第25章 Conformist(合わせるしかない)😌🌧️

  • ねらい:外部サービスや既存システムで起きる現実を知る🌍
  • やること:「相手に合わせる」代わりに守るべきことを整理🛡️
  • 成果物:合わせる対象と、影響範囲メモを書く📝

第26章 Shared Kernel(共有コア)🧬⚠️

  • ねらい:共有は“最小”が鉄則だと理解する😵‍💫防止
  • やること:共有が増えると調整地獄になる理由を見る💥
  • 成果物:共有するとしたら何を最小にするか決める✂️

第27章 ACL(腐敗防止層)導入:痛い例を見る😇➡️😱🧼

  • ねらい:外部のクセがドメインを汚す感覚を掴む🧽
  • やること:命名・単位・欠損値・状態…が混ざる事故例を見る🚑
  • 成果物:「翻訳が必要な差分リスト」を作る📝✨

第28章 ACL設計:何をどう翻訳する?🌍➡️🏠🛡️

  • ねらい:ACLを“変換の置き場”として設計できるようにする🧩
  • やること:外部DTO⇔内部モデル、状態変換、単位変換などを決める📦
  • 成果物:ACLの責務(変換ルール)を書き起こす🧾😊

Part 5:TypeScriptで “境界をコードに固定” する📁🔒(29〜33)

第29章 まずフォルダで分ける(物理境界)📁✂️

  • ねらい:混ざりにくい形を先に作る(初心者に超効く)💪
  • やること:contexts/listing, contexts/trading…みたいに分ける📦
  • 成果物:境界フォルダがあるプロジェクト構成を作る🧱✨

第30章 各BCの “公開API” を決める🚪✨

  • ねらい:外から触っていい入口を絞る🛡️
  • やること:公開関数/公開型だけをまとめる(窓口)📮
  • 成果物:BCごとに “入口ファイル” を用意する📄

第31章 同名でもOK:BCごとに型を持つ🧩🙂

  • ねらい:「Userが2種類あっても正しい」って慣れる😄
  • やること:ListingUser / TradingUser みたいに意味で分ける🏷️
  • 成果物:BCごとの型スケッチ(プロパティ案)を書く📝

第32章 依存の向きを決める(依存関係ルール)➡️📏

  • ねらい:時間が経っても境界が崩れないようにする🧱

  • やること:「他BCの内部をimportしない」などルールを文章化📜

  • 成果物:依存ルールを1枚にまとめる📝✨

    • AI相棒🤖:ルールの“抜け”をAIにレビューさせるのが超おすすめ😊

第33章 境界を守る運用(レビュー観点)👀✅

  • ねらい:人間の運用で守れる“チェック観点”を持つ🧠
  • やること:PRで見るポイント(import/DTO直参照/共有増殖)を整理⚠️
  • 成果物:境界チェックリストを作る🧾✅

Part 6:BCの中身を “設計しすぎず” 作れるようにする🧸🏗️(34〜38)

第34章 Entity / Value Object 入門(BC内の型づくり)💎🧱

  • ねらい:IDで追うもの・値そのものを分ける感覚を掴む🙂
  • やること:価格(Money)や期間(Period)を値として扱う話🪙📅
  • 成果物:値オブジェクト候補を3つ決める📝✨

第35章 不変条件(Invariants)を入口で守る🔒🚪

  • ねらい:壊れた状態を作れない設計の入口を作る🛡️
  • やること:生成/更新時にチェックする(BC内のルールを集中)📌
  • 成果物:守りたいルールを5つ書き出す📝😊

第36章 状態(ステータス)と遷移を明文化する🚦🔁

  • ねらい:取引の流れが抜け漏れないようにする🧠
  • やること:取引状態(出品中→取引中→発送→完了)を表にする📋
  • 成果物:状態遷移図(簡易でOK)を作る📝✨

第37章 ユースケース(アプリ層)とCQS(読み/書き)🎮📚

  • ねらい:BCの“入口ロジック”をきれいに持てるようにする😊
  • やること:更新はCommand、参照はQueryで分ける練習🧩
  • 成果物:ユースケースを2つ(出品する/購入する)に分ける📝✨

第38章 DIP/DIの超ミニ:外部都合をBCに入れない🛡️🔌

  • ねらい:DB/HTTPを後回しにしても設計できる感覚をつかむ😊
  • やること:RepositoryやClientを“抽象”として置く📦
  • 成果物:インターフェース案(Repository)を1つ書く📝✨

Part 7:BC同士を安全に繋ぐ(統合)🔗🧼(39〜40)

第39章 統合①:同期API + DTO(まず王道)📡📦

  • ねらい:境界を越えるときは“運搬用の形”にする感覚を固める🛡️

  • やること:どこでDTOに変換する?(入口/出口/ACL)を決める🧭

  • 成果物:BC間の受け渡しDTO案を作る📦✨

    • AI相棒🤖:DTOのフィールド案をAIに提案させて、不要を削る✂️😊

第40章 統合②:ACL実装 + まとめ発表会🎉🛡️

  • ねらい:翻訳層(ACL)で中心モデルを守り切る✨

  • やること:外部のクセ(命名/単位/欠損/状態)を変換ルールとして固定🧼

  • 成果物:完成セット🎁

    • Context Map(最終版)🗺️
    • 各BCの責務・用語集📚
    • ACLの翻訳ルール🧾
    • 「なぜこの境界?」を3分で説明できる原稿🎤😊

必要なら次のステップとして、ここから各章を「本文教材」に展開していけるよ😊✨ たとえば各章に ①やさしい説明 ②図(文章で)③TypeScriptミニ演習 ④AIへの質問テンプレ🤖 を付けて、すぐ授業に使える形にする感じ🎀

続けてやるなら、次は 第11〜18章(境界案づくり) を本文化すると一気に理解が進むよ🌸