Skip to main content

モジュラーモノリス教材アウトライン(全30章)🧩✨

対象:TypeScript初級〜中級/設計は超入門/モジュラーモノリス初めて👩‍🎓💕


1章:ようこそモジュラーモノリスへ🌱🧩

  • モノリス/マイクロサービスとの違いを超ざっくり
  • “分ける”って何が嬉しいの?(未来の自分が助かる話)
  • ゴール:30章後にできること🎯

2章:題材アプリを決めよう🎒📱

  • 例:学内イベント管理📅、サークル会計💰、フリマ🛍️
  • 要件を「10行」にする(AIで要約)🤖📝
  • “境界が作れそうな題材”の選び方

3章:Windowsでの開発準備(Node/TypeScript)🪟⚙️

  • Node.js と npm の役割
  • TypeScriptのコンパイルの流れ
  • 動作確認:Hello TS ✅

4章:VS Codeの基本セット(拡張+快適化)🧰✨

  • 必須:ESLint / Formatter系
  • よくあるハマりポイント回避😵‍💫
  • 保存時整形でストレス減😊

5章:AI拡張の使い方の“型”🤖💡

  • Copilot / Codex系を前提にした進め方
  • AIに任せてOK/ダメの線引き⚖️
  • 便利プロンプト例(設計相談・レビュー・テスト観点)📝

6章:設計の超基礎「関心の分離」🍱

  • UI/業務/DB/外部I/Oを混ぜると地獄😱
  • 分離のイメージ(中心と外側)
  • ミニ演習:混ざったコードの“困る点”を言語化🗣️

7章:モジュラーモノリスの基本思想🎯🧱

  • デプロイは1つ、内部はモジュールで厳密に
  • “境界”はルールで守る(気合い禁止🙅‍♀️)
  • よくある失敗パターンも先に知る👀

8章:モジュールって何?(粒度の決め方)🧩📏

  • 小さすぎ/大きすぎ問題
  • 目安:「変更理由」で切る✂️
  • AIで境界候補をブレスト🤝🤖

9章:境界づけられたコンテキスト超入門🧱🗺️

  • 同じ言葉でも意味が違う例(ユーザー等)
  • “境界で意味を固定する”
  • ミニ演習:題材アプリの用語を整理📖

10章:フォルダ構成で迷子を防ぐ📁🧭

  • modules/ を中心に置く考え方
  • 1モジュールの中の基本構造
  • 命名ルールのテンプレ化🧾

11章:モジュールの公開API(入口)を作る🚪✨

  • 外から触っていいものだけ出す
  • index.ts の役割
  • “内部は触らせない”が基本🛡️

12章:内部を隠す(カプセル化の作法)🙈🔒

  • internalフォルダ/private設計の感覚
  • “便利だから直import”を封じる
  • ミニ演習:外から内部に触ろうとして失敗させる🚫

13章:依存関係ルール(Dependency Rule)を決める➡️📜

  • どこがどこを参照していいか
  • ルールは文章化してチーム(未来の自分)に渡す📝
  • 禁止例の具体(内部import、循環依存)😱

14章:TypeScriptで境界を守る①(公開面だけ参照)🧠✅

  • “公開APIだけimportする”習慣化
  • 例:modules/x/index.ts だけ触る
  • 演習:内部ファイル参照を排除✂️

15章:TypeScriptで境界を守る②(設定で縛る)🧰🔧

  • tsconfig/eslint等で縛る方向性
  • “人間の注意力に頼らない”
  • 演習:違反したらエラーになる状態へ👮‍♀️

16章:TypeScriptで境界を守る③(CIで取り締まる)🧪👮

  • チェックは自動化が正義✨
  • PRで壊させない流れ
  • AIで「違反例」を作って試す😈🤖

17章:レイヤー(層)を薄く入れる🥞

  • Presentation / Application / Domain / Infrastructure(超ざっくり)
  • “層を跨ぐルール”を決める
  • 演習:題材アプリを層に整理🗂️

18章:アプリケーション層(ユースケース)って何?🎬

  • 何をする層?(手順の組み立て)
  • 薄く保つコツ
  • 演習:ユースケースを1つ作る🧾

19章:ドメイン層(ルールの中心)💎

  • “業務ルールはここ”
  • 値オブジェクトの雰囲気(軽く)
  • 演習:金額・日付・名前などをモデル化🧩

20章:モジュール間連携①(同期呼び出し)📞

  • 公開API経由で呼ぶ
  • DTOは境界用にする
  • 演習:別モジュール呼び出しを作る✅

21章:モジュール間連携②(CQSで読み書き分離)🧾🔀

  • Command(更新)と Query(参照)
  • 混ぜると事故る理由💥
  • 演習:混ざった関数を分離✂️

22章:モジュール間連携③(依存の向きを整える)🔄

  • “AがBを知りすぎ”を減らす
  • インターフェースで距離を取る🧤
  • AIで依存図のレビュー🤖👀

23章:DIP入門(抽象に依存する)🔌⬆️

  • 下位(DB/HTTP)に引きずられない
  • ポート(interface)を切る感覚
  • 演習:Repositoryのinterface化🧩

24章:DI入門(newしないで渡す)🎁

  • コンストラクタ注入が基本
  • “差し替えできる”が嬉しい😊
  • 演習:Fake実装に差し替える

25章:テスト差し替え実践(モジュール単位)🧪💚

  • “中心ロジックだけ”を素早くテスト
  • モック/スタブの使い分け軽く
  • AIにテストケース案を出させる🤖🧾

26章:データ所有権(DBは1つでも持ち主を決める)🗄️👑

  • テーブルの“担当モジュール”を決める
  • 直参照禁止の発想
  • 演習:所有権マップを作る🗺️

27章:トランザクション境界と集約の肌感🌰🔒

  • 1回で整合する範囲を絞る
  • 集約ルート経由で更新
  • 演習:“同時に守る整合”を1つ定義📝

28章:不変条件を守る(壊れない状態しか作らない)🛡️✨

  • 生成/更新で検証
  • “途中で壊れた状態”を作らない
  • 演習:不変条件リスト+テスト化✅

29章:共通化の罠(Shared/Utils地獄を回避)🕳️⚠️

  • DRYのやりすぎ注意
  • 共通化して良いもの/悪いもの
  • 演習:共通化ポリシーを作る⚖️

30章:仕上げ(イベント・ACL・ADR・将来の分割)🎉🚀

  • ドメインイベントで疎結合📣
  • 外部連携はACLで守る🧼
  • ADRで意思決定を残す📝
  • “必要になったら一部だけサービス化”の方針🧭
  • 最終課題:チェックリストで自己採点✅✅✅

必要なら次に、各章に

  • ねらい🎯
  • 重要キーワード📌
  • 章末ミニ課題🧩
  • AI用プロンプト例🤖📝 まで付けた「教材としてそのまま使える版」にもできますよ〜☺️✨