ターミナルの履歴をさかのぼると、私のシェルスクリプトには gemini というコマンドが思っていた以上に深く根を張っていました。記事の下書き整形、コミットメッセージの素案づくり、複数アプリのリリースノートの叩き台。どれも小さな自動化ですが、止まれば日々の運用が静かに滞ります。
その gemini が、6/18 に個人向けで動かなくなります。Gemini CLI と Gemini Code Assist の IDE 拡張が、無料層・AI Pro・Ultra のいずれでもリクエスト処理を終了し、Go で書き直された Antigravity CLi へ誘導される——告知を読んだとき、まず手を動かして影響範囲を測ることにしました。これはその移行作業の記録です。
まず動かなくなるものを棚卸しする
移行で最初にやるべきは、新ツールの学習ではなく「いま何が gemini に依存しているか」を正確に知ることでした。私自身、個人開発で App Store と Google Play の両方にアプリを出しつつ、4つのブログを並行運用しているため、呼び出し箇所が散らばっています。
棚卸しは grep 一発で済みます。
# リポジトリとホームの dotfiles を横断して gemini 依存を洗い出す
rg -n --hidden -g '!.git' \
-e '\bgemini\b' \
-e 'code-assist' \
-e 'GEMINI_API' \
~/repos ~/.zshrc ~/.config 2> /dev/null \
| grep -vE '@google/generative-ai|gemini-1\.5|gemini-2' \
| tee ~/gemini_cli_usage.txt
wc -l ~/gemini_cli_usage.txt
ここで @google/generative-ai(SDK 経由の API 呼び出し)を除外しているのが要点です。提供終了するのは CLI と IDE 拡張であって、Gemini API そのものではありません。SDK でモデルを叩いているコードは移行対象に含めない。この線引きを最初に引かないと、移行範囲が無駄に膨らみます。
私の場合、洗い出された実依存は11箇所でした。内訳はシェル関数が6、CI のステップが3、エディタのタスク定義が2。思っていたより少なく、ここで一度安心しました。
インストールと最初の疎通確認
Antigravity CLI の実体は agy というバイナリです。Go 製の単一バイナリなので、Node のグローバルパッケージだった旧 CLI と違い、依存の解決でつまずく余地がほとんどありません。
# インストール(公式インストーラ)
curl -fsSL https://antigravity.google/install.sh | sh
# パスを通して疎通確認
export PATH = " $HOME /.antigravity/bin: $PATH "
agy --version
agy auth login # ブラウザが開き、Google アカウントで認可
agy "1 + 1 を計算して、結果だけ返して"
最後の一行が返ってくれば疎通完了です。agy auth login はブラウザを開いてトークンを ~/.antigravity/ に保存します。旧 CLI で GEMINI_API_KEY を環境変数に置いていた人は、ここで方式が変わる点に注意してください。詳細は後述します。
旧コマンドと agy の対応を表にする
移行で一番時間を使ったのは、コマンドの言い換えでした。一対一で置き換えられるものと、考え方ごと変わるものが混在しています。私が手元で作った対応表を共有します。
単発のプロンプト実行: gemini -p "..." → agy "..."(-p は不要、引数がそのままプロンプト)
標準入力を渡す: cat file | gemini -p "要約して" → cat file | agy "要約して"(パイプはそのまま通る)
非対話・CI 向け: gemini --yolo 相当 → agy --headless --approve all(自動承認を明示する設計に変わった)
出力を素のテキストに: gemini --format text → agy --quiet(装飾を落として stdout のみ)
モデル指定: gemini -m gemini-2.5-flash → agy --model flash(エイリアス指定が基本、フル名も可)
一対一に見えますが、--headless と --approve の組み合わせだけは設計思想の変化を含んでいます。旧 CLI の --yolo が「全部許可」の雑なスイッチだったのに対し、agy は承認の粒度を引数で表現させます。CI で使うなら、ここを曖昧にしたまま流すのは避けたほうが安全です。
スクリプトと CI の書き換え
棚卸しした11箇所を、上の対応表に沿って機械的に書き換えていきます。シェル関数はこんな具合です。
# Before(Gemini CLI 依存)
draft_commit () {
git diff --staged | gemini -p "この差分のコミットメッセージを日本語で1行" --format text
}
# After(Antigravity CLI)
draft_commit () {
git diff --staged | agy --quiet "この差分のコミットメッセージを日本語で1行"
}
CI のステップで一点ハマりました。GitHub Actions のような非 TTY 環境で agy をそのまま呼ぶと、承認待ちで無言のままハングします。旧 CLI では --yolo だけで素通りしていたぶん、ここはプロダクションで踏みやすい罠です。
# .github/workflows/draft.yml の該当ステップ
- name : Generate release note draft
env :
ANTIGRAVITY_TOKEN : ${{ secrets.ANTIGRAVITY_TOKEN }}
run : |
# 非対話を明示しないと承認待ちでハングする
cat CHANGELOG_RAW.md | agy --headless --approve all --quiet \
"このリリースノート草案を、敬体で読みやすく整えて" > release_note.md
CI ではトークンを環境変数(ANTIGRAVITY_TOKEN)で渡し、agy auth login のブラウザ認可は使えません。この二系統(ローカルはブラウザ認可、CI は環境変数トークン)を最初に分けて設計しておくと、後の混乱を避けられます。
認証とクォータの落とし穴
ここが移行で最も静かに事故る場所でした。三点だけ、先に知っておくと安全です。
旧 GEMINI_API_KEY は agy のローカル認可には使われません。ローカルは agy auth login のトークン、CI は ANTIGRAVITY_TOKEN と、認証経路が分かれます。古い環境変数を残したままだと「設定したのに効かない」と悩みます。
クォータの数え方が共有されます。agy のデスクトップアプリ・CLI・SDK は同じエージェントハーネスを共有するため、複数のエージェントを並行で走らせると上限に早く届きます。私は4サイトの運用でバックグラウンドのエージェントを同時に回した日に、昼前でレート上限に当たりました。並列度を欲張らないことが、結果的に一日を通した処理量を増やします。
--approve all は便利ですが、ファイル書き込みやコマンド実行まで自動承認します。CI のサンドボックス内に閉じているか必ず確認してください。ローカルの作業ディレクトリで気軽に付けると、意図しない変更を黙って通します。
体感速度を実測してみる
「Go 製で速い」という触れ込みは、数字で確かめないと判断材料になりません。私の環境(M2・有線接続)で、起動からプロンプト応答開始までを hyperfine で測りました。
# 起動オーバーヘッドだけを比較(モデル応答は含めない軽いプロンプト)
hyperfine --warmup 3 \
'echo "ok とだけ返して" | agy --quiet' \
'echo "ok とだけ返して" | gemini -p "" --format text'
私の手元では、agy の起動オーバーヘッドは旧 CLI のおよそ40%でした。秒数にすると体感で 1 秒弱の短縮で、単発では小さく感じます。ただし1日に数十回叩くスクリプト群では、この差が積み上がります。Node のランタイム起動が消えたぶんが効いている、という理解です。
数字以上に効いたのは、依存の安定でした。旧 CLI は Node のバージョン差でたまに警告を吐きましたが、単一バイナリの agy は環境を選びません。移行のたびに npm を疑う時間が消えたことのほうが、私には大きな改善でした。
私の移行判断
結論として、私は締切を待たずに移行を済ませました。理由は三つです。
第一に、影響範囲が grep で確定できる程度に小さく、書き換えが機械的だったこと。第二に、6/18 を過ぎてから慌てると、自動投稿パイプラインのような毎日動く仕組みが止まるリスクがあること。第三に、単一バイナリ化で運用の不確実性が一段減ったことです。
逆に、いま急がなくてよい人もいます。gemini を対話的にしか使っておらず、CI やスクリプトに埋め込んでいないなら、慌てる必要はありません。その場合でも、agy を入れて疎通だけ通しておけば、締切当日に手が止まることはなくなります。
移行は派手な作業ではありませんが、毎日動く仕組みほど「止まらないこと」そのものが価値です。まずは rg で自分の依存を一度だけ可視化してみてください。そこから先は、思っているより静かに片付きます。