セマンティックバージョニング(SemVer)+互換ポリシー:16章アウトライン📘✨
(Windows+Visual Studio中心/必要ならVS CodeもOK/Copilot・Codex等のAI導入済み前提🤖💡)
第1章:バージョンは“約束”って何?🤝🔢
-
ねらい:SemVer以前に「利用者との約束」の感覚をつかむ😊
-
扱う内容
- “動くのに更新したら壊れた😇”が起きる理由
- 「互換性」=“古い使い方がそのまま動く”の意味✅
- これから学ぶゴール:壊すなら正しく壊す/壊さないなら安心して更新できる🌷
-
ミニ演習:自分の経験(or想像)で「更新事故ストーリー」を1つ作る📖
-
AIの使いどころ:AIに「更新事故あるある」を出させて、原因を分類してみる🤖🗂️
-
成果物:事故パターンメモ(後の判断基準になる)📝
第2章:SemVer超入門(MAJOR.MINOR.PATCH)🧱✨
-
ねらい:3つの数字の意味を即答できるようにする💬
-
扱う内容
- MAJOR=破壊変更💥
- MINOR=後方互換な機能追加➕
- PATCH=後方互換なバグ修正🐛
- 「後方互換」って誰視点?(利用者コード視点)👀
-
演習:10問クイズ(これ何上げ?)✅
-
AI:AIに「ひっかけ問題」も作らせて耐性UP😂
-
成果物:判断ルールの自分用1枚チートシート📄
第3章:「公開API(Public API)」を線引きしよう📣✂️
-
ねらい:どこが“約束”でどこが“内部”か決められる🎯
-
扱う内容
- public が全部公開APIとは限らない(でも基本は契約)📜
- ライブラリ/アプリ/社内共通部品で線引きが変わる🏢
- 公開APIを小さくするとMAJORが減る✨
-
演習:サンプルプロジェクトの「公開API一覧」を作る📝
-
AI:AIに「公開API候補」「internal推奨」を提案させ、理由を聞く🤖
-
成果物:公開API一覧+公開方針メモ📌
第4章:互換性の種類(ソース互換・バイナリ互換・挙動互換)🧩
-
ねらい:「壊れた」の種類を言語化できる🧠
-
扱う内容
- コンパイルできない=ソース互換アウト🧯
- 実行時に壊れる=バイナリ互換アウト💣
- 動くけど結果が違う=挙動互換アウト😵
- 初学者向けの結論:まずは“利用者コードが困るか”で考える👀
-
演習:壊れ方カード分類(どの互換性が壊れた?)🃏
-
AI:AIに利用者コードを生成させて「どの壊れ方か」確認🤖
-
成果物:互換性3分類メモ📝
第5章:PATCHの作法(バグ修正だけど注意点あるよ)🐛⚠️
-
ねらい:「PATCHでやっていいこと/ダメなこと」を理解する✅
-
扱う内容
- PATCH=後方互換なバグ修正(でも挙動が変わる時がある)😇
- “バグ修正で利用者が依存していた挙動”問題🌀
- 対応指針:影響が大きいならMINOR/MAJOR+説明を厚く📣
-
演習:ケース3つ(PATCHでOK?ダメ?)📝
-
AI:AIに「利用者が困る文章」を書かせ、影響説明の練習✍️
-
成果物:PATCH判断チェックリスト✅
第6章:MINORの作法(安心して増やす方法)➕😊
-
ねらい:後方互換な追加のパターンを知る✨
-
扱う内容
- 追加OKの代表:メソッド追加、オーバーロード追加、型追加など(ただし注意あり)⚠️
- 「既存の意味を変えない」増やし方🌱
- “名前は同じでも意味が変わる”は危険😵
-
演習:安全な追加・危険な追加を判定🧪
-
AI:AIに「安全な追加案」を複数出させて比較する🤖
-
成果物:MINORの安全パターン集📌
第7章:MAJORの作法(壊すなら“優しく壊す”💥🌷)
-
ねらい:破壊変更を計画的にやる流れを学ぶ🪜
-
扱う内容
- 破壊変更の代表:削除/シグネチャ変更/意味変更💥
- MAJORを出す前にやること:移行手順、代替API、告知📢
- “壊した理由”を言えるようにする(利用者視点)👀
-
演習:MAJOR変更の「移行ガイド構成」を作る📄
-
AI:AIに移行ガイドの下書きを作らせ、読みやすく直す✍️
-
成果物:移行ガイド雛形📄✨
第8章:C#の互換性地雷(超頻出6本だけ)💣6️⃣
-
ねらい:詰め込みすぎ回避!まず“最頻出”だけ覚える🎯
-
扱う内容(厳選6)
- publicメンバー削除
- 引数・戻り値変更
- 例外の種類/タイミング変更
- null許容の変更(受け入れ/返す)
- オーバーロード追加の罠(呼ばれる先が変わる等)
- 既定値・挙動の微変更の怖さ😇
-
演習:各地雷の「利用者コードが壊れる例」を読む👓
-
AI:AIに壊れる利用者コードを生成させる→自分で原因説明🙂
-
成果物:地雷6本チートシート📄
第9章:非推奨(Deprecated)の正しい進め方🧡⚠️
-
ねらい:いきなり壊さず段階的に移行できるようにする🪜
-
扱う内容
- 非推奨→移行期間→削除(MAJOR)という王道ルート🌷
- C#の Obsolete 属性の考え方(警告メッセージ設計)⚠️
- “いつ消えるか”を決める=互換ポリシーに直結🕰️
-
演習:非推奨メッセージ文を3種類作る(短い/丁寧/ガチ警告)📝
-
AI:AIに「非推奨メッセージ案」を出させて比較🤖
-
成果物:非推奨テンプレ集📌
第10章:Changelog/リリースノート(説明できる人が強い📰✨)
-
ねらい:更新内容を“利用者が助かる形”で書けるようにする✍️
-
扱う内容
- 書くべき要素:変更点/影響/移行手順/互換性の扱い🚦
- MAJOR/MINOR/PATCHで書き方を変える🧠
- 破壊変更は目立たせる(最上部に出す等)🚨
-
演習:技術メモ→利用者向けリリースノートに変換🪄
-
AI:AIに下書き→自分で“影響”が伝わるかチェック✅
-
成果物:Changelog雛形+例文セット📄
第11章:NuGetとバージョン(配る側の基本)📦🚀
-
ねらい:ライブラリとして配布する時の“最低限の型”を知る🙂
-
扱う内容
- Windows+Visual Studioでのパッケージ作成の流れイメージ🛠️
- バージョン番号をどこに置く?(プロジェクト設定の考え方)🔧
- “配布物”は契約:公開APIとドキュメントがセット📣📄
-
演習:サンプルライブラリを「v1.0.0として出す体」準備🧪
-
AI:AIに「パッケージ説明文」や「README」下書きを書かせる🤖
-
成果物:配布の最低セット(README/Changelog/Version方針)📦✨
第12章:使う側のバージョン管理(依存更新で死なない)😇🔧
-
ねらい:利用者として安全に更新できるようになる🛡️
-
扱う内容
- バージョン固定と更新の考え方(“いつ上げる?”)🕰️
- 依存更新の基本戦略:小さく頻繁に/まとめてドカンは怖い😱
- “更新前に見るもの”:Changelog・破壊変更・移行ガイド👀
-
演習:更新手順のチェックリスト作成✅
-
AI:AIに「更新時の確認項目」をレビューさせる🤖
-
成果物:依存更新チェックリスト📌
第13章:推移依存(transitive)と衝突の怖さ🕸️💥
-
ねらい:“自分が直接入れてないのに壊れる”を理解する😵
-
扱う内容
- 推移依存とは何か(依存の依存)🧩
- バージョン衝突の雰囲気(ズレが起きると何が困る?)💣
- 対策の考え方:依存を減らす/揃える/更新を計画する📐
-
演習:簡単な依存ツリーを書いて「どこが危ない?」を指摘👆
-
AI:AIに「衝突シナリオ」を作らせて想像力強化😂
-
成果物:依存ツリー可視化メモ📝
第14章:互換性を守るテスト戦略(最低ラインでOK)🧪🛡️
-
ねらい:互換性の事故を“仕組み”で減らす🙂
-
扱う内容
- 公開APIに対するテストの置き方(薄くても効く)🎯
- 破壊変更が入りそうな場所の検知(重点テスト)🔍
- “利用者コード風テスト”という発想👀
-
演習:公開APIのスモークテストを作る🧪
-
AI:AIに「利用者っぽいテストケース」を提案させる🤖
-
成果物:互換性テストの最小セット✅
第15章:互換ポリシーを書こう(SemVerを運用に落とす)📘🖊️
-
ねらい:「番号ルール」から「チームのルール」へ格上げする✨
-
扱う内容(ポリシー必須項目)
- 公開APIの定義📣
- MAJOR/MINOR/PATCHの判断基準🔢
- 非推奨のルール(期間・告知・削除タイミング)⚠️🕰️
- サポート方針(どのMAJORを支える?)🎯
- 例外ルール(緊急修正、セキュリティ等)🚑
-
演習:A4 1枚の互換ポリシーを完成させる📄✨
-
AI:AIにテンプレ生成→自分の事情に合わせて削る(削るのが大事😺✂️)
-
成果物:互換ポリシー(公開できる文章)📘
第16章:卒業制作(小さなライブラリを“3回リリース”してみる)🎓🚀
-
ねらい:SemVer+互換ポリシーを“体験”で覚える💪
-
やること(段階的)
- v1.0.0:公開APIを決めて出す📦
- v1.0.1:PATCH(小さなバグ修正+リリースノート)🐛📰
- v1.1.0:MINOR(後方互換な追加+Changelog)➕✨
- v2.0.0:MAJOR(破壊変更+非推奨経由or移行ガイド)💥📄
-
AI:AIを“編集者”として使う(文章・例・レビュー観点)🤖🧑🏫
-
成果物(全部セット)
- パッケージ(体)📦
- Changelog📰
- 移行ガイド📄
- 互換ポリシー📘
- リリース前チェックリスト✅
付録(おまけ扱いにして詰め込み回避😺📎)
- C#地雷の“残り全部”(頻出以外)💣
- よくある質問(「これMINORでいい?」系)🙋♀️
- ポリシーのテンプレ集(短い版/丁寧版)📄✨
- AIプロンプト例まとめ🤖🧠