TL;DR
- Google Antigravity(Gemini 3.1 Pro)とClaude Codeを同時に使い、片方が生成したファイルをもう片方に読ませて相互レビューさせる
- コンテキストが大きい作業はGemini側に逃がし、Claude Code側のトークン消費を分散できる
- 2つのモデルの意見が食い違う箇所が「設計判断が必要な場所」のシグナルになる
環境
| 項目 | 詳細 |
|---|---|
| OS | macOS 15.x |
| Google Antigravity | v1.22.2(VSCode fork、無料) |
| 使用モデル(Antigravity) | Gemini 3.1 Pro |
| Claude Code | 最新版 |
| 使用モデル(Claude Code) | claude-sonnet-4-6 |
ワークフローの概要
AntigravityとClaude Codeはどちらもファイルシステム上のファイルを直接参照できる。これを利用して、片方に生成させたファイルをそのままもう片方に読ませる「読み合わせ」ができる。手動でのコピーは一切不要。
基本の流れ:
- Antigravity(Gemini 3.1 Pro)にタスクを渡してドラフトファイルを生成させる
- Claude Codeに同じファイルパスを指定して読ませ、「どこが気になるか」を聞く
- Claudeの指摘をAntigravityに渡してリファクタリングさせる
- 必要なら逆向きにも回す(ClaudeにドラフトさせてGeminiにレビューさせる)
Antigravityのセットアップ
AntigravityはVSCode forkのため、既存のVSCode拡張機能がそのまま動く。
# 公式サイトからDLしてインストール
# https://antigravity.google/
# 既存VSCode拡張の移行(設定 > 拡張機能 > インポート)
# ESLint、Prettier、GitLensなどはそのまま使用可能
モデルの切り替えはコマンドパレット(Cmd+Shift+P)から Antigravity: Switch Model で行う。Gemini 3.1 Proを選択する。
実装例:相互レビューの実際
Step 1: Geminiにドラフト生成させる
Antigravity上でGemini 3.1 Proに指示する:
src/utils/tax_calculator.py を作成してください。
要件:
- 税率を引数で受け取る
- 税込価格と税額を返す
- 0%を含む任意の税率に対応する
Geminiはファイルを生成して src/utils/tax_calculator.py に保存する。
Step 2: Claude Codeに同じファイルを読ませてレビューさせる
Claude Codeのターミナルで:
src/utils/tax_calculator.py を読んで、気になる点を教えてください。
特に:エッジケース、例外処理、型安全性の観点で。
Claude Codeはファイルを直接読みにいく。コピーは不要。
Step 3: 意見が割れる箇所に注目する
Geminiが「問題ない」と判断したコードに対して、Claudeが指摘を出すことがある。実際に起きたケース:
# Geminiが生成したコード(省略版)
import asyncio
async def fetch_all(urls):
results = await asyncio.gather(*[fetch(url) for url in urls])
return results
Claudeの指摘:
asyncio.gather() はデフォルトでいずれかのタスクが例外を送出すると
他のタスクの結果を破棄します。
return_exceptions=True を指定しないと、
一部のURLが失敗した際に全結果が失われる可能性があります。
Geminiは「動くコード」として生成した。Claudeは「壊れるケース」を見た。どちらも正しいが、要件によって対応が変わる判断が必要な箇所だ。
修正版:
async def fetch_all(urls: list[str]) -> list[dict]:
results = await asyncio.gather(
*[fetch(url) for url in urls],
return_exceptions=True # 個別の失敗を例外オブジェクトとして返す
)
return [r for r in results if not isinstance(r, Exception)]
トークン分散の考え方
Claude Codeはトークン消費が早い。コンテキストが大きい以下の作業はAntigravity(Gemini)側に逃がす:
- リポジトリ全体の設計確認・把握
- 大きなファイル(1000行超)の一括読み込み
- 複数ファイルにまたがる依存関係の調査
- 初期ドラフト生成(試行錯誤が多い段階)
Claude Codeは以下に集中させる:
- エッジケース・例外処理の指摘
- 型安全性・null安全性の確認
- 設計意図の説明・言語化
- 最終的なリファクタリング判断
Antigravityは無料でGemini 3.1 Proが使い放題なため、コンテキストを食う作業を移すだけでClaude Code側の月間消費を体感で30〜40%程度抑えられる。
コンテキストズレへの対処
2つのツールにコンテキストを分散させると「どちらが最新のファイルを持っているか」がわかりにくくなる。
問題が起きるパターン:
1. Claude CodeがファイルAを直接編集
2. AntigravityはファイルAの変更を認識していない状態でレビューを依頼
3. 古いコードに対してリファクタリング案が出る
現状の対処:
- ファイル編集はClaude Code側で行う(ファイルシステムは共有なので実際は同期されている)
- AntigravityへのレビューはRead指示でファイルパスを明示する(キャッシュを持っていても強制的に再読させる)
# Antigravityへの依頼時
src/utils/tax_calculator.py を改めて読み直した上で、
前回の指摘を踏まえたリファクタリング案を出してください。
拡張機能との組み合わせ
AntigravityはVSCode forkのため、既存拡張がそのまま動く。Geminiがコードを生成した直後にESLintとPrettierが自動で走る設定にしておくと、Claude Codeへのレビュー依頼前にフォーマット・静的解析が完了した状態になる。
// settings.json(Antigravity / VSCode共通)
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
}
}
まとめ
- AntigravityとClaude Codeはファイルシステムを共有するため、生成ファイルをそのまま読み合わせる相互レビューが実現できる
- Gemini 3.1 Proは広いコンテキスト・全体把握向き、Claudeはエッジケース・推論の深さ向き
- 2モデルの意見が食い違う箇所は「設計判断が必要な場所」のシグナルとして使える
- Gemini側でコンテキスト大の作業を引き受けることでClaude Codeのトークン消費を分散できる
- VSCode拡張(ESLint、Prettierなど)はAntigravityでそのまま動く
概要や実際に使ってみた感想も含めた記事はこちら → GeminiとClaudeに喧嘩させながらコードを書いている話