0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Antigravity SDKに物申す!!結局生のLanguage Serverを叩くのが最強だった件

0
Posted at

はじめに

少し前に、GoogleからAntigravity SDKなるものが発表されました。
Antigravityの...SDKだとっ!!!
非常に面白そうな匂いがぷんぷんと匂います。

あんま話題になってなさそうなので私の鼻が腐っているだけかもしれません。

そんな、ぷんぷん臭うAntigravityを一足遅れて実際に触ってみました。

結論から言うと、私は公式SDKを投げ捨て、結局過去に作ったLSと直接通信する非公式TypeScriptクライアントに戻ってきました。

もちろん、公式SDKにも良いところはあります。まずは良い点から触れておきましょう。

公式SDKのここが良い(評価できる点)

公式SDKは、行儀の良いチャットボットやエージェントを作る分には申し分ありません。

  • Pythonでシンプルに記述できる: 数行書くだけで簡単にエージェントが立ち上がります
  • 実務に必要な機能が揃っている: MCP対応やサブエージェントの起動が標準で組み込まれています
  • Vertex AI経由でのGCPクオータ消費に対応: APIキーを使わずとも、Application Default Credentials (ADC) を使ってGCPのクオータで動かすことができます

これらは素直に評価できるポイントです。

しかし、あえて言わせてください。抽象化されすぎです。
Antigravityはよりもっと自由であるべきです。反重力という名前もせっかくついているんですから...
ここからは、私がなぜ公式SDKに物申したくなったのか、その悪い点(ネイティブLSに及ばない点)を挙げていきます。

公式SDKのここが不満

1. Antigravityのクオータ使わせてくれへんのかい!

一番はじめになんやねんこいつと思いました。

私は、月額2,900円/月もする「Google AI Pro」に加入しています。
Google ドライブが5TB、YouTube Premium Liteの特典もつけてくれています。

しかしSDKのAPIは金払えということでしょうか。
余計なドライブとかYouTube Premium Liteより正直AI使わせて欲しいです。

API Key を Google AI Studio にGoogleでログインして、 https://aistudio.google.com/api-keys から作れと。
本当に鬼畜の所業だと思います。

公式SDKを動かす場合、APIキーを取得するか、GCP(Vertex AI)のセットアップを行うといったインフラ側の準備が強いられます。
せっかくAntigravityを使っているのに、なぜ別途APIのセットアップが必要なのでしょうか。

使わせろよ。Antigravityのクオータ。

2. SDKなら、Antigravityをそのまま操作できるようにして欲しかった。

ちょっと言ってる意味がわからない方もいるかもしれません。順を追って説明します。

公式SDKで作れるのは、あくまでまっさらな新規エージェントです。
Agent を生成して、APIキーを読ませて、ゼロから会話を始める。それだけ。

でも、僕がやりたかったのはそうじゃないんです。

普段Antigravityのチャットを触っていて、「あー、この続きをスクリプトで自動的に回したいなあ」とか、「昨日IDEで途中まで詰めた会話を、今日はコードから引き継いで走らせたいなあ」みたいな場面、ありませんか?

え、ない? いいえ。僕にはあるんです。

つまり、今まさに自分が使っているAntigravityに、そのまま外から接続して操作する——そういうSDKであってほしかったわけです。

ところが公式SDKは、自分が普段使っているAntigravityとは完全に切り離された別空間に、毎回まっさらな箱を立ち上げます。
昨日までの会話も、コツコツ育ててきたメモリも、プロジェクトの文脈も、何ひとつ引き継げません。「Antigravityの皮をかぶった、ただのエージェントランナー」になってしまっているんです。

Antigravityに直接ぶら下がって、会話もデータも丸ごと引き継いで動かせるSDK。
一番ほしかったのはそれなのに、用意されていたのは隔離されたサンドボックスでした。

まぁ、うん。まぁ、うん。普通に既存のLSに接続できるようにしたSDKじゃダメだったんですかね...

3. 抽象化で「製品の機能」がごっそり消えとる

公式SDKは、実は localharness という専用バイナリを立ち上げて、その中で完結する独立ランタイムです。つまりあなたが普段使っているAntigravity本体(IDE)とは別で動いています。あなたの会話履歴も、プロジェクトも、メモリも、そこには居ません。まっさらな箱です。

そしてSDKが提供してくれる組み込みツールは、たったの13個。

list_directory / search_directory / find_file / view_file / create_file /
edit_file / run_command / ask_question / start_subagent / generate_image /
search_web / read_url_content / finish

行儀は良い。良いんですが…本体のLSが喋れるRPCは238個あります。

ブラウザ自動化(CDP起動・スクショ)、統合ターミナル、Git/VCS(Fig連携)、MCPサーバの管理、あなたの実際の会話トラジェクトリの取得・フォーク・巻き戻し(turn diff付き)、メモリ、プロジェクト管理、果てはモデルA/B比較の「Battle Mode」や音声文字起こしまで——製品としてのAntigravityの強みがそこにあります。

公式SDKは、この巨大な氷山を「エージェントループ1個と13ツール」に削り落として渡してくる。便利の裏で、Antigravityという製品の面白い部分が全部こそげ落ちているわけです。抽象化されすぎ、と冒頭で言ったのはこういうことです。

じゃあ非公式クライアントで直接LSを叩くと何が嬉しいの?

ここまでの不満の裏返しが、そのままメリットになります。

  • 自分のAPIキー不要。Antigravityのサブスク/クオータでそのまま動く
  • Claudeを含む全配信モデルを内部IDで指定し放題(Geminiの檻から脱獄)
  • 238 RPCの製品フル機能——ブラウザ・ターミナル・Git・MCP管理・履歴・メモリ
  • 自分の本物のデータ(既存の会話・プロジェクト・メモリ)を操作できる
  • おまけに、本家AntigravityのUIをそのままWebアプリとして配信することすら可能(プロキシでシムを差し込むPoCが動いています)

コードのノリだけ見せると、こんな具合です。

import { AntigravityClient } from "antigravity-client";

// LSを自動検出して接続(自分のAntigravity認証をそのまま流用)
const client = await AntigravityClient.connect();

const cascade = await client.startCascade();

// Geminiの檻を蹴破ってClaude Sonnet 4.6で動かす
await cascade.sendMessage("反重力について教えて", { model: 1035 });

APIキーの取得も、Vertexのセットアップも、Geminiへの妥協も、何もありません。connect() して sendMessage() するだけ。これが本来あるべき自由であり、Googleの目指す道だと思うのです。

とはいえ、これは茨の道でもある

正直に言っておきます。これは完全に非公式・リバースエンジニアリングの世界です。

LSとの通信に使うProtobufの定義は、配布されている拡張機能のバンドルから引っこ抜いて再構築しています。当然、本体がアップデートされるたびにクライアントも更新しなければいけません。

実際、もう懐かしのバージョン1.~~時代の頃は、毎回のアプデで難読化の形式が変わっていて、抽出プログラムを書き直す羽目になったり、認証情報の在り処と取り出し方がしれっと変わっていて、トークンの読み出しロジックを書き直すなんてこともありました。

Google先生に媚を売りながら、「アプデはいいけど難読化の手法とかは変えないでね...」と毎日恐ろしくて夜しか眠れない日々を送ることになります。

そして、公式SDKのように、安定したサポートやドキュメントがあるわけではありません。

なので、プロダクションでガッツリ使うなら公式SDK、Antigravityを限界まで遊び倒したいなら非公式LSクライアント、という棲み分けが現実的という印象です。

おわりに

公式SDKは、よくできています。よくできているからこそ、Antigravityという製品の持つ「異常な物量の機能」が抽象化の向こうに隠れてしまっているのが、私にはもったいなく感じました。

反重力(Antigravity)と名乗るなら、もっと自由に、もっと重力を無視して飛ばせてほしい。
——そんなわがままを叶えるために、私はまた非公式クライアントに戻ってきたのでした。

あと最後なので非公式クライアントを開発した理由を述べて締めようと思います。

非公式クライアントなどを作った理由は、AI開発はしたいが、貧乏なので本当にAPIの使用料金とか払ってらんないからです。改めて言います。

お金がないからです。

金がある人は公式SDKを使えばいいと思います。
僕のようにお金がないけど、学生無料プランで自分だけのエージェントを開発したい、そんな方は僕と一緒に非公式クライアントで節約限界開発をしましょう。

こんな深夜テンションハイテンションな記事に付き合ってくれた皆様、最後まで読破した猛者に、感謝と尊敬の意を表します。

というわけで、皆さんも良いAntigravityライフを!!!


そういえば肝心の非公式クライアントの紹介をしてなかったので、最後の最後にさせていただきます。

jkfujinami/antigravity-client
AntigravityのLSを操作できる非公式クライアントだゾ

jkfujinami/antigravity-grpc-schemas
これらのスキーマは Antigravity のフロントエンドバンドルから抽出,再構築されたもので、Cascade 状態管理、MCP サーバー制御、リアクティブ更新ストリームなど、LS サービス定義の全体をカバーしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?