Claude Codeで効率的な開発サイクルを回す
はじめに
Claude Code を使っていて、こんな経験はありませんか?
- 「コードを一気に出されても、理解が追いつかない...」
- 「書いたコードをレビューしてほしい」
- 「セッションが切れると、どこまで進んだか忘れる」
この記事では、4つのスキルを組み合わせて効率的な開発サイクルを実現する方法を紹介します。
開発サイクルの全体像
-
セッション開始: 初回はそのまま開発開始、2回目以降は
/smart-pickupで前回の状態を復元 -
開発フェーズ: 「ペアプロモードで進めて」で有効化 → Claude が関数単位で実装 + 解説 →
/reviewでコードレビュー → 指摘を修正 -
セッション終了:
/smart-handoffで作業状態を保存
4つのスキルの役割
| スキル | タイミング | 役割 |
|---|---|---|
| ペアプロモード | 開発中 | 実装 + 解説、理解しながら進める |
| /review | 実装後 | コードレビュー、品質担保 |
| /smart-handoff | セッション終了時 | 作業状態を保存 |
| /smart-pickup | セッション開始時 | 作業状態を復元、Git状態と照合 |
必要な設定ファイル
~/.claude/
├── CLAUDE.md # ペアプロモードの設定
├── commands/
│ ├── review.md # /review スキル
│ ├── smart-handoff.md # /smart-handoff スキル
│ └── smart-pickup.md # /smart-pickup スキル
└── context/ # 作業状態ファイルの保存先
└── working-*.md # /smart-handoff で自動生成
設定1: CLAUDE.md(ペアプロモード)
~/.claude/CLAUDE.md に以下を追加します。
「ペアプロモードで進めて」と伝えるだけで、このルールが有効になります。
## ペアプロモード
「ペアプロモードで進めて」と言われたら、以下のルールで動作する。
### 動作ルール
**CRITICAL**: ペアプロモード時は以下を厳守
1. **実装方法**: ファイルに直接書き込む(Write/Edit ツール使用)
2. **粒度**: 関数単位(1回 = 1関数 or 1論理ブロック)
3. **解説**: 書き込み後に会話で詳細に説明
- **なぜこの実装か**: 設計意図、ベストプラクティスの理由
- **何をしているか**: 処理の流れ、各部分の役割
- **注意点**: セキュリティ、パフォーマンス、エッジケース
4. **確認**: 各ステップ後に「ここまでOK?」と確認
5. **質問対応**: 基礎から丁寧に説明
### コマンド
| コマンド | 意味 |
| ------------------- | ------------------------------ |
| `ok` / `次` | 理解した、次へ進めて |
| `なぜ?` / `詳しく` | もっと詳しく説明して |
| `もう一度` | 同じステップを再説明 |
| `スキップ` | 理解済み、説明省略で次へ |
| `確認して` | 今書いたコードをセルフチェック |
設定2: /review スキル
~/.claude/commands/review.md:
---
description: コードレビューを依頼 (user)
---
# コードレビュー
以下のコードをレビューしてください。
## 対象
$ARGUMENTS
## レビュー観点
### 1. 正確性
- ロジックは正しいか
- エッジケースは考慮されているか
- エラーハンドリングは適切か
### 2. セキュリティ
- インジェクション(SQL、XSS、コマンド)
- 入力値の検証、サニタイズ
- 機密情報のハードコード
### 3. 可読性・保守性
- 命名は明確か
- 不要な複雑さはないか
- SOLID原則に沿っているか
### 4. パフォーマンス
- 明らかな非効率はないか
- N+1問題などはないか
## 出力形式
### Summary
- 全体的な評価(1-2文)
### Good
- 良い点を具体的に
### Issues
#### Critical(必須修正)
- セキュリティ問題、バグ
#### Major(強く推奨)
- 設計上の問題
#### Minor(推奨)
- 可読性、規約
### Questions
- 確認したい点
設定3: /smart-handoff スキル
~/.claude/commands/smart-handoff.md にセッション終了時の作業状態保存スキルを作成します。
詳しい設定方法は以下の記事を参照してください。
主な機能
- 会話履歴から作業状態を自動抽出
- Git の状態(ブランチ、コミット)を記録
- 技術的決定とその理由を保存
- 次のアクションを明確化
実行フロー
- 保存先を選択: 既存ファイルに上書き or 新規作成
- 会話から情報を収集: 完了した作業、技術的決定、次のアクション
-
ファイルに保存:
~/.claude/context/working-{task}.md
設定4: /smart-pickup スキル
~/.claude/commands/smart-pickup.md にセッション開始時の作業状態復元スキルを作成します。
pickup の機能
- 保存された作業状態ファイルを読み込み
- 実際の Git 状態と照合(ブランチ、コミット)
- 差分がある場合は警告と対応オプションを提示
- 次のアクションを明確化して作業再開をサポート
pickup の実行フロー
-
ファイル一覧を取得:
ls -ltで更新日時順に取得 -
タスク名を並列取得: 各ファイルの先頭から
headコマンドでタスク名を抽出(最大4件) - 選択肢を提示: AskUserQuestion でユーザーに選択を求める
- 選択されたファイルを読み込み: Read ツールで詳細情報を取得
- Git 状態と照合: ブランチ比較、コミット比較、未コミット変更の確認
- サマリーを出力: 現状の進捗、技術的決定(継承)、次のアクション
出力例
╔══════════════════════════════════════════════════════════╗
║ 作業確認: ログインバグ修正 ║
╚══════════════════════════════════════════════════════════╝
**読み込んだファイル:** `~/.claude/context/working-bugfix-login.md`
**保存日時:** 2025-01-15 18:00(2時間前)
## 状態照合
| 項目 | 保存時 | 現在 | 状態 |
| ------------ | --------------- | --------------- | ---- |
| ブランチ | `fix/login-bug` | `fix/login-bug` | ✅ |
| 最終コミット | `abc1234` | `abc1234` | ✅ |
## 進捗状況
| 状態 | 項目 |
| -------- | -------------------------- |
| ✅ 完了 | 原因特定、修正方針決定 |
| 🔄 進行中 | UserService.ts 修正(50%) |
| ⬜ 未着手 | テスト実行 |
## 次のアクション
1. **UserService.ts の validateToken() を修正**
2. **テスト実行で動作確認**
---
🚀 **続きを進めますか?**
実際の使い方
初回セッション
初回は作業状態ファイルがないので、普通に開発を始めます。
ユーザー: TODOアプリにタスク編集機能を追加したい
Claude: 了解しました。まず全体の設計を確認しましょう。
(計画を立てる)
ユーザー: ペアプロモードで進めて
Claude: ペアプロモードで進めます。
まず全体像を説明しますね...
セッション終了時に /smart-handoff を実行すると、次回から復元できます。
2回目以降のセッション開始
ユーザー: /smart-pickup
Claude: どの作業状態を読み込みますか?
● working-task-edit.md (最終更新: 2時間前)
タスク編集機能の実装
○ working-bugfix-login.md (最終更新: 1日前)
ログインバグ修正
ユーザー: working-task-edit.md を選択
Claude:
╔══════════════════════════════════════════════════════════╗
║ 作業確認: タスク編集機能の実装 ║
╚══════════════════════════════════════════════════════════╝
## 状態照合
| 項目 | 保存時 | 現在 | 状態 |
| -------- | ------------------- | ------------------- | ---- |
| ブランチ | `feature/task-edit` | `feature/task-edit` | ✅ |
## 進捗状況
| 状態 | 項目 |
| -------- | ---------------------------- |
| ✅ 完了 | Phase 1: 型定義とAPI |
| 🔄 進行中 | Phase 2: 編集フォーム(50%) |
| ⬜ 未着手 | Phase 3: テスト |
## 次のアクション
1. **useTaskForm hook の完成**
---
🚀 **続きを進めますか?**
ユーザー: ペアプロモードで進めて
Claude: ペアプロモードで進めます。
前回は useTaskForm hook の途中でした...
開発中(ペアプロモード)
Claude: まず useTaskForm hook の全体像を説明しますね。
- 型定義(TaskFormState)
- バリデーション関数
- フォーム状態管理
- 保存処理
この構造で進めます。OK?
ユーザー: OK
Claude: (型定義をファイルに書き込む)
では書いたコードを説明します。
**なぜこの実装か:**
編集時のバリデーションを新規作成時と共通化することで、
一貫した入力チェックができ、保守性も向上します。
**何をしているか:**
- title: 必須、最大100文字
- description: 任意、最大500文字
- dueDate: 任意、未来の日付のみ
- priority: 必須、low/medium/high
ここまでOK?
ユーザー: OK、次
レビュー
ユーザー: /review 今書いたコード
Claude:
### Summary
全体的に良い実装です。新規作成との一貫性が取れています。
### Good
- バリデーションルールが明確
- 型定義がしっかりしている
- エラーメッセージが日本語で親切
### Issues
#### Minor(推奨)
- dueDate のバリデーションで「今日」も許容すると親切かも
### Questions
- 期限は「未来の日付のみ」?「今日以降」も許容する?
ユーザー: 今日以降も許容して
Claude: (修正をファイルに書き込む)
セッション終了時
ユーザー: /smart-handoff
Claude: どのファイルに作業状態を保存しますか?
● working-task-edit.md (上書き)
○ 新規作成
ユーザー: working-task-edit.md を選択
Claude:
╔══════════════════════════════════════════════════════════╗
║ ✅ Smart Handoff 完了 ║
╠══════════════════════════════════════════════════════════╣
║ 📁 保存先: ~/.claude/context/working-task-edit.md ║
║ ║
║ 🔄 次回の再開方法: ║
║ 1. 新しいセッションを開始 ║
║ 2. /smart-pickup を実行 ║
║ 3. working-task-edit.md を選択 ║
╚══════════════════════════════════════════════════════════╝
ユーザーが問題に気づくパターン
ペアプロモードの価値は、ユーザー自身が問題を発見できることです。
Claude: (saveTask関数をファイルに書き込む)
**何をしているか:**
1. バリデーションを実行
2. エラーがあれば早期リターン
3. APIを呼び出してタスクを保存
ここまでOK?
ユーザー: あれ、return に isLoading と error が入ってないよ
Claude: 良い指摘です!確かに return 文に追加し忘れていました。
修正します。
(ファイルを修正)
これで外部からローディング状態とエラーを参照できるようになりました。
ありがとうございます!
なぜ重要か:
- AI も完璧ではない
- 2人の目でチェックすることでミスが減る
- コードレビュー力が身につく
スキル vs サブエージェント
「レビューはサブエージェントでもできるのでは?」と思うかもしれません。
| 観点 | スキル (/review) |
サブエージェント |
|---|---|---|
| コンテキスト | 会話を共有 ✅ | 独立(文脈を失う) |
| 設定の複雑さ | シンプル ✅ | やや複雑 |
| 使いどころ | ペアプロの流れで ✅ | 完全に独立した視点が欲しい時 |
結論: ペアプロの流れでレビューするなら、スキルの方が自然です。
実装意図を共有した状態でレビューできるため、的確なフィードバックが得られます。
カスタマイズのヒント
経験レベルの調整
- **経験レベル**: 基礎から丁寧に
| 設定 | 解説レベル |
|---|---|
| 初心者 | 変数とは?関数とは?から丁寧に |
| 中級者 | ベストプラクティス中心、基礎は省略 |
| 上級者 | 設計判断のみ、コードは最小限の説明 |
粒度の調整
- **粒度**: 関数単位
- 細かく(3-5行): 丁寧に理解したい時
- 関数単位: バランス重視(おすすめ)
- ファイル単位: 効率重視
コマンドの追加
| コマンド | 意味 |
| -------------- | -------------------- |
| `テスト書いて` | テストコードを追加 |
| `リファクタ` | より良い書き方に修正 |
導入手順
# 1. ディレクトリ作成
mkdir -p ~/.claude/commands
mkdir -p ~/.claude/context
# 2. CLAUDE.md を編集(ペアプロモード設定)
# お好みのエディタで ~/.claude/CLAUDE.md を開く
# 3. review.md を作成(レビュースキル)
# お好みのエディタで ~/.claude/commands/review.md を作成
# 4. smart-handoff.md を作成(ハンドオフスキル)
# お好みのエディタで ~/.claude/commands/smart-handoff.md を作成
# 5. smart-pickup.md を作成(ピックアップスキル)
# お好みのエディタで ~/.claude/commands/smart-pickup.md を作成
# 6. 使ってみる
# 初回: 「ペアプロモードで進めて」で開発開始
# レビュー: /review
# セッション終了: /smart-handoff
# 2回目以降: /smart-pickup で再開
まとめ
Claude Code で効率的な開発サイクルを回す方法を紹介しました。
おすすめ構成
~/.claude/
├── CLAUDE.md # ペアプロモード
├── commands/
│ ├── review.md # /review
│ ├── smart-handoff.md # /smart-handoff
│ └── smart-pickup.md # /smart-pickup
└── context/
└── working-*.md # 作業状態ファイル
ワークフロー
| フェーズ | アクション | 効果 |
|---|---|---|
| 初回開始 | 「ペアプロモードで進めて」 | 開発開始 |
| 2回目以降 | /smart-pickup |
前回の状態を復元 |
| 開発中 | 関数単位で実装 + 解説 | 理解しながら実装 |
| 実装後 | /review |
品質担保 |
| セッション終了 | /smart-handoff |
次回に引き継ぎ |
メリット
-
継続性: セッションが切れても
/smart-pickupで即座に復元 - 照合: Git の状態と比較して差分を検出
- 理解: コードはファイルに直接、解説は会話で丁寧に
- 品質: 同じコンテキストでレビュー、文脈を共有
- 発見: AI のミスにも気づける
ぜひ試してみてください!
補足: 高度な設定
より細かい制御が必要な場合は、以下の機能も使えます。
サブエージェント
特定タスクに特化した AI を定義。プロジェクトの .claude/agents/ に配置。
完全に独立した視点でレビューしたい場合に使用。
Hooks
特定のイベント時に自動実行。.claude/settings.json で設定。
ただし、上記のワークフローであれば不要です。
Plugins
スラッシュコマンド、サブエージェント、MCP サーバー、Hooks をパッケージ化して共有できる機能。
/plugin コマンドでインストール可能。
Discussion