はじめに(これまでの話)
VSCodeでGitHub Copilotを使ったバイブコーディング(Vibe Coding)を始めてみたものの、「ちょっと割高だな……」と感じてツールの乗り換えを模索していました。
VSCodeの拡張機能版Antigravityを試してみた時期もありましたが、UIの馴染みや挙動がいまひとつしっくりこず、最終的に 「Antigravity IDE」+「Gemini AI Pro」 の環境に落ち着きました。動作も軽快でかなり快適です。
ただ、使っていく中でどうしても気になっていたのが、チャット欄で 「Enterキーを押すと改行にならずに即送信されてしまう」 という仕様でした。誤送信が多発して地味にストレスだったので、Antigravityくん自身にIDEのソースを解析させ、Enter改行化パッチを作ってもらって解決 しました。これが前回のお話。
そして今回はその第2弾です。
使えば使うほど、「ここがもう少し便利だったら最高なのに……」というUIの惜しい部分が出てきました。
そこで今回も、「不満があるなら、AI自身に本体を改造してもらえばいいじゃない」ということで、Antigravity IDEにセッション管理まわりの拡張パッチを自作・適用してもらいました。
今回解決したかった課題(Antigravityの惜しいところ)
Antigravity IDEはエージェント機能やコード生成が非常に強力な反面、サイドパネルのチャットUIに関してはまだ発展途上な部分があります。特に気になっていたのが以下の点です:
-
過去セッションのリストが常時見えない
過去の会話履歴を呼び出すには、上部のボタンからダイアログ(Picker)を開く必要があり、パッと過去の作業に戻りにくい。 -
重要なセッションの「ピン留め」ができない
タスクごとにセッションを分けていると、重要な会話が新しいセッションに押し流されて埋もれてしまう。 -
セッションのタイトル変更(リネーム)ができない
自動生成される要約タイトルや「無題のセッション」のままになりがちで、後から一覧を見ても「どのセッションで何をやっていたか」が分かりにくい。 -
キーボードだけで素早く切り替えたい
マウスに手を伸ばさず、チャット入力欄からサクッと過去セッションを検索・選択したい。
「公式がアップデートで対応してくれるのを待つ」のも手ですが、いつになるか分かりません。バイブコーディングの真骨頂は、自分自身が使っているツールすらAIと二人三脚でハックできることです。
AIに実装してもらった新機能たち
Antigravityに「IDEのフロントエンドソース(workbench.desktop.main.js)を解析して、これらの機能を組み込むパッチを書いて」と依頼したところ、想像以上にリッチなUIコンポーネントとコマンドが生えてきました。
1. セッション一覧ドロワー(Session Drawer)
チャット上部に、アコーディオン形式で開閉するセッション一覧バーを追加しました。
- インクリメンタル検索: 検索窓に入力するだけでセッションを即座に絞り込み
-
キーボードナビゲーション:
↑/↓キーで選択し、Enterで決定して切り替え、Escで閉じる - 相対時間表示: 「たった今」「5分前」「2日前」など直感的な更新時間を表示
- クイック新規作成: ヘッダーから1クリックで新しいセッションを開始可能
2. セッションのピン留め(Pin)
各セッションの右側にピン留めボタン(Keepアイコン)を設置。
- ピン留めしたセッションは金色アイコンで一覧の最上部に固定
- コロンコマンド
:pin/:p、解除は:unpin/:upでも実行可能
3. セッション名リネーム(:rename コマンド)
チャット入力欄に :rename <新しい名前>(短縮: :ren <名前>)と打ち込んでEnterを押すと、AIへのメッセージ送信を行わずに、クライアント側からGoogle同期バックエンド(Unified State Sync)と画面のReduxステートを直接更新してタイトルを即座に書き換えます。
- 引数なしで
:renameと打った場合は、専用の入力ダイアログ(モーダル)がポップアップする親切設計です。
4. 改行パッチとのシームレスな統合
通常のメッセージ入力時は「Enter で改行 / Ctrl + Enter で送信」ですが、:resume や :rename などのコロンコマンドは通常の Enter 1発で即時実行されるようにハンドラを調整してもらいました。
どうやって実現しているのか?(技術的な裏側)
Antigravity IDEの実体はElectron(VSCodeベース)で構築されています。
本体のコアロジックは以下のファイルにバンドルされています:
- Windows:
%LOCALAPPDATA%\Programs\Antigravity IDE\resources\app\out\vs\workbench\workbench.desktop.main.js
ミニファイ(難読化・圧縮)された巨大なJavaScriptファイルですが、AIに検索・解析させると、内部で使われているReactコンポーネント(ヘッダー部分やチャット入力欄)やReduxフック、Google同期用のRPC関数(updateConversationAnnotations や trajectorySummariesProvider など)を特定してくれます。
あとは、Pythonスクリプトを使って以下を自動実行させています:
-
元ファイルのバックアップ作成(
.orig.bak) -
正規表現と文字列置換によるパッチ注入
- チャット入力のKeydownイベントハンドラ差し替え
- コロンコマンドのインターセプト処理追加
- ドロワーUIコンポーネント(React)の定義とマウント
-
構文チェック(
node --checkで構文エラーがないか自動検証) -
product.jsonのチェックサム更新
(※VSCode系特有の「インストールが壊れている可能性があります」という警告ダイアログを防ぐため、sha256チェックサムを再計算して更新)
IDEのアップデートが来るとファイルが上書きされてパッチが消えてしまいますが、「おぼえがき(設計書・スクリプト)」をリポジトリに残しておけば、次回以降もAIに「このおぼえがきに従ってパッチ当てて」と頼むだけで数十秒で復元できます。
今回の修正はパッチ量が多いので、gistにまとめときました。これを持っていってお手元の環境のAntigravity IDEのAIに実行させれば、同様の機能が実装されます。
gist
開発チームにフィードバックを送った話
もちろん、こうして本体ファイルをモンキーパッチで書き換えるのは一時的な自衛手段(ハック)であり、公式機能として正式に実装されるのが一番健全です。
そこで、今回作成した機能要件や仕様のまとめをAntigravity自身に綺麗な英語のIssue/フィードバック文として清書してもらい、開発チーム(Google DeepMind / Antigravity Team)へフィードバックとして送信しました。
- セッションの常時一覧表示とクイック切り替え(ドロワーやパレット形式)
- セッションのピン留め・お気に入り機能
- セッションのリネーム機能
- 改行/送信キーバインドのコンフィグ化
自分たちで実際に動くプロトタイプを作って「この機能がどれだけ作業効率を上げるか」を体感した上で送るフィードバックは、説得力も段違いです。今後のアップデートで公式採用されたら嬉しいですね。
まとめ:ツールそのものをAIに作らせるバイブコーディング
「ツールに不満があったら、ツールを作る側に要望を投げてじっと待つ」のではなく、「AIにツール自体のソースを読ませて、その場で自分好みに改造させる」。
これこそが、AI時代におけるバイブコーディングの最も面白い体験だと感じています。手元の作業環境がどんどん自分の手に馴染む道具へと進化していく感覚は格別です。
もしAntigravity IDEを使っていて同じような不満(改行やセッション管理)を感じている方がいたら、ぜひAIアシスタントと一緒に「IDE自体のプチ改造」に挑戦してみてください!
この記事も例によってAntigravityのGeminiに書いてもらいました。AIスゲえな。
