一覧に戻る

ブログ

Tactic Remoteでコードレビューを自動化する

チームのプルリクエストキューに到達する前にバグ、セキュリティ問題、品質問題をキャッチするAIパワードのコードレビューワークフローを設定しましょう。

公開日 タグ: 使い始める / code-review / workflow / quality
ブログ

このカテゴリのプロダクト/開発アップデートを確認できます。

カテゴリを見る

コードレビューはソフトウェア品質に不可欠ですが、時間もかかります。開発者は週に推定6〜8時間を同僚のコードレビューに費やしています — 機能構築に使えるはずの時間です。AIパワードのコードレビューは人間のレビュアーを置き換えるものではありませんが、機械的な側面(バグの検出、スタイル違反、エラーハンドリングの欠如)を処理することで、人間のレビュアーがアーキテクチャ、設計、ビジネスロジックに集中できるようにします。

このチュートリアルでは、Tactic Remoteを使用したAIパワードのコードレビューワークフローの設定方法を紹介します。

レビューワークフロー

設定するワークフローは以下の通りです:

  1. 開発者がフィーチャーブランチでの作業を完了する。
  2. プルリクエストを作成する前に、スマートフォンからClaude Codeレビューセッションを開始する。
  3. Claude Codeがmainブランチとの差分を分析し、包括的なレビューを生成する。
  4. 開発者がスマートフォンから発見事項に対応する(修正を承認するか例外を記録)。
  5. クリーンアップされたコードがプッシュされ、AIレビューサマリーを含むPRが作成される。

これにより、人間のレビューで発見されるはずだった問題の60〜80%をキャッチし、レビューサイクルタイムを大幅に短縮します。

ステップ1:レビュープロンプトの準備

プロジェクトルートに.claude-review-prompt.mdというファイルを作成します。これがAIレビューの指示書として機能します:

# Code Review Instructions
 
Review all changes on the current branch compared to the `main` branch.
 
## What to Check
 
### Critical Issues (must fix before merge)
 
- **Logic errors**: Code that doesn't do what it claims
- **Security vulnerabilities**: SQL injection, XSS, auth bypasses, credential exposure
- **Data loss risks**: Missing transactions, incorrect cascade deletes, race conditions
- **Breaking changes**: API contract violations, backwards-incompatible modifications
 
### Warnings (should fix, but not blocking)
 
- **Missing error handling**: Uncaught exceptions, unhandled promise rejections
- **Performance concerns**: N+1 queries, unnecessary re-renders, missing memoization
- **Missing validation**: User input not validated before processing
- **Test coverage gaps**: New code paths without corresponding tests
 
### Suggestions (nice to have)
 
- **Readability improvements**: Unclear variable names, complex logic that could be simplified
- **Documentation gaps**: Public APIs without JSDoc/TSDoc comments
- **Potential refactoring**: Duplicated logic, overly long functions
 
## Output Format
 
For each finding, provide:
 
1. **Severity**: CRITICAL / WARNING / SUGGESTION
2. **File**: Exact file path and line numbers
3. **Description**: What the issue is, in one sentence
4. **Explanation**: Why it matters, with context
5. **Fix**: Concrete code suggestion to resolve the issue
 
At the end, provide:
 
- Summary: X critical, Y warnings, Z suggestions
- Overall assessment: Is this branch ready for human review?
 
## What NOT to Flag
 
- Style preferences covered by our linter (ESLint/Prettier handle this)
- Import ordering (automated)
- Whitespace or formatting (automated)
- Type annotations that TypeScript can infer

このプロンプトは意図的に具体的です。曖昧なレビュー指示は曖昧なレビューを生みます。具体的な指示はアクショナブルな発見を生みます。

ステップ2:スマートフォンからレビューを実行

ブランチをレビューする準備ができたら、Tactic Remoteを開いてプロジェクトディレクトリを指すセッションを開始します。以下を送信します:

Checkout branch feature/user-dashboard.
Follow the review instructions in .claude-review-prompt.md.

Claude Codeは以下を行います:

  1. ブランチをチェックアウト
  2. mainとの差分を計算
  3. レビュー基準に従って変更されたすべてのファイルを分析
  4. 構造化されたレビューレポートを出力

差分のサイズに応じて、通常3〜8分かかります。完了時に通知が届きます。

ステップ3:発見事項のレビュー

レビュー出力はターミナルビューに表示されます。典型的な発見事項は以下のようになります:

🔴 CRITICAL — src/api/routes/users.ts:47-52

Description: SQL query constructed with string concatenation, vulnerable to injection.

Explanation: The search query parameter is interpolated directly into the SQL
string without parameterization. An attacker could craft a search input that
modifies the query logic, potentially extracting or modifying data.

Fix: Use parameterized query:
  // Before (vulnerable)
  const results = db.query(`SELECT * FROM users WHERE name LIKE '%${search}%'`)

  // After (safe)
  const results = db.query('SELECT * FROM users WHERE name LIKE ?', [`%${search}%`])

各発見事項に対して、スマートフォンから3つの選択肢があります:

修正を適用する: Claude Codeに提案された修正の実装を指示します:

Apply the fix for the SQL injection issue in users.ts:47.

スキップ: 発見事項に同意しない、または偽陽性の場合は、後で確認するために記録して先に進みます。

議論する: 不明な場合は、Claude Codeに詳細なコンテキストを尋ねます:

Explain the SQL injection risk in more detail. Is this exploitable given
our authentication middleware that runs before this route?

ステップ4:自動修正適用

多数の発見事項があるレビューの場合、修正を一括適用できます:

Apply fixes for all CRITICAL and WARNING findings from the review.
For each fix, run the relevant tests to verify the fix doesn't break anything.
Report which fixes were applied and which tests passed.

Claude Codeは発見事項を体系的に処理し、修正を適用してテストを実行します。これもスマートフォンを置いて通知を待てるタスクです。

重要: コミット前に適用された修正をレビューしてください。AI生成の修正は通常正しいですが、「通常」はプロダクションコードには十分ではありません。ターミナルビューで差分を確認しましょう:

Show me the complete git diff of all changes made during this review.

ステップ5:PRサマリーの生成

修正が適用され検証されたら、PR用のサマリーを生成します:

Create a pull request description that includes:
1. What this branch does (based on the commit history)
2. Summary of the AI review findings and how they were addressed
3. Any remaining suggestions that were intentionally deferred
4. Test results

これをPRの説明に含めましょう。人間のレビュアーにコードが事前レビューされたことへの信頼を与え、何に注力すべきかを伝えます。

上級編:継続的レビューセッション

長期間のフィーチャーブランチでは、PR時だけでなく定期的にレビューを実行しましょう:

Review all commits since the last review marker.
After completing the review, create a git tag 'last-ai-review' at HEAD.

レビューを毎日実行することで、問題が導入された時点により近いところでキャッチできます。1週間の開発後に問題を発見するよりも修正が容易です。

CI/CDとの統合

AIレビューを正式化したいチームは、ブランチがプッシュされた時にレビューセッションを自動的にトリガーできます。ワークフロー:

  1. CIウェブフックがTactic Remote Macコンパニオンアプリをトリガー。
  2. コンパニオンアプリが更新されたブランチでClaude Codeセッションを開始。
  3. Claude Codeがレビュープロンプトを実行。
  4. 結果がプルリクエストのコメントとして投稿される。

これにはMac側でのスクリプティング(コンパニオンアプリがセッション管理用のAPIを公開)が必要であり、高度な統合ドキュメントで詳細に説明されています。

効果の測定

AIコードレビューを導入した後、以下のメトリクスを追跡しましょう:

  • レビュー時間: 人間のレビュアーが機械的なチェックに費やす時間が減るため、30〜50%減少するはずです。
  • レビュー vs 本番で検出された問題: 左にシフトするはずです — AIレビュー中に検出される問題が増え、本番に漏れる問題が減ります。
  • レビューサイクルタイム: PRの作成から承認までの時間は、PRが事前レビュー済みで到着するため短縮されるはずです。
  • 開発者の満足度: レビュアーは退屈さの軽減と、意味のあるアーキテクチャフィードバックへの集中を報告するはずです。

AIコードレビューは人間の判断を置き換えることではありません。人間の判断が最も重要な問題 — アーキテクチャ、設計、ビジネスロジック — に費やされることを確保し、タイポやnullチェックの見逃しをキャッチすることではないようにすることです。

まず1つのプロジェクトで始め、結果に基づいてレビュープロンプトを改善し、アプローチが調整できたらチームに展開しましょう。良いレビュープロンプトへの投資は、それを使用するすべてのレビューで配当を生みます。

Tactic Remote を試す

スマートフォンからコーディングエージェントを操作

Mac、Windows、Linux 上の Claude Code や Codex などに接続。iPhone や iPad で進捗を確認し、次の指示を送れます。