腐敗防止層(ACL)教育コンテンツ:20章 詳細アウトライン 🧼🧱✨
第1章:ACLってなに? “腐敗”ってなに?(最短でイメージ)🧼💡
-
ねらい:ACLの役割を「一言で言える」ようにする
-
学ぶこと
- 外部の仕様・クセ・歪みが “内側の設計” を壊すってどういうこと?😵💫
- ACL=翻訳&防波堤(外→内をキレイにする壁)🧱
-
ハンズオン:ダメ例コードを眺めて「どこが腐ってる?」探しゲーム👀
-
ミニ課題:あなたの経験で「外部の都合でつらかった話」を1個メモ📝
-
AI活用:AIに「このコードの腐敗ポイントを箇条書きで」って聞く🤖
第2章:教材の全体地図&題材システム紹介(ミニEC/フリマ)🗺️🛒
-
ねらい:ゴールが見えて安心する😌
-
学ぶこと
- 内側:注文(Order)/支払い(Payment)/会員(Member)
- 外側:決済API(クセあり)+レガシー会員API(古い)
-
ハンズオン:プロジェクト雛形を作成(Visual Studio)🧰
- 余裕があれば VS Code手順も小さく添える📌
-
ミニ課題:フォルダ構成の意図を1行で説明✍️
-
AI活用:AIに「フォルダ構成案を3パターン」出させる(採用は自分で)🤖
第3章:関心の分離(SoC)だけ先に押さえる(ACLの前提)🚪🧠
-
ねらい:「混ぜない」感覚を先に作る
-
学ぶこと
- UI/アプリ/ドメイン/外部I/Oを混ぜると壊れる⚡
- ACLは “外部I/O側のガード役” になりやすい
-
ハンズオン:層の線引き図を作る(紙でもOK)✍️
-
ミニ課題:「内側に入れていいもの/ダメなもの」仕分け表🧾
-
AI活用:AIに図の説明文を作らせる(レビューは自分)🤖
第4章:超入門DDD:ドメインの“言葉”を決める(ユビキタス言語っぽく)🗣️📘
-
ねらい:内側の言葉を外側に汚されない土台を作る
-
学ぶこと
- Order / Money / PaymentStatus など、意味がズレやすい単語に注意👀
-
ハンズオン:用語辞書(ミニ)を作る📒
-
ミニ課題:曖昧語を3つ挙げて「自分の定義」を書く✍️
-
AI活用:AIに「曖昧になりやすい語」を洗い出させる🤖
第5章:ValueObject入門(住所・金額・期間を“型”で守る)🧱💰
-
ねらい:外部の変な値が入っても壊れにくい“型の盾”を作る
-
学ぶこと
- 値オブジェクトの考え方(同一性より“値”)
- バリデーションを入口に寄せる🔒
-
ハンズオン:
Money、Emailみたいな小VOを作る -
ミニ課題:VOにしたい項目を3つ提案📝
-
AI活用:VOの雛形生成はAIに、ルールは自分が決める🤖✍️
第6章:不変条件(Invariants)と “無効状態を作らない” ルール👮♀️🧯
-
ねらい:外部の欠損/不正が入っても、内側は壊れないようにする
-
学ぶこと
- 生成・更新でチェックして「壊れた状態」を禁止🚫
-
ハンズオン:コンストラクタ/Factoryで検証パターン
-
ミニ課題:「絶対守りたいルール」2つ書く
-
AI活用:テストケース案をAIに列挙させる🤖✅
第7章:境界の引き方(内側/外側)と依存関係ルール⬅️🧭
-
ねらい:「どこに置くか」で迷わなくする
-
学ぶこと
- ドメインは外部を参照しないの基本
- 依存の向きの統制(内向き)
-
ハンズオン:プロジェクト参照ルールを決める(簡単な図でOK)🧩
-
ミニ課題:「禁止依存」リスト作成📝
-
AI活用:AIに“依存ルールの文章化”を手伝わせる🤖
第8章:ACLの基本形(Client / Translator / Facade)を覚える🧰🧱
-
ねらい:ACLを“いつも同じ型”で作れるようにする
-
学ぶこと
- 外部DTO → Translator → ドメイン型
- ドメイン側は “自分用のインターフェース” だけ見る👀
-
ハンズオン:3点セットの空実装を作る
-
ミニ課題:各パーツの責務を1行で説明
-
AI活用:命名案(Client名/Translator名)をAIから複数出してもらう🤖
第9章:DIP/DI入門(外部サービスを差し替え可能に)🔌🔁
-
ねらい:テストできる&外部変更に強くする
-
学ぶこと
- ドメインに
IPaymentGateway的な 抽象を置く - 実装は外側(Infrastructure)で差す
- ドメインに
-
ハンズオン:コンストラクタ注入で組む(DIコンテナの基本も軽く)
-
ミニ課題:差し替えたい依存を2つ挙げる
-
AI活用:DI登録コードの下書き生成はAIで時短🤖⚡
第10章:外部DTOと内部モデルを分ける(“DTO直通”禁止🙅♀️)📦📦
-
ねらい:腐敗の入口を閉じる
-
学ぶこと
- 外部JSON用DTOは外側に隔離
- 内側はドメイン型(VO/Entity)中心
-
ハンズオン:DTOフォルダを外側に置き、参照できないようにする
-
ミニ課題:DTOに入れたくない情報を列挙📝
-
AI活用:DTOクラス生成(プロパティ)だけAIにやらせる🤖
第11章:変換① “形の変換”(命名・構造・ネスト)🧩🔁
-
ねらい:まず「形」を揃える(意味の前に)
-
学ぶこと
- snake_case ↔ PascalCase
- ネスト構造の読み替え
-
ハンズオン:Translatorで「形」だけ変換する
-
ミニ課題:入力DTO→出力モデルの対応表を作る🧾
-
AI活用:マッピング表の叩き台をAIに作らせる🤖
第12章:変換② “意味の変換”(単位・通貨・時刻)💰⏰🔁
-
ねらい:ここからがACLの本番✨
-
学ぶこと
- cents→円、UTC文字列→
DateTimeOffsetなど - “意味がズレる”ポイントを見抜く目👀
- cents→円、UTC文字列→
-
ハンズオン:
Money/TimeStampに正規化 -
ミニ課題:意味変換が必要な項目を5つ探す🔎
-
AI活用:境界値テスト案をAIに出させる🤖✅
第13章:変換③ enum・未知値・仕様の穴(安全第一)🧯🧪
-
ねらい:「知らない値が来たら死ぬ」を卒業する
-
学ぶこと
- 外部enumが増えたり、謎値が来たりする現実😇
- 未知値はどう扱う?(エラー/Unknown/保留)
-
ハンズオン:安全なenum変換(Unknown設計)
-
ミニ課題:Unknown方針を文章で書く(運用も含めて)📝
-
AI活用:未知値パターンの洗い出しにAIを使う🤖
第14章:欠損・null・不正値① 方針の決め方(弾く?丸める?)🧹📏
-
ねらい:判断基準を作る(ここが迷子ポイント)
-
学ぶこと
- どこで守る?(ACL / ドメイン / UI)
- “入力は疑う、内側は信じる”の境界感覚
-
ハンズオン:判断フローチャート作成(簡単でOK)🗺️
-
ミニ課題:項目ごとに方針を書く(弾く/補正/既定)
-
AI活用:フローチャートの文章化をAIにやらせる🤖
第15章:欠損・null・不正値② 実装演習(変換+検証+エラー化)🧪🚧
-
ねらい:ACLの“防波堤”を手で作れるようにする
-
学ぶこと
- 変換時に弾く
- ドメインエラーに落とす
-
ハンズオン:意地悪データを流して防御できるか確認😈
-
ミニ課題:悪い入力10個セットを作る(テストデータ)
-
AI活用:悪い入力パターン生成にAIを使う🤖😈
第16章:エラー設計① 分類(ドメイン/インフラ/一時的/恒久的)😇📚
-
ねらい:エラーでコードがぐちゃぐちゃになるのを防ぐ
-
学ぶこと
- ドメインエラー:業務ルール違反
- インフラエラー:通信/タイムアウト/外部障害
- リトライ可否の考え方🔁
-
ハンズオン:エラー分類表を作る🧾
-
ミニ課題:例題で「これはどの分類?」クイズ
-
AI活用:分類候補をAIに出させて、自分で最終判断🤖✅
第17章:エラー設計② 境界で変換する(外→内の翻訳)🔁🧱
-
ねらい:外部のエラー形式を内側に持ち込まない
-
学ぶこと
- 外部エラーDTO → 自前エラーへ
- UIに返す形はさらに別(必要なら)
-
ハンズオン:外部のエラー応答を受けて整形する
-
ミニ課題:エラーコード設計(小さくでOK)
-
AI活用:エラー文言のユーザー向け表現案をAIに作らせる🤖💬
第18章:実装ハンズオン① 外部API統合(HttpClient + デバッグ)🌐🪲
-
ねらい:外部呼び出しの基本を固める(迷子防止)
-
学ぶこと
- HttpClientの使いどころ
- 例外・タイムアウト時の見方
- Visual Studioデバッグ(ブレークポイント、ウォッチ)🔍
-
ハンズオン:外部決済API(モックでもOK)を叩く
-
ミニ課題:成功/失敗/タイムアウトの3パターン確認
-
AI活用:ログ出力の雛形、例外メッセージ整形はAIに補助してもらう🤖
第19章:実装ハンズオン② レガシー統合(“意味のズレ”を翻訳する)🧓📼
-
ねらい:ACLが一番輝く相手(レガシー)で勝つ✨
-
学ぶこと
- 命名が古い、単位が違う、欠損が多い…をACLで吸収
- 腐敗防止層=“翻訳者”の仕事🧑🏫
-
ハンズオン:レガシー会員API → Memberドメインへ変換
-
ミニ課題:「翻訳ルール集(ミニ仕様書)」を書く📘
-
AI活用:翻訳ルールの一覧化・チェックリスト化にAIを使う🤖📝
第20章:テスト&運用まとめ(変換テスト・契約テスト・観測)+最終チェックリスト🎁✅📈
-
ねらい:作って終わりじゃなく “壊れない仕組み” にする
-
学ぶこと
- 変換テスト:Translatorは最重要(コスパ最強)💪
- 契約テスト入門:外部の変更を早期検知🤝
- 観測:ログ・相関IDの入れ方(最低限でOK)👀
-
ハンズオン
- Translatorの単体テスト作成
- 契約テスト(超ライト)
- ログに相関IDを通す
-
ミニ課題:ACL導入チェックリストで自己採点💯
-
AI活用
- テスト雛形生成、テストケース増量はAI
- “仕様の最終判断” は人間(ここ超大事)🧠✨
章の流れ(気持ち)🌸
- 1〜4章:イメージ&言葉を整える🙂
- 5〜7章:内側を守れる設計の土台🛡️
- 8〜13章:ACLの型+変換3連発(形→意味→未知値)🔁
- 14〜17章:欠損とエラー(実戦で一番効く)🧯
- 18〜20章:統合→レガシー→テスト運用で完成🎉