バイブワークフロー — Spec · エージェント · TDD · Git
バイブワークフロー — Spec · エージェント · TDD · Git
🎯 このlessonを読み終えたら
このlessonをすべて読み終えたら、以下の3つを自信を持って実践できます。
- ▸✅ SPEC → Plan → Tasks → Implement のフロー
- ▸✅ Agent モードの安全な使用 (dry-run · 承認ゲート)
- ▸✅ Git コミット単位 + AI が生成したコードの PR 説明方法
学習目標をチェックリストとして置き、すべてに答えられるようになったらlessonを閉じてください。
SPEC vs Vibe — いつ仕様を書き、いつバイブるか?
一言で: シンプルな作業 = 素早くvibe / 複雑な作業 = まずSPEC。
SPECが先の場合:
- ▸🟢 大規模機能 (1週間以上の作業)
- ▸🟢 複数人協業 (PRレビュアーが必要)
- ▸🟢 セキュリティ · 決済 · 認証
- ▸🟢 バックエンド API 契約
- ▸🟢 データスキーマの変更
Vibeが先の場合:
- ▸🟢 UI コンポーネント (ボイラープレート)
- ▸🟢 小さなバグ修正
- ▸🟢 リファクタリング · 名前の変更
- ▸🟢 テストの作成
- ▸🟢 ドキュメント · コメント
Spec-Kit ワークフロー (GitHub, 2025):
Anthropic Skills + Claude Code と組み合わせることで自動化できます。
エージェンティックワークフロー — 「寝ている間も働くAI」
エージェント = LLM が ツール呼び出し · 結果確認 · 次の行動決定 を 自律的に 繰り返すもの。
基本ループ:
エージェントが得意な作業:
- ▸🟢 反復作業: 100ファイルの一括変更
- ▸🟢 探索: コードベース理解 · デバッグ仮説の検証
- ▸🟢 地道な作業: マイグレーション · テスト作成 · ドキュメント更新
- ▸🟢 夜間 · 週末作業: ユーザーが寝ている間に自動でPRを生成
制約:
- ▸🔴 完全自律 X — 5〜10分ごとにユーザーの承認を推奨
- ▸🔴 コストの高い呼び出し (Opus 1M コンテキスト = $90/M)
- ▸🔴 危険な操作 (rm -rf · DB DROP) を直接実行するリスク
- ▸🔴 ハルシネーション — 架空の関数呼び出し · ドキュメント生成
安全策:
- ▸権限モード: ask (全操作を承認) → acceptEdits (編集のみ) → plan (変更なし)
- ▸サンドボックス: Docker · worktree 分離
- ▸チェックポイント: 毎コミット後にレビュー
- ▸ロールバック準備: git reset で復元可能
> 💡 2025年のトレンド: GitHub Actions + Claude Code の組み合わせ → 夜間にPRを自動生成・テスト するパターンが広まっています。
AI と一緒に行う TDD
TDD サイクル: Red (失敗テスト) → Green (通過コード) → Refactor (整理)
AI の役割:
AI が得意なテスト:
- ▸🟢 ユニットテスト (input/output がシンプル)
- ▸🟢 エッジケース (null · 空配列 · 非常に大きな数)
- ▸🟢 ボイラープレート (jest · vitest · pytest セットアップ)
AI が苦手なテスト:
- ▸🔴 複雑な結合テスト (DB · 外部 API · 認証フロー)
- ▸🔴 ビジネス要件 (ドメイン知識が必要)
- ▸🔴 パフォーマンステスト (実際の環境が必要)
- ▸🔴 フレーキーなテストの診断 (タイミング · 環境依存)
Cursor · Claude Code の活用:
> 💡 Iron Law: AI が作成したテストも 自分で読んで理解。テスト通過だけを見て信頼しないこと。
AI 時代の Git — 小さなコミット + 自動レビュー
原則:
1. 小さなコミット — 1コミット = 1つの変更意図。AI レビューが効果的になる
2. 明確なメッセージ — Conventional Commits (feat · fix · refactor)
3. PR 自動化 — Copilot Review · CodeRabbit などによる自動一次レビュー
4. 自動テスト — CI が通過しなければマージ不可
AI Git ツール:
AI 時代の PR テンプレート:
よくある落とし穴:
- ▸❌ AI が生成したコードをすべて一つのコミットに — レビュー不可能
- ▸❌ AI が他の場所も勝手に変更 — レビュー時に驚く
- ▸❌ コンパイルエラーだけ見てマージ — ビジネスロジック未検証
- ▸✅ Plan モードで開始 → 小さな単位で変更 → 即座にコミット
SPEC-Driven — *トークン節約の秘訣*
SPEC を書くと なぜ トークンが節約できるのか
旧来のやり方: 毎回の会話で「この機能を作って → AI が質問 → 回答 → AI が実装」を繰り返す。同じコンテキストを N回 繰り返す。
SPEC-Driven: 最初に spec.md を一度だけ作成 → その後のすべての会話は その spec を参照。コンテキストは1回 + 短い後続リクエスト。
実践フロー
ステップ1: AI と一緒に spec.md を作成
この spec.md が プロジェクトルート に保存される。
ステップ2: 実装 — 説明を繰り返さずに
毎回「Toss ゲートウェイ · サブスクリプション · 返金ポリシー」を繰り返さない。spec 一度 + 短いリクエスト だけ。
ステップ3: コードレビュー — spec 基準で
Spec-Kit (GitHub, 2025)
GitHub が作った SPEC-Driven 標準ツール。4段階自動化:
Claude Code · Cursor と組み合わせると 仕様 → コード まで 一つのフロー。
SPEC vs Vibe — 改めて整理
まとめ
- ▸大きな作業 → まず SPEC、その後実装 = トークン節約 + 一貫性
- ▸小さな作業 → そのまま Vibe でもOK
- ▸Spec-Kit で 仕様 → コード を自動化
エージェントモードの*安全な*使用ガイド (必読)
核心を一言で
エージェント = AI が 自律的にファイルを変更・コマンドを実行 する。誤った使い方をすると 自分のコード · DB · 本番環境 まで壊れる可能性がある。安全使用の5原則。
⚠️ 絶対にしてはいけないこと
1. --dangerously-skip-permissions の使用禁止
Claude Code のオプションの中に 全権限を自動承認 するモードがあります。速いのは確かですが、AI が rm -rf のような危険なコマンドも質問なしに実行してしまいます。本番コードやDBが破損する恐れがあります。
✅ 常に デフォルトモード (Ask または Plan) で開始。
2. 権限モードの段階 — 段階的に許可
推奨フロー: Plan で開始 → 確認 → Ask で段階的に → 必要に応じて AcceptEdits
3. Git commit を頻繁に — ロールバックポイント
意味のある単位 ごとにコミット。壊れた部分だけを 部分的にロールバック できる。
4. 別の worktree で隔離
元のコードへの ダメージ0%。失敗したら git worktree remove ../myapp-experiment で終わり。
5. Docker コンテナ — 完全な隔離
危険な作業 (DB マイグレーション · システムコマンド) は 必ず コンテナ内で。
危険なコマンドの ブラックリスト
エージェントが実行する 前に もう一度確認:
- ▸
rm -rf(特に*または/を含む) - ▸
git reset --hard(コミットが失われる) - ▸
git push --force(リモートを上書き) - ▸
DROP TABLE·TRUNCATE(DB データの削除) - ▸
npm publish(誤った公開) - ▸
curl ... | sh(外部スクリプトの実行) - ▸
sudoが付いたすべてのコマンド
事故が起きたとき — 素早く復旧
1. 即座に停止 — Ctrl+C
2. 変更を確認 — git status · git diff
3. ロールバック — git reset --hard HEAD または git stash
4. DB の場合 — 最終バックアップを確認
5. 事後分析 — ~/.claude/projects/ のトランスクリプトを確認
まとめ
- ▸絶対に 全権限自動許可 はしない
- ▸Plan → Ask → AcceptEdits の段階的なステップ
- ▸頻繁な git commit + worktree 隔離 + Docker がセーフティネット
- ▸危険なコマンドは もう一度 確認
Conventional Commits — *実践例5選*
なぜコンベンションに従うのか
こういうメッセージが100個あると 後で見つけられない。標準のコンベンションに従えば:
- ▸
git log --grep "^feat(auth)"— auth 領域の新機能だけを抽出 - ▸
semantic-release— 自動バージョニング + CHANGELOG - ▸CI 検証 — commitlint で不正なメッセージの PR をブロック
形式
- ▸type — feat · fix · refactor · docs · test · chore · perf · style
- ▸scope — 領域 (auth · api · ui など)
- ▸description — 命令形、50文字以内
実践例5選
1. feat — 新機能
2. fix — バグ修正
3. refactor — リファクタリング (動作変更なし)
4. test — テストの追加・修正
5. chore — ビルド · 依存関係 · ツール
チームコンベンション の例
追加 type (チームによって異なる):
- ▸perf — パフォーマンス改善
- ▸style — フォーマット · セミコロン (CSS ではない)
- ▸ci — GitHub Actions · ワークフロー
- ▸build — webpack · vite の設定
- ▸revert — 以前のコミットを元に戻す
commitlint による自動強制
GitHub Actions:
→ PR のすべてのコミットメッセージを自動検査。不正な形式だと マージをブロック。
まとめ
- ▸type + scope + description の標準形式
- ▸50文字以内の一行 + 詳細は body に
- ▸semantic-release · CHANGELOG の自動化で報われる
- ▸commitlint で チーム全体に強制
🤖 AI にこう聞いてみよう
このlessonの概念を知れば、AIに具体的に指示できるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「この SPEC を基に Plan → Tasks → Implement のフローを作って」
- ▸「AI エージェントモードを安全に使うための dry-run + 承認ゲートのパターンを教えて」
なぜこれでトークンが減るのか
概念を知らないと、AI の返答を受け取っても 「それって何ですか?」 と再度質問しなければなりません。その「再質問」がトークンを消費します。概念を一度理解しておけば、会話が一度で終わります。