第1章 この教材でできるようになること🎯✨
(不変条件を「型+境界」で守る入門だよ〜🛡️💎)
1) この教材を終えたら、こうなれるよ🙂🌸
✅ 不変条件を“説明できる”ようになる🗣️✨
「不変条件ってなに?」に対して、こう言えるようになります👇
- 絶対に壊れちゃダメなルールのことだよ💎
- それを どこで守るか(境界) と どう守るか(型) が大事だよ🛡️
✅ 「無効な状態を作れない」感覚がつかめる💎😆
ありがちな事故👇
stringとstringが混ざってバグる💥- ifチェックが散らかって漏れる😱
- “たまたま通っちゃう”入力が混入する🌀
この教材では、逆にこうします👇
- 入口で検証して、ドメインに入ったら信じる🚪✅➡️🏰
- 意味のある型(値オブジェクト)にして混ぜない🏷️🔒
- 更新は「意図のある操作」でだけ許す🧱✨
✅ ざっくり完成イメージが頭に入る👀✨

この流れを、毎回ぶれずに作れるようにします👇
外から来る入力(unknown) 🌍
↓ ① 境界でチェックする(実行時バリデーション)🧪
DTO(外側の形)📦
↓ ② 正規化して整える(trimとか)🧼
↓ ③ ドメイン型に変換(VO / Entity)💎
ドメイン(中核)🏰 ← 中に入ったら“基本は信じる”
↓ ④ 更新はメソッドで(意図ある操作だけ)🔁✨
2) まず最初に覚える「超重要フレーズ」3つ🧠💡
① 「境界で検証して変換する」🚧✅

境界 = 外部入力が入ってくる場所だよ👇
- UIフォーム🖊️
- APIリクエスト🌐
- DB読み込み🗄️
- 外部APIレスポンス📡
境界は “信用しない” が基本😤(やさしく言うと「念のため」ね🙂)
② 「中(ドメイン)は、なるべく信じる」🏰✨
中に入ってから毎回 if で確認してると…
- チェックが散って漏れる🌀
- 直すたびに怖い😵💫
- “同じチェック”が増殖する🧟♀️
だから、入口で保証して中はスッキリが勝ち筋🏆✨
③ 「更新は setter より “意図のある操作”」🧱💖
setStatus("Paid") みたいに自由に書き換えられると危ない😱
だから将来的にこうする👇
markPaid()💳ship()📦 みたいに、意味がハッキリした操作に寄せていくよ🙂✨
3) 1分でわかるミニ例(会員登録)👩💻🌷
「メールアドレス」って、ただの string に見えるけど…
- 空文字はダメ🙅♀️
- 形式が変なのもダメ🙅♀️
- 前後空白は吸収したい🧼
- 小文字に統一したい(場合による)🔤
これを “境界で” 受けて “型にして” 中へ入れる✨
// ざっくり雰囲気(第1章なのでイメージ優先だよ🙂)
// 境界:外から来た入力
function register(req: unknown) {
// ① 実行時に検証(形をチェック)🧪
const dto = parseRegisterRequest(req); // { email: string, ... }
// ② 正規化&③ ドメイン型へ変換 💎
const email = Email.create(dto.email); // 失敗したらエラー(第23章でResult化もやるよ✨)
// ④ ドメインの操作へ🏰
return User.register(email);
}
この「一本線」を作れるようになるのが、この教材のゴールのひとつ🧵✨
4) AI(Copilot / Codexなど)と一緒に進めるコツ🤖🫶
AIは便利だけど、**守るべきルール(不変条件)**まで勝手に守ってくれるとは限らないよ〜😅 だから、この教材ではAIをこう使うのがおすすめ👇
✅ AIにやらせると強いこと💪✨
- 不変条件の候補をたくさん出させる📝
- 壊れる入力パターンを列挙させる🧨
- テスト観点を増やさせる🧪
- エラーメッセージを初心者向けに整えさせる🫶
⚠️ AIに渡さない方がいいもの🔒
- APIキーやトークン🎫
- 個人情報(本物のメール・住所・氏名)🙅♀️ 最近もAI絡みの脆弱性が話題になって、パッチ対応された例があるので、**「機密は貼らない」**は鉄板ルールにしよ〜!🛡️ (Windows Central)
すぐ使える質問テンプレ(コピペOK)📋✨
- 「この機能の不変条件を10個、初心者向けに列挙して🙂」
- 「境界(UI/API/DB/外部API)ごとに、壊れる入力例を出して🧨」
- 「このルールが破れる“最短ルート”を3つ教えて😈」
- 「成功/失敗/境界値のテスト観点を出して🧪」
5) 2026年1月時点の“今どきメモ”🗓️✨(ちゃんと調べたよ🔍)
-
TypeScriptは 5.9 のリリースノートが更新されていて、言語サービス(エディタ体験)や型推論まわりの改善が入ってるよ🧠✨ (typescriptlang.org)
-
VS Codeは v1.108(December 2025) が 2026-01-08 リリースとして案内されてるよ🧑💻✨ (Visual Studio Code)
- さらに最近だと、AI絡みで「Agent Skills」みたいな話題も出てる(実験的)🧪🤖 (Publickey)
-
OpenAIの Codex IDE extension は「VS Codeで横に並べて使う / タスクを任せる」方向の説明があるよ🤝✨ (OpenAI Developers)
(この教材は“特定ツールの機能紹介”が主役じゃないけど、今の開発はAI前提で設計を守るのが大事、っていう土台にするね🙂🛡️)
6) ミニ課題🎲😊(今日やるのはこれだけでOK!)
✅ 自分の題材(アプリ/機能)を1つ決めよう🍰✨
おすすめは小さめが勝ち🏆(例👇)
- 会員登録✉️
- 注文📦
- タスク管理✅
- 家計簿💰
- 在庫管理📦
✅ その題材で「絶対に壊れちゃダメなルール」を3つだけ書く📝✨
例(注文なら)
- 数量は1以上📦
- 合計金額はマイナス不可💰
- 支払い済みの注文はキャンセル不可💳🚫
書けたらもう合格〜!🎉😊 次の章から、これを増やして「型+境界」に落としていくよ🛡️💎
次章予告👀✨
第2章では、不変条件をもっとやさしく整理して、**「どのルールが不変条件なの?」**を迷わなくするよ🙂💎