Antigravity のリリースノートを毎月開くたびに、前回メモした使い方がもう古くなっていることに気づきます。機能が増えること自体はありがたいのですが、「結局どれが日々の作業に効くのか」を選り分ける時間のほうが、機能を試す時間より長くなりがちです。
そこで、2026年5月時点の主要な変更を、リリースノートの転記ではなく「実際に触ってみて、どの場面で効いたか・どこでつまずいたか」という視点で並べ直しました。新機能の一覧ではなく、自分の運用に取り込むときの判断材料として読んでいただければと思います。
AgentKit 2.0 の正式対応 — 効くのはデバッグ情報
5月で最も体感差が大きかったのが AgentKit 2.0 への対応です。
AgentKit 2.0 は Google のエージェント構築フレームワークの大型更新で、Antigravity との結びつきが密になりました。機能表だけ見ると「ツール呼び出しの精度向上」「マルチエージェントのコンテキスト共有改善」と並びますが、私が日々の開発で一番ありがたかったのは、地味に見えるエージェントループのデバッグ情報の充実でした。どのツールを、どんな引数で、何回呼んで、どこで判断が分岐したかが追えるようになり、「なぜか期待と違う動きをする」エージェントの原因切り分けが格段に速くなります。
最小のエージェント定義はこの形です。
from google.aistudio.agentkit import Agent, Tool, AgentConfig
config = AgentConfig(
model="antigravity-2.5-pro", # Antigravity モデルを指定
max_iterations=10,
enable_thinking=True # 拡張思考を有効化
)
@Tool(name="search_docs", description="技術ドキュメントを検索する")
def search_documentation(query: str) -> str:
return f"検索結果: {query}"
agent = Agent(config=config, tools=[search_documentation])
result = agent.run("React Native の SwiftUI 連携について調べてください")
print(result.output)
print(f"実行ステップ数: {result.iterations}")ひとつ注意点があります。max_iterations を大きくしたまま外部 API を叩くツールを渡すと、ループが止まらず想定外の回数だけ課金が走ることがあります。私は新しいツールを足したときは必ず max_iterations を 3〜4 に絞って挙動を確認し、安定してから戻すようにしています。
反復上限だけでは足りない — ツール呼び出し回数も見張る
ここで一度、痛い思いをしました。
max_iterations は「エージェントが何周考えるか」の上限であって、「1周のなかで何回ツールを叩くか」の上限ではありません。並列ツール呼び出しに対応したモデルは、1ステップで複数のツールを同時に投げます。手元のドキュメント検索エージェントは平常時こそ 2 ステップ・ツール呼び出し 5 回で収まっていましたが、プロンプトを少し曖昧にした一度だけ、9 ステップ・23 回まで膨らみました。ステップ数だけを見ていたら気づけない増え方です。
そこで、両方に上限を置く薄いラッパーを噛ませています。
import time
from collections import Counter
def run_with_budget(agent, prompt, *, max_steps=4, max_tool_calls=8):
"""反復数とツール呼び出し回数の両方に上限を置いてエージェントを実行する。"""
agent.config.max_iterations = max_steps
started = time.perf_counter()
result = agent.run(prompt)
calls = Counter(step.tool_name for step in result.steps if step.tool_name)
total_calls = sum(calls.values())
elapsed = time.perf_counter() - started
print(f"{elapsed:.1f} 秒 / {result.iterations} ステップ / 内訳 {dict(calls)}")
if total_calls > max_tool_calls:
raise RuntimeError(
f"ツール呼び出しが上限超過: {total_calls} 回(上限 {max_tool_calls} 回)"
)
return result例外を投げるのは、上限を超えた時点で処理を続ける意味がないからです。予算を超えた実行は、結果が正しくても運用としては失敗しています。result.steps を Counter にかけて内訳を出しておくと、どのツールが暴れているかが一目で分かります。私の場合、外部検索ツールだけが 15 回叩かれていて、原因は description の書き方が曖昧だったこと、という結末でした。エージェントを止める仕組みそのものについては、AIエージェントを信頼できる相棒にするで扱っている考え方が土台になります。
A2A プロトコルへの対応 — 自作エージェントを「部品」にできる
Agent-to-Agent(A2A)プロトコルのサポートが強化されました。
A2A は、異なるフレームワークで作られたエージェント同士を連携させるための、Google が提唱する標準プロトコルです。Antigravity が対応したことで、LangChain や AutoGen で組んだエージェントと相互に呼び出し合えるようになりました。
実務で効く変化は一点に集約できます。Antigravity で作ったエージェントを、別のフレームワークのエージェントから「ツール」として呼べるようになったことです。これまでは「Antigravity で全部組むか、別フレームワークで全部組むか」の二択になりがちでしたが、その境界が消えました。得意なところだけを Antigravity で作って、全体のオーケストレーションは使い慣れたフレームワークに任せる、という分担ができます。最初から大きなマルチエージェント設計を描かなくても、小さな部品を一つずつ足していける点が、個人開発の立場では特に助かりました。私自身、複数のアプリと技術ブログを一人で回しているので、全体を作り込まずに必要な部品だけ差し替えられる構成は現実的に効きます。
ローカルとクラウドをどう振り分けるか
Ollama や LM Studio を介したローカル LLM 連携の、接続安定性とモデル切り替えがなめらかになりました。
import antigravity
client = antigravity.Client(
backend="ollama",
model="gemma3:latest",
base_url="http://localhost:11434"
)
response = client.generate(
prompt="このコードのバグを見つけてください",
context="# コード\n[コード]"
)
print(response.text)私はこの更新以降、「下書きはローカル、仕上げはクラウド」という使い分けを定着させました。手元の環境(M2 Pro / メモリ 32GB、gemma3:latest)で計った目安がこちらです。環境で大きく変わる数字なので、絶対値ではなく比率として読んでください。
| 作業 | 委譲先 | 1件あたりの応答 | 判断理由 |
|---|---|---|---|
| コミットメッセージの素案 | ローカル | 約 1.8 秒 | 数をこなす。多少ぶれても人が直す |
| ログからの定型要約 | ローカル | 約 3.5 秒 | 社外に出したくないデータを含む |
| 設計判断のレビュー | クラウド | 約 6 秒 | 間違えたときの手戻りが大きい |
| 本番に入るコードの確認 | クラウド | 約 8 秒 | 精度が費用に勝る |
試行回数の多い作業をローカルに逃がすだけで、月の API 費用は目に見えて落ち着きます。ただし切り替えを手動でやると必ず忘れるので、タスク名で分岐させ、ローカルが落ちていたらクラウドに逃がす形にしました。
import antigravity
import requests
LOCAL = antigravity.Client(
backend="ollama", model="gemma3:latest",
base_url="http://localhost:11434",
)
CLOUD = antigravity.Client(backend="google", model="antigravity-2.5-pro")
DRAFT_TASKS = {"commit_message", "log_summary", "rename_suggestion"}
def generate(task: str, prompt: str, context: str = "") -> str:
"""下書き系はローカル、それ以外はクラウド。ローカル不通時はクラウドへ退避。"""
if task in DRAFT_TASKS:
try:
return LOCAL.generate(prompt=prompt, context=context, timeout=20).text
except (requests.Timeout, requests.ConnectionError):
pass # ollama serve が落ちている・モデル読み込み中
return CLOUD.generate(prompt=prompt, context=context).texttimeout=20 を入れているのは、待つより落としたほうが安全だからです。ローカルモデルは読み込みに数秒かかることがあり、そこで固まると自動化パイプライン全体が止まります。Ollama を含む具体的な接続手順は、Gemma 4 を Antigravity で動かすにまとめています。
Gemma 4 との統合深化 — 画像からコードへ
Gemma 4 モデルと Antigravity の統合がさらに深まり、特にマルチモーダル処理(テキスト+画像)の精度向上が顕著です。コードのスクリーンショットから実装を起こす、UI のデザイン画像からコンポーネントの骨組みを出す、といった用途の品質が上がりました。
実際に使うときのコツは、画像を渡すだけで終わらせず、期待する出力の制約を言葉でも添えることです。「この画面を SwiftUI で、状態管理は持たず見た目だけ」と添えるかどうかで、返ってくるコードの粒度がかなり変わります。Gemma 4 × Antigravity は現在 Antigravity Lab で最も読まれているテーマでもあり、組み合わせの相性は確かに良いと感じています。
コンテキストウィンドウの拡張 — 横断リファクタが楽になる
利用可能なコンテキストウィンドウが拡張され、大規模なコードベースや長い会話履歴を保ったままの作業が快適になりました。効果を一番実感しやすいのは、複数ファイルにまたがるリファクタリングと、プロジェクトの文脈を踏まえた設計レビューです。関連ファイルをまとめて読ませても文脈が途切れにくくなり、「さっき直した別ファイルの前提を忘れてちぐはぐな修正を返す」という事故が減りました。
実際につまずいた三つのこと
機能そのものより、周辺で時間を溶かしました。同じ穴に落ちる方が減れば嬉しいです。
base_url の末尾スラッシュ。 http://localhost:11434/ と書くと接続が 404 で返ります。パス結合で // になるためで、エラーメッセージは「モデルが見つかりません」としか言ってくれません。末尾のスラッシュを削るだけで通ります。
モデルのアンロードによる初回の遅さ。 Ollama は既定で 5 分アイドルするとモデルをメモリから降ろします。朝いちばんの 1 回目だけ応答が 10 秒近くかかり、「ローカルは遅い」と誤解しかけました。OLLAMA_KEEP_ALIVE=30m ollama serve で起動しておけば、体感はまったく別物になります。
A2A の引数スキーマ不一致。 呼び出し側と受け側で型が食い違うと、ツール呼び出しが例外ではなく無言で握り潰され、エージェントが「ツールを使わずに答える」挙動に落ちます。Antigravity 側の @Tool は型注釈を str / int のような素直な型で書き、Optional や複合型は避けるのが安全でした。応答が返らない・様子がおかしい場合の切り分けは、AI エージェントが応答しない時の診断と対処法も併せてどうぞ。
プラン・料金の変更
2026年春の料金改定で、一部プランの制限が緩和されています。特に Pro プランのコンテキスト制限が見直され、個人開発者にとって取り回しやすい構成になってきました。具体的な数値はAntigravity の料金と使用量で確認できます。
二か月使って、手元に残ったもの
この記事を書いてから 5 月・6 月と実務で回してみて、結果として定着したのは二つだけでした。
AgentKit 2.0 のデバッグ情報と、上のツール呼び出し予算。この組み合わせは、エージェントを「よく分からないけど動くもの」から「動きを説明できるもの」に変えてくれました。ローカル/クラウドの振り分けも残りました。費用の話以上に、ネットワークが不安定な移動中でも下書きが進む、という副次的な効き目が大きかったです。
逆に外したのは A2A です。技術としては筋が良いと今も思っていますが、一人で回している範囲では、フレームワークをまたぐ必要が最後まで出ませんでした。使える機能と、使うべき機能は違う。当たり前のことを、二か月かけて確認した格好です。
まず試すなら、この順番で
ここまでの変更を全部追う必要はありません。まず AgentKit 2.0 のデバッグ情報で手元のエージェントの動きを可視化し、ツール呼び出し回数に上限を置く。そのうえで、試行回数の多い作業をローカル LLM に逃がす。この二段だけでも、日々の手応えははっきり変わります。A2A や Gemma 4 のマルチモーダルは、必要が出てきたタイミングで足せば十分です。
次の更新が来たら、また同じ目線で「自分の作業に効くか」で選り分けていきます。読んでくださってありがとうございました。