取り組みの背景 — インラインチャットとは?
Antigravity のインラインチャット(Cmd+I / Windows・Linux では Ctrl+I)は、エディタ内で直接 AI に指示を出してコードを編集できる機能です。サイドパネルのチャットとは異なり、カーソル位置やコードの選択範囲に対してその場でピンポイントに変更を加えられるのが最大の特長です。
「ちょっとした修正のためにチャットパネルを開いて、コードをコピーして、結果を貼り付けて……」という手間が一切不要になります。インラインチャットを日常の開発ワークフローに組み込むための実践テクニックを順番にご紹介します。
インラインチャットの基本操作
起動と使い方
インラインチャットの操作はとてもシンプルです。
// Step 1: コードの任意の位置にカーソルを置く(または範囲を選択)
// Step 2: Cmd+I(Mac)または Ctrl+I(Windows/Linux)を押す
// Step 3: 表示されたテキストボックスに指示を入力
// Step 4: Enter で実行 → AIがコードを生成・修正
// 例: 以下の関数にカーソルを置いて Cmd+I → 「エラーハンドリングを追加」
function fetchUser(id: string) {
const response = await fetch(`/api/users/${id}`);
return response.json();
}
// AIが生成する結果の例:
async function fetchUser(id: string): Promise<User | null> {
try {
const response = await fetch(`/api/users/${id}`);
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
return await response.json();
} catch (error) {
console.error(`Failed to fetch user ${id}:`, error);
return null;
}
}サイドチャットとの違い
インラインチャットとサイドパネルのチャットは、それぞれ異なるシナリオに最適化されています。
インラインチャット(Cmd+I)が向いている場面:
- 関数やブロック単位の修正
- 変数名の変更やリファクタリング
- コメントやドキュメントの追加
- 型定義の修正
- バグ修正
サイドチャット(Cmd+L)が向いている場面:
- 新規ファイルの作成
- 複数ファイルにまたがる大規模な変更
- アーキテクチャの相談
- エラーの原因調査
使い分けの目安としては、「変更箇所が明確で、1つのファイル内で完結する修正」にはインラインチャットが最適です。
実践テクニック — インラインチャットを最大限活用する
テクニック 1: 範囲選択で精度を上げる
インラインチャットの精度は、選択範囲によって大きく変わります。何も選択せずに実行すると、AI はカーソル周辺のコンテキストから推測しますが、編集したい範囲を明示的に選択すると、はるかに正確な結果が得られます。
// ❌ カーソルだけ置いて「型を追加」と指示 → 周辺のどの部分か曖昧
// ✅ 関数全体を選択して「引数と戻り値に型を追加」→ 確実に正しい箇所を修正
// 選択範囲の例: 以下の関数全体を選択してから Cmd+I
function processOrder(order, user) {
const total = order.items.reduce((sum, item) => sum + item.price, 0);
const discount = user.isPremium ? total * 0.1 : 0;
return { total: total - discount, discount };
}
// 期待する出力:
interface OrderItem {
name: string;
price: number;
quantity: number;
}
interface Order {
items: OrderItem[];
}
interface User {
isPremium: boolean;
}
interface OrderResult {
total: number;
discount: number;
}
function processOrder(order: Order, user: User): OrderResult {
const total = order.items.reduce((sum, item) => sum + item.price, 0);
const discount = user.isPremium ? total * 0.1 : 0;
return { total: total - discount, discount };
}テクニック 2: 具体的な指示で意図を伝える
曖昧な指示よりも、具体的な指示のほうが意図通りの結果を得やすくなります。
# ❌ 曖昧な指示
「この関数を改善して」
「もっと良くして」
「バグを直して」
# ✅ 具体的な指示
「null チェックを追加して、id が undefined の場合は早期リターンする」
「forEach を map に変換して、結果を新しい配列として返す」
「async/await パターンに書き換えて、try-catch でエラーをログ出力する」
「この関数を pure function にリファクタリングして、副作用を取り除く」テクニック 3: 段階的な編集を重ねる
一度の指示ですべてを完成させる必要はありません。インラインチャットは繰り返し使うことで真価を発揮します。
// Step 1: まず基本構造を生成
// Cmd+I → 「ユーザー認証のミドルウェア関数を作成」
export function authMiddleware(req, res, next) {
const token = req.headers.authorization;
if (!token) return res.status(401).json({ error: 'Unauthorized' });
next();
}
// Step 2: 型を追加
// 関数全体を選択 → Cmd+I → 「Express の型を追加して」
import { Request, Response, NextFunction } from 'express';
export function authMiddleware(
req: Request,
res: Response,
next: NextFunction
): void {
const token = req.headers.authorization;
if (!token) {
res.status(401).json({ error: 'Unauthorized' });
return;
}
next();
}
// Step 3: JWT検証ロジックを追加
// 関数本体を選択 → Cmd+I → 「JWT トークンを検証して、デコードしたペイロードを req.user にセット」テクニック 4: テストコードの即時生成
関数を選択して「この関数のユニットテストを生成」と指示するだけで、テストコードが作られます。
// 元の関数を選択して Cmd+I → 「Jest でこの関数のテストを書いて。正常系と異常系を含めて」
// 元のコード:
function calculateShipping(weight: number, distance: number): number {
if (weight <= 0 || distance <= 0) throw new Error('Invalid input');
const baseRate = 500;
const weightRate = weight * 10;
const distanceRate = distance * 2;
return baseRate + weightRate + distanceRate;
}
// AI が生成するテスト:
describe('calculateShipping', () => {
test('正常な入力で送料を計算する', () => {
expect(calculateShipping(5, 100)).toBe(500 + 50 + 200);
});
test('重量が0以下の場合にエラーを投げる', () => {
expect(() => calculateShipping(0, 100)).toThrow('Invalid input');
});
test('距離が0以下の場合にエラーを投げる', () => {
expect(() => calculateShipping(5, 0)).toThrow('Invalid input');
});
test('重量と距離が大きい場合も正しく計算する', () => {
expect(calculateShipping(100, 500)).toBe(500 + 1000 + 1000);
});
});知っておくと便利な応用パターン
パターン 1: コメントからコードを生成
コメントを書いてから、そのコメントを選択してインラインチャットを起動すると、コメントの内容に沿ったコードが生成されます。
// 以下のコメントを選択して Cmd+I → 「このコメントの内容を実装して」
// レート制限ミドルウェア:
// - 1分あたり60リクエストまで
// - IPアドレスベースで制限
// - 制限超過時は 429 ステータスを返す
// - X-RateLimit-Remaining ヘッダーを付与パターン 2: エラーメッセージを貼り付けて修正
ターミナルのエラーメッセージをコピーし、問題のあるコードを選択してインラインチャットに貼り付けると、文脈に基づいた修正が行われます。
# Cmd+I に入力する内容の例:
「以下のエラーを修正して: TypeError: Cannot read property 'map' of undefined」パターン 3: ドキュメントコメントの一括生成
ファイル内の全関数を選択して、JSDoc / TSDoc を一括で追加できます。
// ファイル全体(または複数の関数)を選択 → Cmd+I
// → 「すべての public 関数に JSDoc コメントを追加して。
// @param と @returns を含めて」まとめ — インラインチャットを日常のワークフローに
インラインチャット(Cmd+I)は、Antigravity の中でも特に使用頻度が高くなる機能です。サイドチャットほど大げさではなく、タブ補完よりも意図を明確に伝えられる、ちょうど良い粒度の AI アシスタンスを提供してくれます。
ポイントを振り返ると、編集したい範囲を明示的に選択すること、具体的で簡潔な指示を心がけること、そして段階的に編集を重ねることで、インラインチャットのポテンシャルを最大限引き出せます。
まだ Cmd+I を日常的に使っていないなら、まずは「型の追加」や「エラーハンドリングの追加」といった定型的な作業から始めてみてください。一度慣れると、もうインラインチャットなしの開発には戻れなくなるはずです。
エディタの基本機能について知りたい方は「Antigravity Editor View 完全ガイド」も合わせてお読みください。