エラーモデリング(例外境界 / Result型 / 分類) 25章アウトライン📚✨(各章:ねらい / 内容 / ミニ演習 / AI活用)
最終的に、受講者がこれを作れる状態にするよ😊
- ✅ エラー分類表(ドメイン / インフラ / バグ)📋
- ✅ エラーカタログ(命名・コード・表示文言)🏷️
- ✅ Result型で「想定内の失敗」を扱える🎁
- ✅ 例外境界で例外をキャッチして変換できる🚪
- ✅ APIは ProblemDetails(RFC9457) で返せる🧾
- ✅ ログ方針+相関ID で追える🔎🧵
- ✅ リトライ/タイムアウト/キャンセルの基本判断ができる⏳🔁🛑
第1章:エラーモデリングって何?なぜ必要?🤔🌱
- ねらい:エラーを「仕様」として扱う感覚をつかむ
- 内容:例外地獄あるある/“怖くない設計”の入口
- 演習:失敗例(握りつぶし・原因不明)を見つけて言語化📝
- AI活用:失敗例のパターンを箇条書きにしてもらう🤖
第2章:2026環境の準備(Windows + VS)🪟🛠️
- ねらい:すぐ試せる土台を作る
- 内容:Visual Studio 2026 / .NET 10 / C# 14 の想定、AI拡張の使い方ルール (Microsoft Learn)
- 演習:Consoleアプリ+最小のWeb APIどっちも作って動かす🔧
- AI活用:Copilotに「雛形生成」→自分で読み解く👀
第3章:例外の基礎復習(C#)🧯
- ねらい:例外の仕組みを最低限理解
- 内容:try/catch/finally/stack traceの意味
- 演習:わざと例外を起こして、どこから来たか追う🔍
- AI活用:「この例外の原因候補は?」と質問テンプレ作る🧠
第4章:例外の“やっちゃダメ集”🙅♀️💥
- ねらい:事故りやすい書き方を避ける
- 内容:握りつぶし/広すぎcatch/情報欠落throw
- 演習:悪い例を“改善案”に直す✍️
- AI活用:リファクタ案を出してもらい、理由を自分で説明🙂
第5章:「想定内の失敗」と「想定外の異常」を分ける🚦
- ねらい:ここが全ての出発点!
- 内容:入力ミス=想定内/不変条件違反=想定外 など
- 演習:例を20個分類(想定内/想定外)📌
- AI活用:分類の迷いどころを相談して判断軸を固める🤝
第6章:エラー分類の全体像(3分類)🧩
- ねらい:迷ったら戻る“地図”を持つ
- 内容:ドメイン/インフラ/バグ(不変条件違反)
- 演習:自分の作ったアプリ想定で分類表の雛形を作成📋
- AI活用:「この失敗はどれ?」を会話で訓練🤖
第7章:ドメインエラー入門(業務ルール違反)💗
- ねらい:ユーザーに優しい失敗を設計できる
- 内容:例)在庫不足、期限切れ、予算超え
- 演習:ドメインエラーを10個作って命名する🏷️
- AI活用:命名案を10個出してもらい“分かりやすい”を選ぶ✨
第8章:インフラエラー入門(DB/ネット/外部API)🌩️
- ねらい:運用で起きる失敗を怖がらない
- 内容:一時的(Transient)/ 恒久的(Permanent)という感覚
- 演習:リトライしていい/だめ を判断して表にする🔁
- AI活用:代表的な失敗パターンの網羅チェック✅
第9章:バグ(不変条件違反)とFail Fast⚡🧱
- ねらい:“ここに来たらおかしい”を明確にする
- 内容:例外の役割(バグを早く発見)/ユーザー表示とログの分離
- 演習:「不変条件」を3つ決めて“破ったらどうする?”を書く📝
- AI活用:不変条件の候補を洗い出してもらう🔎
第10章:例外境界(Exception Boundary)ってなに?🚪
- ねらい:例外をどこまで通すか決められる
- 内容:内側(ドメイン)を守る/外側(UI/API)でまとめて処理
- 演習:層の図を描いて「境界」を線で引く🖊️
- AI活用:あなたの構造案にツッコミ役をさせる😆
第11章:境界の実例①(アプリ層→ドメイン→インフラ)🏗️
- ねらい:境界の置き場所を体で覚える
- 内容:Repository/Clientなど“外部I/O”を端に押し出す
- 演習:インフラ呼び出しを1枚アダプタに隔離する🧱
- AI活用:差し替え(fake)案を出してもらう🧪
第12章:境界の実例②(例外→分類→Resultへ変換)🔁🧯
- ねらい:例外を“握りつぶさず”変換できる
- 内容:例外を分類してインフラエラーとして返す方針
- 演習:catchした例外を「再試行可/不可」まで分類🚦
- AI活用:例外メッセージの要約とログ情報案を作らせる📜
第13章:エラーカタログを作ろう(一覧で管理)📚🏷️
- ねらい:エラーを“散らさない”
- 内容:エラーコード/表示文言/開発者向け詳細/推奨アクション
- 演習:Excel/Markdownで「エラー台帳」作成📋
- AI活用:抜け漏れチェック担当にする✅
第14章:エラー型の実装(recordで表す)🧷✨
- ねらい:ドメインエラーを型として表現できる
- 内容:
recordを使う理由(不変・比較しやすい・テストしやすい) - 演習:エラー型を3種類作ってswitchで分岐🔀
- AI活用:型名・フィールド名の改善提案をもらう🧠
第15章:Result型の考え方(成功/失敗の箱)🎁✅❌
- ねらい:想定内の失敗を戻り値で扱う感覚
- 内容:例外に頼らない設計が読みやすくなる場面
- 演習:入力チェックを例外→Resultへ置き換える🔁
- AI活用:「例外が要る/要らない」を判断させて比較する⚖️
第16章:Resultを“最小構成”で作る🧰
- ねらい:仕組みが理解できる(ライブラリ丸投げしない)
- 内容:
IsSuccess/Value/Errorの最小セット - 演習:Resultのユニットテストを少し書く🧪
- AI活用:テストケースの候補出しに使う🧑🏫🤖
第17章:Resultの中身設計(どの情報を持たせる?)🧾🧠
- ねらい:運用・UXにつながる情報設計
- 内容:code/message/detail/retryable/action みたいな設計
- 演習:同じエラーでも「表示用」「ログ用」を分ける設計を書く📝
- AI活用:文言の“やさしい言い換え”を出してもらう💬
第18章:Resultの扱い方(switch/Matchの感覚)🔀✨
- ねらい:呼び出し側が読みやすくなる
- 内容:成功だけ先へ/失敗はその場で返す
- 演習:Resultを受け取ってUI表示メッセージを決める🪞
- AI活用:分岐の整理(重複削減)案をもらう🧹
第19章:Resultの伝播(つなぐ・早期return)⛓️🛑
- ねらい:“失敗したら先に進まない”を自然に書ける
- 内容:ネスト地獄を避ける書き方の型
- 演習:3ステップ処理(検証→保存→通知)をResultでつなぐ🧩
- AI活用:読みやすさレビュー役をさせる👀
第20章:インフラで例外が出たときの方針(変換ルール)🧯➡️🎁
- ねらい:I/O層の例外を“仕様化”して上に渡す
- 内容:例外→インフラエラーResult/ログの粒度
- 演習:DB/HTTP失敗を「ユーザー表示」「ログ」へ分配する🧠
- AI活用:例外種別の代表例を列挙させて漏れ確認✅
第21章:APIエラー設計① HTTPステータスの決め方🚦🌐
- ねらい:APIの失敗を仕様として揃える
- 内容:400/404/409/500 などの基本方針
- 演習:エラーカタログの各項目にステータスを割り当てる📌
- AI活用:割り当て理由の文章を整えてもらう✍️
第22章:APIエラー設計② ProblemDetails(RFC 9457)🧾✨
- ねらい:クライアントが扱いやすい標準形式で返せる
- 内容:RFC 9457(RFC7807を置き換え)/拡張フィールドの考え方 (RFCエディタ)
- 演習:Result→ProblemDetails変換マップを作る🗺️
- AI活用:ProblemDetailsのフィールド案(type/title/detail等)を相談🤖
第23章:UIエラー設計(ユーザーにやさしく)🫶🎀
- ねらい:表示すべき/隠すべき情報を区別できる
- 内容:入力エラー(項目別)/インフラ障害(再試行誘導)
- 演習:同じエラーを「画面用」と「ログ用」に書き分ける📝
- AI活用:文言を“優しい日本語”に整える💬✨
第24章:ログ設計① 何を残す?(構造化ログ)🔎🧾
- ねらい:後から原因に辿りつけるログにする
- 内容:ドメインエラーは“期待通りの失敗”として記録/例外は詳細も
- 演習:ログ方針(レベル・項目・例外の扱い)を1枚にまとめる📄
- AI活用:ログ項目のチェックリストを作らせる✅
第25章:ログ設計② 相関ID+レジリエンス+ミニ総合演習🧵⏳🎓
-
ねらい:実戦っぽく“追える&耐える”を体験する
-
内容:
- 相関IDで「1リクエストを追跡」🧵
- タイムアウト/キャンセルの基本(“待ちすぎない”)⏳🛑
- リトライの基本(やっていい条件・冪等性の超入門)🔁
-
演習(ミニプロジェクト):
- 題材:推し活グッズ購入管理🛍️💖(在庫・予算・購入)
- 成果物:分類表📋→エラーカタログ🏷️→Result🎁→API ProblemDetails🧾→ログ+相関ID🔎🧵
-
AI活用:抜け漏れレビュー+テストケース候補出し🧪🤖
ちょい補足(学びやすくするコツ)🍵😊
- 章ごとに 「成果物(1枚)」 を必ず作ると、途中で迷子にならないよ📄✨
- AIは「案出し・命名・漏れチェック」に使うのが安全で強い🤝🤖 (判断の最終決定は自分がやるのが大事だよ〜🙂)
次は、もしよければこの25章に対して **「各章の所要時間」「授業の台本っぽい進め方」「演習の具体例(題材コード)」**までセットにして、教材として“そのまま使える形”に整えるよ〜😊📚✨