メインコンテンツまでスキップ

第1章 この教材でできるようになること🎯✨

(不変条件を「型+境界」で守る入門だよ〜🛡️💎)


1) この教材を終えたら、こうなれるよ🙂🌸

✅ 不変条件を“説明できる”ようになる🗣️✨

「不変条件ってなに?」に対して、こう言えるようになります👇

  • 絶対に壊れちゃダメなルールのことだよ💎
  • それを どこで守るか(境界)どう守るか(型) が大事だよ🛡️

✅ 「無効な状態を作れない」感覚がつかめる💎😆

ありがちな事故👇

  • stringstring が混ざってバグる💥
  • 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章では、不変条件をもっとやさしく整理して、**「どのルールが不変条件なの?」**を迷わなくするよ🙂💎