Skip to main content

第14章:“1章の粒度”ルール(ブレ防止)📏

定規で測る粒度

TDDって、小さく回すほど気持ちいいんだけど… 教材でも実務でも「1回の作業がデカくなる」と、急にしんどくなるのね🥲💦

だからこの章は、“ブレない粒度”の決め方をガチ固定します💪✨ (=迷いが減って、テストが回り続けるよ🌀🩷)


🎯 目的(この章でできるようになること)🎀

  • 「1章=どこまで?」を毎回同じ基準で決められる📏✨
  • 1章を 1〜3コミットに収める設計ができる🧩
  • コミットメッセージを読み物にして、あとから自分が助かる📚💕

📚 学ぶこと(超重要3点)💡

1) **1章=1ゴール(1つの“約束”)**🤝

1章で増やすのは、基本 「新しい仕様(テスト)」は1テーマだけにするのがコツ🎯 テーマが2つあると、だいたい途中でグチャる🥺


2) 小さく刻む=小さく統合できる🧷

小さく刻むと何が嬉しいの?っていうと…

  • 小さな変更はレビューしやすい👀✨(大きい塊は読むのが地獄)
  • 小さな変更はマージや統合がラク🧩
  • 小さな変更はロールバックもしやすい🔙

こういう “小ささの勝ち” は、CI/継続的デリバリー系のガイドでも強く推されてる考え方だよ📌✨ (about.gitlab.com)


3) **コミットは“履歴の文章”**📝✨

おすすめは Conventional Commits みたいな形式👇 <type>(scope): <description> の形で揃えると、履歴が読みやすくなるよ📚✨ (conventionalcommits.org)


🧪 手を動かす(この章のメイン課題)🛠️🎀

✅ ステップ0:この章の“粒度ルール”を固定する📏

画像を挿入予定

まず、あなたのプロジェクトに「粒度ルール」を置いちゃおう!

  • docs/chapter-rule.md(ファイル名は何でもOK)を作って、これを書く👇

章の定義(おすすめの固定文)

  • 1章=1つのゴール
  • 1章=1〜3コミット
  • 章の終わり=全テストが緑+リファクタ済み+読み物としてOK📗✅

✅ ステップ1:「1章=1〜3コミット」テンプレを作る🧱

この教材では、基本テンプレはこれでいこう💕

  • Commit A(test:):仕様をテストで追加する🧪🔴
  • Commit B(feat:):最小実装で通す🟢✨
  • Commit C(refactor:):読みやすく整える🧹💎

💡ポイント:“Redのままコミット”は基本しない(あとで履歴が混乱しがち) まず「テスト追加 → 最小実装で緑」までを1セットでコミットにするのが初心者向けで安全だよ🛡️


✅ ステップ2:コミット種別(type)を決める🏷️

最小セットはこれで十分かわいい&強い🩷

  • test: テスト追加・修正
  • feat: 機能追加
  • fix: バグ修正
  • refactor: 振る舞いを変えない整理
  • docs: ドキュメント
  • chore: 雑務(設定、依存更新など)

この “typeで揃える” 発想自体が Conventional Commits のど真ん中だよ📌 (conventionalcommits.org)


✅ ステップ3:コミット文テンプレをコピペできる形にする📋✨

このまま使ってOKだよ〜!🥰

test: add spec for <対象> (case: <ケース名>)
feat: implement <対象> minimally to satisfy spec
refactor: rename/extract to improve readability of <対象>

例もつけちゃう👇

test: add spec for price rounding (case: 0.5 rounds up)
feat: implement rounding rule for subtotal
refactor: extract rounding function and rename variables

🤖 AIの使いどころ(この章はここが本命)🧠✨

1) 「この章、デカすぎ?」をAIに判定させる🔍

AIにこれを投げてね👇(コピペ用💕)

今から実装したい内容を貼るので、
「1章=1ゴール、1〜3コミット」に収めるために
(1) ゴール定義
(2) 分割案(章を2つ以上にしてOK)
(3) 1章あたりのコミット案(test/feat/refactor)
を箇条書きで出して。

2) コミットメッセージをAIに“候補3つ”出させる📝

この差分の意図を説明するコミットメッセージを
Conventional Commits形式で3案ください。
typeは test/feat/fix/refactor/docs/chore から選んで。
短く、何が変わったかわかる文章にして。

Conventional Commits形式は、こういう自動整形・自動チェックとも相性いいよ✨ (conventionalcommits.org)


✅ チェック(合格ライン)💮✨

✅ 章の終わりチェック(絶対)🧪

  • テストは全部グリーン?🟢
  • テスト名だけ読んで仕様が想像できる?📘
  • “つらい重複” を放置してない?👃🚨
  • 1章のゴールを一言で言える?🎯
  • コミットが 1〜3 に収まった?📏✨

🧯 ありがち事故と直し方(ここ超あるある)🥺

😵「コミットが5個以上になる…」

👉 それ、だいたい 章が2章分! **“仕様のテーマ”**で割るのが一番キレイ✂️✨ (例:税計算 と 端数処理 は別章にする、みたいな)


😵「refactorの時間がなくて放置…」

👉 それ、次回の自分が泣くやつ😭💦 Refactorは “見た目” じゃなくて 次の変更をラクにする保険だよ🛡️✨


😵「コミットメッセージ適当になりがち」

👉 typeだけでも揃えると世界が変わる🌈 Conventional Commitsは “履歴が読める” ための最低限ルールだよ📚✨ (conventionalcommits.org)


🎁 この章の提出物(できたら優勝)🏆💕

  • ✅ 粒度ルールを書いた docs/chapter-rule.md
  • ✅ コミット種別と例を書いた docs/commit-convention.md
  • ✅ この章のテンプレに沿ったコミットが 1〜3個入ってること🎀

次の章(第15章)は、いよいよ AAA(Arrange/Act/Assert)でテストの型を固定して、毎回迷わない書き方に入るよ🧱🧪✨