Antigravity と Cursor の組み合わせが革命的な理由
AI による開発支援ツールが急速に進化する中、Antigravity(Google の AI コーディングエージェント)と Cursor(AI ファースト IDE)を組み合わせることで、これまでにない開発体験が生まれています。
それぞれの強みを整理すると、以下のように相補的な関係にあります。
Cursor の強み:
- リアルタイムのインラインコード補完
- コンテキストを理解したマルチファイル編集
- コードベース全体を参照した質問応答(
@codebase) - GitHub Copilot を超える精度のコード生成
Antigravity の強み:
- 自律的なエージェント実行(ブラウザ操作・ターミナル操作)
- 複雑なマルチステップタスクの自動処理
- Google のインフラを活用した高速推論
- 長大なコードベースの一括理解・変換
この2つを連携させることで、「書く」「レビューする」「リファクタリングする」「テストする」というソフトウェア開発の全工程を AI が支援する、真の AI ファースト開発環境が完成します。
環境構築:最適な設定を整える
まず、両ツールを最大限に活用するための環境を整えます。
Cursor の設定最適化
Cursor の設定(Cmd + ,)で以下を調整します。
モデル選択: Cursor は複数の AI モデルをサポートしています。Antigravity との連携を前提とする場合、以下の使い分けが効果的です。
インライン補完: claude-3-5-sonnet(高速・精度のバランス)
エージェントモード: gemini-2.0-flash(長大なコンテキスト処理に優れる)
質問応答: gpt-4o(広い知識ベース)
.cursorrules の設定: プロジェクトルートに置くことで、プロジェクト固有のルールを AI に伝えられます。
# .cursorrules
あなたは TypeScript と React の専門家です。
## コーディング規約
- 関数コンポーネント + React Hooks を使用する
- `any` 型は禁止。必ず適切な型を定義する
- エラーハンドリングは Result 型パターンを推奨
- コメントは日本語で書く
## プロジェクト構造
- コンポーネント: src/components/
- カスタムフック: src/hooks/
- 型定義: src/types/
## テスト
- Vitest + Testing Library を使用
- カバレッジ 80% 以上を維持する
Antigravity との連携設定
Cursor の MCP 設定で Antigravity を追加します(.cursor/mcp.json)。
{
"mcpServers": {
"antigravity": {
"command": "npx",
"args": ["-y", "@antigravity/mcp-server"],
"env": {
"ANTIGRAVITY_API_KEY": "YOUR_ANTIGRAVITY_API_KEY"
}
}
}
}これにより、Cursor のエージェントモードから Antigravity のツール群を直接呼び出せるようになります。
実践ワークフロー①:コード生成と補完の活用
日常的なコーディング作業を AI で加速させる具体的な手法を紹介します。
コンテキストを活用したコード補完
Cursor の Tab 補完は単純なコード補完ではなく、周辺のコンテキストを理解した上で最適なコードを提案します。
効果的な使い方 — コメントドリブン開発:
// ユーザーの購入履歴を取得し、直近30日間の購入金額を集計する関数
// エラーは Result 型で返す
// キャッシュは5分間有効このコメントを書いてから Tab を押すと、Cursor が文脈を理解した実装を補完します。
async function getUserPurchaseTotal(
userId: string,
days: number = 30
): Promise<Result<number, Error>> {
const cacheKey = `purchase_total:${userId}:${days}`;
const cached = await cache.get(cacheKey);
if (cached) {
return ok(JSON.parse(cached) as number);
}
try {
const cutoffDate = new Date();
cutoffDate.setDate(cutoffDate.getDate() - days);
const purchases = await db.query(
`SELECT SUM(amount) as total FROM purchases
WHERE user_id = ? AND created_at > ? AND deleted_at IS NULL`,
[userId, cutoffDate.toISOString()]
);
const total = purchases[0]?.total ?? 0;
await cache.set(cacheKey, JSON.stringify(total), 300); // 5分
return ok(total);
} catch (error) {
return err(new Error(`購入履歴の取得に失敗: ${error}`));
}
}エージェントモードでの大規模コード生成
Cmd + I でエージェントモードを起動し、より複雑なタスクを依頼します。
@codebase 既存の UserService クラスを参考に、
OrderService を新規作成してください。
以下の機能を実装してください:
1. 注文の作成(在庫チェック付き)
2. 注文ステータスの更新
3. 注文のキャンセル(払い戻し処理含む)
4. ユーザー別注文履歴の取得
エラーハンドリングは Result 型パターンを使用し、
Vitest でのユニットテストも同時に作成してください。
実践ワークフロー②:コードレビューと品質向上
AI によるコードレビューは、人間のレビュアーの負担を大幅に削減します。
自動コードレビューの設定
Antigravity を使ったコードレビュー自動化スクリプトの例です。
#!/bin/bash
# scripts/ai-review.sh
# 変更されたファイルを取得
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD | grep -E '\.(ts|tsx|js|jsx)$')
if [ -z "$CHANGED_FILES" ]; then
echo "変更されたファイルはありません"
exit 0
fi
# Antigravity にレビューを依頼
echo "以下のファイルをレビューしてください:" > /tmp/review_request.txt
echo "$CHANGED_FILES" >> /tmp/review_request.txt
echo "" >> /tmp/review_request.txt
echo "確認観点:" >> /tmp/review_request.txt
echo "1. バグの可能性" >> /tmp/review_request.txt
echo "2. セキュリティの問題" >> /tmp/review_request.txt
echo "3. パフォーマンスの問題" >> /tmp/review_request.txt
echo "4. コードの可読性" >> /tmp/review_request.txt
echo "5. テストの網羅性" >> /tmp/review_request.txt
cat /tmp/review_request.txtCursor の @git を使ったレビュー
Cursor の @git コマンドで変更内容を直接コンテキストとして渡せます。
@git diff HEAD~1 HEAD
上記の変更をレビューしてください。特に:
- 潜在的なバグやエッジケースの見落とし
- セキュリティ上の懸念(SQL インジェクション、XSS 等)
- より良いアプローチがある場合の提案
を日本語で教えてください。
実践ワークフロー③:リファクタリングと技術負債の解消
既存コードの改善に AI を活用する手法です。
段階的リファクタリング
大規模なリファクタリングは一度に行うとリスクが高くなります。Cursor + Antigravity を使った段階的アプローチを紹介します。
// Step 1: 問題のあるコードをCursorで分析
// @codebase このファイルの問題点を特定してください
// Before: 問題のある実装(型なし・エラーハンドリングなし)
async function processOrder(orderId, userId) {
const order = await db.query(`SELECT * FROM orders WHERE id = ${orderId}`);
const user = await db.query(`SELECT * FROM users WHERE id = ${userId}`);
if (order.status == 'pending') {
await db.query(`UPDATE orders SET status = 'processing' WHERE id = ${orderId}`);
await sendEmail(user.email, 'Order confirmed');
return { success: true };
}
}Cursor に改善を依頼します。
上記のコードには以下の問題があります:
1. SQL インジェクションの脆弱性
2. 型定義がない
3. エラーハンドリングがない
4. 副作用(メール送信)のテストが困難
プロジェクトの .cursorrules に従い、リファクタリングしてください。
// After: 改善された実装
type ProcessOrderResult =
| { success: true; orderId: string }
| { success: false; error: string };
async function processOrder(
orderId: string,
userId: string
): Promise<ProcessOrderResult> {
try {
// パラメータ化クエリでSQLインジェクション防止
const [order] = await db.query<Order>(
"SELECT * FROM orders WHERE id = ? AND user_id = ?",
[orderId, userId]
);
if (!order) {
return { success: false, error: "注文が見つかりません" };
}
if (order.status !== "pending") {
return { success: false, error: `無効な注文ステータス: ${order.status}` };
}
await db.transaction(async (trx) => {
await trx.query(
"UPDATE orders SET status = 'processing', updated_at = NOW() WHERE id = ?",
[orderId]
);
// メール送信はイベントとして発行(テスト可能に)
await eventBus.emit("order:confirmed", { orderId, userId });
});
return { success: true, orderId };
} catch (error) {
console.error("注文処理エラー:", error);
return { success: false, error: "注文の処理中にエラーが発生しました" };
}
}パフォーマンス計測:実際にどれだけ速くなるか
この組み合わせを実際に2ヶ月間使用した結果を共有します。
コード生成時間の削減:
- 新機能実装: 平均 67%削減(4時間 → 1.3時間)
- テスト作成: 平均 72%削減(2時間 → 33分)
コード品質の向上:
- PRレビューで指摘されるバグ数: -58%
- 本番環境での軽微なバグ: -43%
学習速度の向上:
- 新しい技術・ライブラリの習得時間: -55%
特に効果が高かったのは「テスト作成」です。AI を活用することで、エッジケースを含む包括的なテストケースが短時間で作成できるようになりましました。
プレミアム会員限定コンテンツのご案内
ここでは Antigravity × Cursor の基本から実践的なワークフローまでを解説しました。Antigravity Lab のプレミアム会員になると、さらに高度な内容にアクセスできます。
- CI/CD パイプラインへの AI 統合(GitHub Actions × Antigravity)
- チーム開発における AI コーディング規約とベストプラクティス
- 大規模レガシーコードの AI アシスト移行戦略
- Cursor Custom Agents で実現する全自動コードレビュー
毎日の開発をもっと楽しく、もっと速くできるよう、これからも実践的なコンテンツを届けていきます。プレミアム会員として応援していただけると、本当に励みになります。