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

契約(Contract)設計(互換性・バージョニング)30章アウトライン🌸✨

第1章:契約ってなに?🤝✨

  • ねらい:契約=「利用者に約束すること」をつかむ
  • 学ぶ:契約の例(関数API/HTTP API/JSON/イベント)
  • ミニ演習:自分の過去コードから「これは契約っぽい」を3つ探す🔍
  • AI活用「この機能の“利用者との約束”を箇条書きにして」 🧠🤖

第2章:互換性が壊れると何が起きる?😱💥

  • ねらい:破壊変更の怖さを“具体例”で理解
  • 学ぶ:壊れ方(ビルド落ち/実行時エラー/挙動が変わる)
  • ミニ演習:変更1つでどんな人が困るか想像メモ📝
  • AI活用「この変更で困る利用者を3タイプ想像して」 👥🤖

第3章:契約の種類を整理しよう🗂️🌈

  • ねらい:何に契約があるか“分類できる”ように
  • 学ぶ:コード契約/データ契約/運用契約(サポート期間など)
  • ミニ演習:自作アプリを契約マップにする🗺️
  • AI活用「このアプリに必要な契約一覧を作って」 🧾🤖

第4章:TypeScriptの型は契約の入り口🟦🧩

  • ねらい:型=契約(でも万能じゃない)を理解
  • 学ぶ:型で守れること/守れないこと(実行時)
  • ミニ演習:型だけで防げない例を1つ書く✍️
  • AI活用「この型の弱点(実行時)を教えて」 ⚠️🤖

第5章:公開API面(Public Surface)を決める🎭🚪

  • ねらい:どこを“約束”として公開するか決める
  • 学ぶ:Public/Private、internalの考え方
  • ミニ演習:公開関数を3つだけ選ぶ(他は隠す)🙈
  • AI活用「公開すべき最小APIを提案して」 ✨🤖

第6章:“互換性”の種類:後方互換・前方互換🔁🧠

  • ねらい:互換の言葉で会話できるように
  • 学ぶ:Backward/Forward、互換の方向の勘所
  • ミニ演習:変更例を「どっち互換?」分類📌
  • AI活用「これは後方互換?理由も」 🧑‍🏫🤖

第7章:SemVer(X.Y.Z)をやさしく理解する🔢✨

  • ねらい:MAJOR/MINOR/PATCHの判断ができる
  • 学ぶ:破壊変更=MAJOR、追加=MINOR、修正=PATCH
  • ミニ演習:10個の変更をバージョン判定クイズ化🎮
  • AI活用「変更例を10個出して、答えもつけて」 🧩🤖

第8章:“破壊変更”の定義を自分の教材に固定する📏🧾

  • ねらい:何を破壊と呼ぶかブレなくする
  • 学ぶ:公開API、戻り値、例外、データ形式の変更は危険
  • ミニ演習:自分用「破壊変更リスト」作成📝
  • AI活用「この変更は破壊?ポリシー文章にして」 📜🤖

第9章:互換ポリシーを文章にする📜🖊️

  • ねらい:契約を“運用”に落とす
  • 学ぶ:サポート期間/非推奨期間/移行ガイドの方針
  • ミニ演習:A4 1枚のポリシー案を書く🧡
  • AI活用「やさしい口調で短く整えて」 😊🤖

第10章:後方互換の基本パターン集🧰🌟

  • ねらい:互換を保つ“型”を覚える
  • 学ぶ:追加はOK/削除はNG寄り/意味変更は危険
  • ミニ演習:安全な追加案・危険な変更案を作る⚖️
  • AI活用「互換を守る書き方に直して」 🔧🤖

第11章:段階的に変える(移行設計)🪜⏳

  • ねらい:一気に変えない設計ができる
  • 学ぶ:旧新併存、フラグ、段階リリース
  • ミニ演習:Step1〜Step4の移行計画を書く🗓️
  • AI活用「段階移行プランを4ステップで」 🧭🤖

第12章:Deprecation(非推奨)を上手に出す🚧📣

  • ねらい:利用者に優しい“廃止の礼儀”
  • 学ぶ:告知→移行案内→期限→削除
  • ミニ演習:非推奨メッセージ例を作る🧡
  • AI活用「女子大生向けにやさしく注意書きして」 🌸🤖

第13章:npmパッケージ契約①:公開API面の設計📦🚪

  • ねらい:ライブラリの“入口”を小さく保つ
  • 学ぶ:公開入口を絞る、内部を自由に変えられるようにする
  • ミニ演習:公開関数を3つに制限する案を作る✂️
  • AI活用「公開面を最小化する設計案を」 🧠🤖

第14章:npmパッケージ契約②:配布の契約(入口・型・exports)📦🧾

  • ねらい:配布で壊しがちなポイントを知る
  • 学ぶ:エントリポイント、型の出し方、設定ミスの事故例
  • ミニ演習:配布チェックリストを作る✅
  • AI活用「この配布構成の事故ポイントを列挙して」 🧯🤖

第15章:依存の向きと契約(崩れない土台)🧱🧭

  • ねらい:契約が守られる構造をつくる
  • 学ぶ:中心(方針)を外(詳細)から守る考え方
  • ミニ演習:依存が逆向きになってる箇所を探す🔍
  • AI活用「依存を内側に寄せるリファクタ案」 🔁🤖

第16章:エラーも契約①:エラーの分類と境界😵‍💫➡️🙂

  • ねらい:エラーを仕様として扱えるように
  • 学ぶ:ドメインエラー/入力エラー/インフラエラー
  • ミニ演習:エラー一覧(3分類)を作る📛
  • AI活用「この機能のエラーを分類して」 🗂️🤖

第17章:エラーも契約②:利用者に優しい返し方🎁✨

  • ねらい:呼び出し側が直しやすいエラーにする
  • 学ぶ:メッセージ、コード、原因、対処のガイド
  • ミニ演習:悪いエラー→良いエラーに書き換え✍️
  • AI活用「直し方が分かるエラー文にして」 🧁🤖

第18章:データ契約①:JSONの約束(形・必須・任意)🧾🤝

  • ねらい:データの契約を言語化できる
  • 学ぶ:必須/任意、nullable、デフォルト値
  • ミニ演習:JSONの仕様を“文章”で書く📜
  • AI活用「このJSON仕様を読みやすく整理して」 ✨🤖

第19章:データ契約②:実行時バリデーション(型だけじゃ足りない)🚫✅

  • ねらい:実行時に守る必要を体感
  • 学ぶ:境界でチェック、内部は信頼(メリハリ)
  • ミニ演習:境界チェックの観点表を作る📋
  • AI活用「この入力で危ないケースを挙げて」 ⚠️🤖

第20章:データ進化①:安全な変更・危険な変更🧬⚖️

  • ねらい:変更の安全度を判定できる
  • 学ぶ:追加は比較的安全/削除・型変更は危険寄り
  • ミニ演習:変更パターンをOK/注意/NGで分類📊
  • AI活用「この変更の互換性リスクを評価して」 🔍🤖

第21章:データ進化②:移行(migration)と併存の設計🪜⏳

  • ねらい:古いデータも新しいデータも扱える
  • 学ぶ:変換、デフォルト補完、段階移行
  • ミニ演習:移行ステップを4段にする🗓️
  • AI活用「移行手順を利用者視点で書いて」 🧡🤖

第22章:HTTP API契約①:骨格(入力/出力/ステータス)🌐🦴

  • ねらい:API契約の最小セットを固める
  • 学ぶ:エンドポイント、リクエスト、レスポンス、ステータス
  • ミニ演習:1つのAPI仕様をテンプレで書く🧾
  • AI活用「API仕様のたたき台を作って」 🛠️🤖

第23章:HTTP API契約②:認証とエラーの契約🔐📣

  • ねらい:実運用で困らない設計にする
  • 学ぶ:認証失敗・権限不足・入力ミスの統一
  • ミニ演習:エラー形式テンプレを作る📛
  • AI活用「エラー形式を統一する案を」 ✅🤖

第24章:APIバージョニング①:戦略の選び方(URL/ヘッダ等)🧭🔁

  • ねらい:自分の用途に合う方式が選べる
  • 学ぶ:方式のメリデメ、移行のしやすさ
  • ミニ演習:自分のアプリに最適な方式を選び理由を書く✍️
  • AI活用「この条件ならどの方式が良い?」 🤔🤖

第25章:APIバージョニング②:移行の運用(旧版サポート)⏳🧡

  • ねらい:バージョン運用で炎上しない
  • 学ぶ:サポート期限、告知、メトリクス(利用率)
  • ミニ演習:廃止スケジュールを作る🗓️
  • AI活用「移行案内の文章を作って」 📣🤖

第26章:イベント契約(非同期の約束)📣⏱️

  • ねらい:イベントの契約を壊さず育てる
  • 学ぶ:イベント名、payload、バージョン、互換
  • ミニ演習:イベント仕様テンプレを作る🧾
  • AI活用「イベント名を自然な“過去形の事実”で」 🧠🤖

第27章:古いクライアントを殺さないリリース🧟‍♀️➡️🙂

  • ねらい:サーバ先行/クライアント先行でも壊れない
  • 学ぶ:段階リリース、併存、フォールバック
  • ミニ演習:時系列(Day1〜Day7)でリリース計画🗓️
  • AI活用「この順番なら安全?チェックして」 ✅🤖

第28章:互換性テスト①:観点(何が壊れやすい?)🔍🧪

  • ねらい:“どこを見るべきか”が分かる
  • 学ぶ:公開API、戻り値、例外、データ形式、意味変更
  • ミニ演習:変更→影響→テスト観点の表を作る📋
  • AI活用「この変更のテスト観点を列挙して」 🧠🤖

第29章:互換性テスト②:最小テスト構成(型+ユニット)✅🧪

  • ねらい:小さく始めて、確実に守る
  • 学ぶ:型チェックの守備範囲、ユニットテストの守備範囲
  • ミニ演習:重要な契約を3つテスト対象に選ぶ🎯
  • AI活用「この契約をテストにするとしたら?」 🧩🤖

第30章:CDC入門+CI+運用まとめ(最終章)🎓✅✨

  • ねらい:契約を“守り続ける仕組み”まで完成させる

  • 学ぶ(まとめ)

    • Consumer視点の期待(CDCの入口)🚪
    • CIで止めるチェック項目(型/テスト/互換/変更履歴)🚦
    • CHANGELOG・リリースノート・ADRで伝える📰📚
  • ミニ演習(キャップストーン)

    • 1つ小さなAPI/ライブラリを想定して
    • 契約(仕様)→互換ポリシー→移行計画→テスト観点→リリースノート を1セット作る📦🧾
  • AI活用

    • 「契約チェックリストでレビューして。改善点も」 🔍🤖
    • AI拡張は、GitHubやOpenAI系のものを“レビュー係”として使う想定でOKだよ😊✨
    • VS CodeはMicrosoftのエディタ前提で統一🎀