ANTIGRAVITY LABEN
記事一覧/Editor View
Editor View/2026-03-31上級

Antigravity Editor 上級カスタマイズガイド — キーバインド・スニペット・AIルール・ワークスペース設定で生産性を極限まで引き上げる

Antigravity Editorのキーバインド、カスタムスニペット、AIルール、ワークスペース設定を徹底的にカスタマイズし、開発生産性を最大化する上級テクニックを解説します。

antigravity435editor28customizationkeybindingssnippetsai-rulesworkspace6productivity19

取り組みの背景 — なぜ Editor カスタマイズが重要なのか

Antigravity を使い始めたとき、多くの開発者はデフォルト設定のまま作業を進めます。しかし、AI IDE の真価はデフォルトの先にあります。キーバインドの最適化、カスタムスニペットの設計、AIルールの精密な調整、そしてワークスペース設定の体系化——これらを組み合わせることで、開発速度は文字通り別次元に到達します。

ここではAntigravity Editor を「自分専用の開発マシン」に仕上げるための上級カスタマイズ手法を、実装コード付きで体系的に解説します。単なる設定変更ではなく、なぜその設定が有効なのかという背景も含めて、プロフェッショナルな開発環境の構築を目指します。

対象読者は、Antigravity の基本操作に慣れており、さらに効率を追求したい中上級者です。

キーバインド設計の原則 — 認知負荷を最小化する配置戦略

デフォルトキーバインドの限界

Antigravity のデフォルトキーバインドは汎用的に設計されていますが、個人の開発スタイルには最適化されていません。特に以下のような場面で摩擦が生じます。

  • AI チャットとエディタ間の切り替えに複数キーが必要
  • 頻繁に使うリファクタリング操作にショートカットが割り当てられていない
  • プロジェクト固有の操作(テスト実行、ビルド、デプロイ)が標準化されていない

認知負荷最小化の3原則

効果的なキーバインド設計には、3つの原則があります。

頻度順配置: 最も頻繁に使う操作を最もアクセスしやすいキーに割り当てます。具体的には、ホームポジションから指を動かさずに到達できる範囲(Cmd/Ctrl + アルファベットキー)を最優先で使います。

カテゴリ統一: 同じカテゴリの操作は同じ修飾キーの組み合わせに統一します。例えば、AI 関連の操作はすべて Cmd+Shift に、Git 操作はすべて Cmd+Alt に統一するといった具合です。

筋肉記憶の活用: 他のエディタ(VS Code, Vim, Emacs)からの移行者は、既存の筋肉記憶を活かせる配置を優先します。

実装例:AI 操作に特化したキーバインド設定

// .antigravity/keybindings.json
{
  "keybindings": [
    // === AI チャット操作(Cmd+Shift 系統)===
    {
      "key": "cmd+shift+a",
      "command": "antigravity.openChat",
      "description": "AI チャットパネルを開く"
    },
    {
      "key": "cmd+shift+i",
      "command": "antigravity.inlineChat",
      "description": "インラインチャットを起動"
    },
    {
      "key": "cmd+shift+r",
      "command": "antigravity.regenerate",
      "description": "直前の AI 応答を再生成"
    },
 
    // === コード操作(Cmd+Alt 系統)===
    {
      "key": "cmd+alt+r",
      "command": "antigravity.refactor",
      "description": "選択範囲をAIリファクタリング"
    },
    {
      "key": "cmd+alt+e",
      "command": "antigravity.explain",
      "description": "選択コードの AI 解説"
    },
    {
      "key": "cmd+alt+t",
      "command": "antigravity.generateTest",
      "description": "選択コードのテスト自動生成"
    },
 
    // === ナビゲーション(Cmd 系統)===
    {
      "key": "cmd+k cmd+d",
      "command": "antigravity.openDiff",
      "description": "Diff View を開く"
    },
    {
      "key": "cmd+k cmd+c",
      "command": "antigravity.openCheckpoints",
      "description": "Checkpoints パネルを開く"
    }
  ]
}

この設定のポイントは、AI 操作を Cmd+Shift に統一している点です。これにより「AI に何かさせたいときは Shift を押す」という直感的なルールが生まれ、認知負荷が大幅に下がります。

カスタムスニペット設計 — AIと人間のハイブリッド入力

なぜ AI 時代にスニペットが必要なのか

「AI がコードを書いてくれるなら、スニペットは不要では?」と思われるかもしれません。しかし実際には、AI に毎回同じボイラープレートを生成させるのは非効率です。スニペットは「確定的に同じ構造を出力する」場面で AI を補完します。

スニペットが有効な場面は以下の通りです。

  • コンポーネントの基本構造(React, Vue, Svelte)
  • テストファイルのセットアップ
  • API エンドポイントのひな形
  • ドキュメントコメントのフォーマット

プロジェクト固有スニペットの設計パターン

// .antigravity/snippets/react-component.json
{
  "React Server Component": {
    "prefix": "rsc",
    "body": [
      "import type { FC } from 'react';",
      "",
      "interface ${1:ComponentName}Props {",
      "  ${2:propName}: ${3:string};",
      "}",
      "",
      "const ${1:ComponentName}: FC<${1:ComponentName}Props> = async ({ ${2:propName} }) => {",
      "  ${4:// Server-side data fetching}",
      "",
      "  return (",
      "    <div className=\"${5:container}\">",
      "      <h2>{${2:propName}}</h2>",
      "      ${0}",
      "    </div>",
      "  );",
      "};",
      "",
      "export default ${1:ComponentName};"
    ],
    "description": "React Server Component with TypeScript props"
  },
 
  "API Route Handler": {
    "prefix": "apir",
    "body": [
      "import { NextRequest, NextResponse } from 'next/server';",
      "",
      "export async function ${1|GET,POST,PUT,DELETE|}(request: NextRequest) {",
      "  try {",
      "    ${2:// Implementation}",
      "",
      "    return NextResponse.json(",
      "      { success: true, data: ${3:result} },",
      "      { status: ${4:200} }",
      "    );",
      "  } catch (error) {",
      "    console.error('${5:API Error}:', error);",
      "    return NextResponse.json(",
      "      { success: false, error: '${6:Internal server error}' },",
      "      { status: 500 }",
      "    );",
      "  }",
      "}"
    ],
    "description": "Next.js App Router API endpoint with error handling"
  },
 
  "Vitest Test Suite": {
    "prefix": "vtest",
    "body": [
      "import { describe, it, expect, vi, beforeEach } from 'vitest';",
      "import { ${1:functionName} } from './${2:module}';",
      "",
      "describe('${1:functionName}', () => {",
      "  beforeEach(() => {",
      "    vi.clearAllMocks();",
      "  });",
      "",
      "  it('should ${3:expected behavior}', () => {",
      "    // Arrange",
      "    const input = ${4:testInput};",
      "",
      "    // Act",
      "    const result = ${1:functionName}(input);",
      "",
      "    // Assert",
      "    expect(result).${5:toBe}(${6:expected});",
      "  });",
      "",
      "  it('should handle edge case: ${7:description}', () => {",
      "    ${0}",
      "  });",
      "});"
    ],
    "description": "Vitest test suite with AAA pattern"
  }
}

スニペット変数の高度な活用

Antigravity のスニペットは VS Code 互換の変数システムをサポートしています。これを活用すると、ファイル名やディレクトリ名から自動的に値を推論できます。

{
  "Auto Component from Filename": {
    "prefix": "autocomp",
    "body": [
      "// ${TM_FILENAME_BASE} component",
      "// Generated: ${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}",
      "",
      "interface ${TM_FILENAME_BASE}Props {",
      "  ${1:children}: ${2:React.ReactNode};",
      "}",
      "",
      "export function ${TM_FILENAME_BASE}({ ${1:children} }: ${TM_FILENAME_BASE}Props) {",
      "  return <div>${0}</div>;",
      "}"
    ],
    "description": "ファイル名から自動でコンポーネント名を設定"
  }
}

TM_FILENAME_BASE は現在のファイル名(拡張子なし)を自動挿入します。UserProfile.tsx でこのスニペットを展開すると、コンポーネント名が自動的に UserProfile になります。小さな工夫ですが、日に何十回もコンポーネントを作成する場面では大きな時間節約になります。

AIルール設計 — .antigravity/rules の体系的な構築

ルールファイルの階層構造

AIルールは Antigravity の出力品質を左右する最も重要な設定です。ルールファイルは階層的に管理することで、グローバルな方針とプロジェクト固有の制約を両立できます。

.antigravity/
├── rules/
│   ├── global.md          # 全プロジェクト共通のルール
│   ├── typescript.md      # TypeScript 固有のルール
│   ├── react.md           # React 固有のルール
│   ├── testing.md         # テスト作成ルール
│   ├── api-design.md      # API 設計ルール
│   └── security.md        # セキュリティルール
├── keybindings.json
└── snippets/

グローバルルールの設計

<!-- .antigravity/rules/global.md -->
# プロジェクト共通ルール
 
## コーディング規約
- TypeScript の strict モードを前提とする
- any 型の使用を禁止する(unknown + 型ガードを使用)
- 関数の行数は50行以内に収める
- 純粋関数を優先し、副作用は明示的に分離する
 
## 命名規約
- 変数・関数: camelCase
- 型・インターフェース: PascalCase(I プレフィックスは付けない)
- 定数: UPPER_SNAKE_CASE
- ファイル名: kebab-case(コンポーネントのみ PascalCase)
 
## エラーハンドリング
- try-catch は最小限のスコープで使用する
- エラーメッセージはユーザー向けと開発者向けを分離する
- 非同期処理のエラーは必ず上位に伝搬させる
 
## コメント
- 「何をしているか」ではなく「なぜそうしているか」を書く
- TODO コメントには担当者と期限を含める: // TODO(@username 2026-04-15): ...
- JSDoc は公開APIにのみ記述する

ドメイン特化ルールの実装

プロジェクトの技術スタックに合わせたドメイン特化ルールが、AI の出力品質を劇的に変えます。

<!-- .antigravity/rules/react.md -->
# React 開発ルール
 
## コンポーネント設計
- Server Components をデフォルトとし、"use client" は必要な場合のみ
- Props の型はインターフェースで定義(type ではなく interface)
- children を受ける場合は React.ReactNode を使用
- デフォルトエクスポートはページコンポーネントのみ
 
## 状態管理
- ローカル状態: useState / useReducer
- サーバー状態: TanStack Query(React Query)
- グローバル状態: Zustand(Redux は使用しない)
- URL 状態: nuqs(useSearchParams のラッパー)
 
## パフォーマンス
- リスト描画では必ず key に一意のIDを使用(index は禁止)
- 動的インポートは React.lazy + Suspense で実装
- 画像は next/image を使用し、width/height を必ず指定
- useCallback / useMemo は計測に基づいて適用(予防的な使用は禁止)
<!-- .antigravity/rules/security.md -->
# セキュリティルール
 
## 入力バリデーション
- ユーザー入力は必ず Zod スキーマで検証する
- SQL クエリにはパラメータ化クエリのみ使用
- HTML の直接埋め込み(dangerouslySetInnerHTML)は原則禁止
 
## 認証・認可
- API ルートには必ず認証ミドルウェアを適用
- JWT トークンは HttpOnly Cookie に格納
- CORS は許可ドメインを明示的に指定
 
## シークレット管理
- 環境変数は .env.local に格納(.env にデフォルト値のみ)
- クライアントに公開する変数は NEXT_PUBLIC_ プレフィックスのみ
- コード例にAPIキーの実フォーマットを絶対に含めない
  - ✅ YOUR_API_KEY, YOUR_SECRET_KEY
  - ❌ AIzaSy..., sk-..., ghp_...

ルール適用の優先順位制御

複数のルールファイルが存在する場合、Antigravity は以下の優先順位で適用します。

  1. インラインチャットで直接指示した内容(最高優先)
  2. ファイル固有のルール(ファイルパスにマッチするルール)
  3. プロジェクトルール(.antigravity/rules/ 配下)
  4. グローバル設定(Antigravity のユーザー設定)

この優先順位を理解しておくと、「グローバルルールで厳格な型チェックを要求しつつ、テストファイルではやや緩和する」といった柔軟な運用が可能になります。

<!-- .antigravity/rules/testing.md -->
# テスト固有ルール(global.md の一部を上書き)
 
## 型の緩和
- テストヘルパーでは as unknown as Type によるキャストを許可
- モックオブジェクトでは Partial<Type> を使用可能
- any は vi.fn() の型引数でのみ許可
 
## テスト構造
- AAA パターン(Arrange-Act-Assert)を必ず守る
- テスト名は「should + 期待動作」の形式で記述
- describe のネストは2段階まで

ワークスペース設定 — チーム全体の開発体験を統一する

.antigravity/settings.json の設計

ワークスペース設定は、個人の好みではなくプロジェクトの要件として管理します。これにより、新しいメンバーが参加しても即座に同じ開発体験を得られます。

// .antigravity/settings.json
{
  // === AI モデル設定 ===
  "ai.defaultModel": "gemini-2.5-pro",
  "ai.fallbackModel": "gemini-2.0-flash",
  "ai.temperature": 0.3,
  "ai.maxTokens": 8192,
 
  // === エディタ設定 ===
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "prettier",
  "editor.tabSize": 2,
  "editor.rulers": [80, 120],
  "editor.wordWrap": "wordWrapColumn",
  "editor.wordWrapColumn": 120,
 
  // === ファイル管理 ===
  "files.exclude": {
    "node_modules": true,
    ".next": true,
    "dist": true,
    "coverage": true,
    ".turbo": true
  },
  "files.watcherExclude": {
    "**/node_modules/**": true,
    "**/.git/**": true,
    "**/.next/**": true
  },
 
  // === 検索最適化 ===
  "search.exclude": {
    "node_modules": true,
    "*.lock": true,
    ".next": true,
    "src/generated": true
  },
 
  // === AI コンテキスト ===
  "ai.contextFiles": [
    "README.md",
    "ARCHITECTURE.md",
    ".antigravity/rules/*.md"
  ],
  "ai.ignorePaths": [
    "node_modules",
    ".next",
    "dist",
    "*.min.js",
    "*.map"
  ]
}

環境別設定の分離

開発環境とCI環境で異なる設定が必要な場合は、環境変数を活用して切り替えます。

// .antigravity/settings.json
{
  "ai.contextFiles": [
    "README.md",
    ".antigravity/rules/*.md"
  ],
 
  // CI 環境ではAI機能を無効化
  "ai.enabled": "${env:CI:true}",
 
  // ローカル開発ではオートセーブを有効化
  "editor.autoSave": "${env:CI:afterDelay}",
  "editor.autoSaveDelay": 1000
}

Knowledge Items — AI にプロジェクト固有の知識を教える

Knowledge Items は Antigravity 独自の機能で、AI がプロジェクトの文脈を深く理解するための仕組みです。ルールが「こうしなさい」という指示であるのに対し、Knowledge Items は「これがこのプロジェクトの背景です」という文脈情報です。

<!-- .antigravity/knowledge/architecture.md -->
# アーキテクチャ概要
 
このプロジェクトは Next.js 15 の App Router を使用した SaaS アプリケーションです。
 
## ディレクトリ構造の意図
- src/app/ — ルーティングと Server Components
- src/components/ — 再利用可能な UI コンポーネント
- src/lib/ — ビジネスロジック(フレームワーク非依存)
- src/services/ — 外部API通信レイヤー
 
## 重要な設計判断
- データ取得は Server Components で完結させる(クライアントから直接 API を呼ばない)
- 認証は middleware.ts で一元管理する
- Stripe 決済フローは /api/checkout → Stripe → /api/verify-session の3ステップ
<!-- .antigravity/knowledge/domain.md -->
# ドメイン用語集
 
- **テナント**: マルチテナント構成における1つの組織(organizationId で識別)
- **プラン**: Free / Pro / Enterprise の3段階
- **シート**: 1テナント内のユーザー枠数
- **ウィジェット**: ダッシュボードに配置可能な個別コンポーネント

Knowledge Items を充実させることで、AI はコードの生成だけでなく、プロジェクトの文脈に沿った適切な判断を下せるようになります。

設定ファイルのバージョン管理戦略

Git で管理すべきファイルと除外すべきファイル

# .gitignore(Antigravity 関連)
 
# ✅ Git で管理する
# .antigravity/rules/         — プロジェクト共通の AI ルール
# .antigravity/snippets/      — チーム共有のスニペット
# .antigravity/settings.json  — プロジェクト設定
# .antigravity/knowledge/     — Knowledge Items
 
# ❌ Git から除外する
.antigravity/local-settings.json  # 個人設定(モデル選択等)
.antigravity/.chat-history/       # チャット履歴
.antigravity/.cache/              # キャッシュ

設定変更のレビュープロセス

AI ルールの変更はコードの変更と同じくらいチームに影響を与えます。以下のようなレビュープロセスを導入することを推奨します。

PR テンプレート例:

## AI ルール変更
 
### 変更内容
- [ ] ルール追加
- [ ] ルール修正
- [ ] ルール削除
 
### 変更理由
(なぜこのルール変更が必要か)
 
### 影響範囲
(この変更によりAIの出力がどう変わるか)
 
### 検証方法
(変更後に期待通りの出力になることをどう確認したか)

生産性を最大化する設定の組み合わせパターン

パターン1: フルスタック TypeScript 開発

.antigravity/
├── rules/
│   ├── global.md           # 共通ルール(型安全・命名規約)
│   ├── react.md            # フロントエンド
│   ├── api-design.md       # API 設計
│   ├── database.md         # Prisma / Drizzle ルール
│   └── testing.md          # テスト
├── snippets/
│   ├── react-component.json
│   ├── api-route.json
│   └── test-suite.json
├── knowledge/
│   ├── architecture.md
│   └── domain.md
├── keybindings.json
└── settings.json

パターン2: モバイルアプリ開発(Swift / Kotlin)

.antigravity/
├── rules/
│   ├── global.md
│   ├── swift.md            # Swift / SwiftUI ルール
│   ├── kotlin.md           # Kotlin / Jetpack Compose ルール
│   └── testing.md
├── snippets/
│   ├── swiftui-view.json
│   └── compose-screen.json
├── knowledge/
│   ├── app-architecture.md  # MVVM / Clean Architecture
│   └── api-contracts.md     # バックエンド API 仕様
└── settings.json

パターン3: インフラ・DevOps

.antigravity/
├── rules/
│   ├── global.md
│   ├── terraform.md         # IaC ルール
│   ├── docker.md            # コンテナ設計ルール
│   └── security.md          # インフラセキュリティ
├── snippets/
│   ├── terraform-module.json
│   └── dockerfile.json
├── knowledge/
│   ├── infrastructure.md    # 現在のインフラ構成
│   └── runbooks.md          # 運用手順
└── settings.json

これらのパターンを参考に、自分のプロジェクトに合った構成を設計してみてください。

まとめ

Antigravity Editor のカスタマイズは、単なる見た目の調整ではなく、開発プロセス全体の品質と速度に直結する投資です。キーバインドで操作の摩擦をなくし、スニペットで定型作業を瞬時に完了し、AIルールで出力品質を保証し、ワークスペース設定でチーム全体の体験を統一する——この4つの柱を体系的に整備することで、Antigravity は「便利なツール」から「自分の手の延長」へと進化します。

まずは今日使っている操作の中で最も頻度の高いものを3つ特定し、そのキーバインドの最適化から始めてみてください。小さな改善の積み重ねが、数か月後には劇的な生産性の違いとして現れます。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

Editor View2026-06-15
Antigravity 2.0 デスクトップで複数エージェントを同時監督するときの画面と割り込みの設計
Antigravity 2.0 が『エージェント管制塔』へ再定義された今、デスクトップで複数エージェントを同時に走らせるときの画面構成・割り込み判断・状態の見える化を、実作業の手順とともに整理しました。
Editor View2026-05-03
Gemini CLI と Antigravity を本気で使い分ける — 2026年5月、現場で出した結論
Gemini CLI と Antigravity を半年並行運用してきた個人開発の現場から、ターミナル派とIDE派それぞれの本領を、実例コード・コスト比較・判断フレームワークで具体的に整理します。
Editor View2026-05-01
Antigravity の tasks.json と launch.json でワンキー開発環境を仕上げる
Antigravity の tasks.json と launch.json を使い込んで、ビルド・テスト・デプロイを Cmd+Shift+B 一発で動かす実装パターンを、個人開発で使い続けている設定例とともに解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →