◉ANTIGRAVITY LABEN
記事一覧/Antigravity 基本
◉ Antigravity 基本/2026-04-12中級

Antigravity の Context Window 管理術 — 大規模コードベースで精度を落とさない実践テクニック

10万行超のプロジェクトでも Antigravity の AI アシストが的確に機能するための Context Window 管理手法。不要コンテキストの排除から戦略的なファイル参照まで、実務で磨いた技術を共有します。

antigravity464context-window4large-codebaseproductivity19ai-coding4

5万行のプロジェクトで Antigravity の補完が的確だったのに、10万行を超えたあたりから急に見当違いな提案をし始めた——この経験に心当たりはないだろうか。原因はほぼ確実に Context Window の飽和です。

AI コーディングアシスタントの性能を決めるのは、モデルの賢さだけではありません。「何を見せるか」がそれ以上に重要です。Antigravity は開いているファイル、プロジェクト構造、最近の編集履歴を自動的にコンテキストに含めるが、プロジェクトが大きくなるとこの自動収集が裏目に出る。

Context Window 飽和の症状を見分ける

Context Window の問題は徐々に進行するため気づきにくい。以下の症状が2つ以上あれば、コンテキスト管理を見直すタイミングです:

  • 補完候補が現在のファイルと無関係なモジュールのコードを提案する
  • 型情報を正しく推論できず、any や未定義の型を返す頻度が上がる
  • インラインチャットの回答が「一般的なベストプラクティス」に逃げ始める
  • 同じ質問をしても回答の品質にばらつきが大きくなる

3番目の症状が最も見逃されやすい。Antigravity が具体的なコード提案ではなく「一般的には〜が推奨されます」と答え始めたら、コンテキストにプロジェクト固有の情報が十分に入っていないサインです。

.antigravityignore で不要コンテキストを排除する

最初にやるべきことは、コンテキストに含める必要のないファイルを除外することです。.antigravityignore は .gitignore と同じ構文で、AI のコンテキスト収集から特定のパスを除外する:

# .antigravityignore

# ビルド成果物(コンテキストを汚染する最大の原因)
dist/
build/
.next/
out/

# 自動生成ファイル(人間が書いたコードではない)
*.generated.ts
*.d.ts
prisma/migrations/

# テストのスナップショット(大量のテキストでコンテキストを圧迫)
**/__snapshots__/
**/*.snap

# 巨大な設定ファイル
package-lock.json
yarn.lock
pnpm-lock.yaml

# ドキュメント・アセット(コーディングには不要)
docs/
*.md
\!README.md
public/images/

私の経験では、この設定だけで Context Window の有効利用率が 40〜60% 改善します。特に package-lock.json(数万行になることもある)と __snapshots__/ の除外は効果が大きいです。

ただし注意点があります。*.d.ts を除外すると、ライブラリの型定義を参照できなくなる場合があります。プロジェクト固有の .d.ts(env.d.ts など)だけ除外し、node_modules 内の型定義は Antigravity のデフォルト処理に任せるほうが安全です:

# より安全な型定義の除外
src/**/*.generated.d.ts
\!src/env.d.ts

手動参照で「見せたいファイル」を明示する

.antigravityignore が「見せたくないもの」の制御なら、手動参照は「見せたいもの」の指定です。Antigravity のチャットパネルで @file を使うと、特定のファイルを明示的にコンテキストに追加できます。

効果的な手動参照パターン:

# パターン1: 型定義 → 実装の順で参照
@types/api.ts この型に基づいて、新しいエンドポイントのハンドラーを書いて

# パターン2: テスト → 実装の逆順参照
@__tests__/auth.test.ts このテストが通るように認証ミドルウェアを実装して

# パターン3: 設計書 → 実装
@docs/architecture.md この設計に従って、キャッシュレイヤーを追加して

パターン2の「テスト先行型参照」は特に強力です。テストコードは仕様の最も正確な表現であり、Antigravity に「何を実現すべきか」を明確に伝えられます。

ワークスペース分割戦略

プロジェクトが大きい場合、Antigravity のワークスペースをサブディレクトリに限定する方法があります。モノレポで全パッケージをワークスペースに含めるのではなく、今作業しているパッケージだけを開く:

# ❌ モノレポ全体を開く(Context Window が分散する)
antigravity open /path/to/monorepo
 
# ✅ 作業対象のパッケージだけ開く
antigravity open /path/to/monorepo/packages/api

ただし、この方法には欠点があります。他パッケージの型定義やインターフェースを参照できなくなるため、パッケージ間の依存関係が強い場合は使いにくい。

その解決策として、私は「コンテキストブリッジファイル」を作成している:

// packages/api/CONTEXT_BRIDGE.ts
// このファイルは Antigravity のコンテキスト用。実行時には使用しない。
 
// 共有パッケージの重要な型を再エクスポート
export type { User, Session, Permission } from '@monorepo/shared';
export type { APIResponse, PaginatedResult } from '@monorepo/shared/api';
 
// 他パッケージとの接点を明示
// Web パッケージは /api/auth/* エンドポイントに依存
// Worker パッケージは Redis の pub/sub チャネル "events:*" を購読

このファイルをワークスペースに含めておくと、Antigravity は他パッケージとの接点を理解した上でコード提案を行える。ビルドには影響しないが、AI の精度を大幅に向上させるテクニックです。

セッション管理: コンテキストのリフレッシュ

長時間の作業セッションでは、コンテキストが古い情報で埋まっていく問題があります。朝から作業していて、午前中に触ったファイルの情報がまだコンテキストに残り、午後の作業に干渉することがあります。

対処法はシンプルです。大きなタスクの切り替え時にチャットセッションをリセットする:

1. 機能Aの実装が完了 → チャットをクリア
2. 機能Bの作業を開始 → 必要なファイルだけ @file で参照し直す

これは「面倒くさい」と感じるかもしれないが、古いコンテキストを引きずったまま作業を続けるよりも、トータルで見れば時間の節約になります。私の場合、2時間ごとにセッションをリフレッシュするルーティンにしてからは、「なぜか午後になると補完精度が落ちる」問題がほぼ解消しました。

マイクロサービス構成での実践

マイクロサービス構成では、各サービスが独立したリポジトリを持つことが多いです。この場合の Context 最適化は、単一リポジトリとは異なるアプローチが必要です:

# .antigravity/context.yaml(プロジェクトルートに配置)
external_references:
  - name: "user-service"
    openapi: "https://internal-docs.example.com/user-service/openapi.json"
  - name: "payment-service"
    proto: "./proto/payment.proto"
 
priority_files:
  - "src/config/services.ts"     # サービス間通信の設定
  - "src/middleware/auth.ts"      # 認証ロジック
  - "src/types/events.ts"        # イベント型定義

external_references で他サービスの API 仕様を参照可能にし、priority_files でコンテキストに常に含めるべきファイルを指定します。特に events.ts のようなサービス間通信の型定義は、コンテキストに含まれているかどうかで提案の質が劇的に変わる。

次のステップ

まずは .antigravityignore の作成から始めてほしい。ビルド成果物とロックファイルを除外するだけで、体感できるレベルの改善があります。その後、作業スタイルに合わせてワークスペース分割やコンテキストブリッジファイルを導入していくのがおすすめです。

シェア

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

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

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

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

関連記事

◉ Antigravity 基本2026-10-03
Antigravity の Deny list は、自分のシェル履歴から作り始めます
エージェントにターミナルを任せる前に Deny list へ入れる最初のコマンドを、自分のシェル履歴を数えて決める方法。履歴を集計する短いスクリプトと、効いているかを使い捨てリポジトリで確かめる手順をまとめました。
◉ Antigravity 基本2026-09-15
エージェントが理由を残さず終わるとき、読ませたページの文字コードを疑っています
ReadURL に渡したページが原因で、Antigravity のエージェントが Agent execution terminated だけを残して終わることがあります。文字コードを宣言しない古いサイトに当たったときの切り分けと、先に取得して渡す運用への切り替え方を書き残します。
◉ Antigravity 基本2026-08-26
読み取りが自動承認になったレビューモードで、ワークスペースの範囲を決め直す
Antigravity CLI 1.1.20 でレビューモードの読み取りが自動承認になりました。承認が減った代わりに何が読める状態になったのかを、実際の作業ツリーで数えた記録です。