WSL×Antigravityの基礎:なぜいま注目されるのか

メリット
- WindowsでLinuxのツールチェーンを直接動かせる
- GPUも使え、レンダリングが遅くならない
- 一度設定すれば自動化可能(socatでトンネル自動張り)
×デメリット
- 再起動後にWSLのIPが変わるとポートプロキシの更新が必要
- 初回設定(IP取得・netsh設定)が初心者にはハマりやすい
WSL2環境でAntigravityを使うメリット
室谷代表取締役WSL2とAntigravityの組み合わせ、海外の開発現場ではもうスタンダードになりつつあるんですよね。
テキトー教師.AI認定講師たしかに。最初に「なんでWSLなんですか」って聞かれるんですけど、WindowsでLinuxのツールチェーンを直接動かせるのが大きいですよね。
室谷代表取締役そう。AntigravityのBrowser SubagentってChromeのリモートデバッグを使うんですが、WSL2経由でWindows側のChromeを叩けるのがミソです。
テキトー教師.AI認定講師GPUも使えるし、レンダリングが遅くならない。
WindowsとLinuxのシームレスな連携がもたらす開発効率
室谷代表取締役肝になるのがポートフォワーディングの設定ですね。WSLのゲートウェイIPを取得して、Windows側でnetshでポートプロキシを張る。
テキトー教師.AI認定講師ここ、初めてだとハマるポイントです。
室谷代表取締役ただ一度設定してしまえば、あとは自動化できる。
テキトー教師.AI認定講師socatを使ってWSL起動時に自動でトンネルを張る仕組みを.bashrcに仕込んでおけば、毎回手動でやる必要がなくなります。
AntigravityがWSLで動作する仕組み
室谷代表取締役動作の仕組みをざっくり言うと、WSLからWindowsのChromeを/mnt経由で参照して、CDPポート9222でやりとりする形です。
テキトー教師.AI認定講師Chrome Binary Pathを/mnt/c/Program Files/...に指定して、ポートを合わせる。これでWSL上のAntigravityがWindowsのChromeを操作できる。
室谷代表取締役再起動後にWSLのIPが変わるときがあるので、その場合はPowerShellでポートプロキシの設定を更新する必要がある。
テキトー教師.AI認定講師そこだけ注意すれば、非常に安定して動きます。
ブラウザ自動化を実現する「Antigravity WSL Bridge」の設定
- 1WSL ゲートウェイ IP を取得WSL 内で `ip route show` を実行し、ゲートウェイ IP を調べる。
- 2Windows 側のポートプロキシルール追加PowerShell 管理者権限で `netsh interface portproxy add v4tov4 listenport=9222 listenaddress=<ゲートウェイIP> connectport=9222 connectaddress=127.0.0.1` を実行。
- 3ファイアウォールルール追加同じく PowerShell で `netsh advfirewall firewall add rule name="WSL Bridge" dir=in action=allow protocol=TCP localport=9222` を実行。
- 4WSL 側の socat 自動転送設定`.bashrc` にスクリプトを追加し、シェル起動時に socat が自動起動するようにする。既に動作中ならスキップ。
- 5Antigravity 設定画面で Chrome パスとポートを入力設定画面で Chrome のパスとポート番号(9222)を指定する。
Windows ChromeをWSLから操作するためのポートフォワーディング
室谷代表取締役Antigravity のブラウザサブエージェントを WSL で動かすとき、一番のハードルはネットワークの隔離なんですよね。WSL 側から直接 Windows の Chrome を掴めないので、ポートフォワーディングで橋渡しする必要がある。
テキトー教師.AI認定講師そうなんです。最初に「IP アドレスが違うから動かない」って悩む人が多い。
WSL のゲートウェイ IP を調べて、Windows 側で 9222 ポートを listen させる設定を一回やれば通るんですが。
WSL のゲートウェイ IP を調べて、Windows 側で 9222 ポートを listen させる設定を一回やれば通るんですが。
室谷代表取締役この一回の設定で毎回の手間がゼロになる。開発者の時給換算すると、30分の作業で何時間もの自動化が動くようになる。
ROI は半端ないですよ。
ROI は半端ないですよ。
テキトー教師.AI認定講師しかも GPU レンダリングをそのまま使えるから、Linux でエミュレートするより遥かに速い。ブラウザの動作が重くて困る、という人はまずこのブリッジを試す価値があります。
PowerShellとWSL側の初期設定手順
室谷代表取締役手順自体は単純で、PowerShell 管理者権限で 3 つのコマンドを打つだけ。まず WSL 内で
ip route show からゲートウェイ IP を取得して、その IP を listenaddress に指定した netsh の portproxy ルールを追加する。
テキトー教師.AI認定講師それと同時に、ファイアウォールで 9222 ポートの TCP 受信を許可するルールも必要です。コマンド一発で作れるので、忘れずに。
室谷代表取締役この設定は一度やってしまえば、WSL を再起動しても persistent に残る。ただし、PC を完全再起動すると WSL の IP が変わることがある。
その時は新しい IP で
その時は新しい IP で
netsh interface portproxy set を叩き直すだけ。
テキトー教師.AI認定講師そこまで込みで「ワンタイムセットアップ」と割り切るのがコツですね。10 分もかからない作業です。
socatによる自動トンネリングの仕組み
室谷代表取締役Windows 側の設定が終わったら、次は WSL 側でリクエストを自動転送する仕組みが必要。socat を使って、WSL の 9222 ポートに来たトラフィックを Windows の localhost:9222 に飛ばす。
テキトー教師.AI認定講師これ、シェルの起動時に自動で socat が立ち上がるように
.bashrc にスクリプトを仕込むのがポイントです。既に動いてたら pgrep でスキップする判定も入ってて、親切設計。
室谷代表取締役コードを見ると、ゲートウェイ IP を動的に取得して socat の接続先に使ってる。PC 再起動で IP が変わっても、自動で追従するから、実運用で困らない。
テキトー教師.AI認定講師だから「環境構築が面倒」と敬遠する人がいるけど、この仕組みを一度理解すれば、あとは Chrome のパスとポート番号を Antigravity の設定画面に入れるだけで動くようになります。
Antigravity IDEとWSLの連携設定
- 1Chrome Binary Pathの指定Antigravity SettingsのBrowser Subagentでパスを `/mnt/c/Program Files/Google/Chrome/Application/chrome.exe` に設定。WindowsのChromeを直接使うことでGPUレンダリングを活用。Linux版Chromeはインストールしないこと。
- 2CDPポートの設定と接続確認AntigravityでBrowser CDP Portを9222に設定。PowerShell管理者で `netsh interface portproxy add v4tov4 listenport=9222 listenaddress=WSLのゲートウェイIP connectport=9222 connectaddress=127.0.0.1` を実行。またはsocatでWSL起動時に自動トンネル。確認は `curl http://localhost:9222/json/version`。
- 3DevContainer環境での活用コンテナ内からsocatでWSLホストの9222ポートに転送。Dockerのネットワークモードを `host` にするか、`host.docker.internal` を使用。チームではポート転送スクリプトをテンプレート化して配布。
Antigravity SettingsでのChrome Binary Path指定
室谷代表取締役MYUUU の現場でも、WSL上でブラウザ自動化を動かすときの最初の壁がここです。Chrome Binary PathをWindowsネイティブのパスにしないとLinux上の仮想ディスプレイ経由になって遅くなる。
テキトー教師.AI認定講師そう、そこが肝ですね。Antigravity SettingsのBrowser Subagentで指定するパスは
WindowsのChromeを直接使うことでGPUレンダリングが効いて、パフォーマンスが全然違います。
/mnt/c/Program Files/Google/Chrome/Application/chrome.exe。WindowsのChromeを直接使うことでGPUレンダリングが効いて、パフォーマンスが全然違います。
室谷代表取締役コストで考えると、この1行の設定で処理速度が倍近く変わるときもある。ROIでいえば即効性のあるチューニングですよ。
テキトー教師.AI認定講師よく聞くのが「Linux版Chromeを入れてしまった」という失敗。WSL上にChromeをインストールすると、レンダリングがソフトウェア処理になって実用的じゃなくなるので注意です。
ブラウザCDPポートの設定と接続確認
テキトー教師.AI認定講師パスが正しくても、CDPポートが開いてないとつながらないんですよね。Antigravity側でBrowser CDP Portを9222に設定したら、Windows側でポートフォワーディングが必要です。
室谷代表取締役具体的には、PowerShell管理者で
netsh interface portproxy add v4tov4 listenport=9222 listenaddress=WSLのゲートウェイIP connectport=9222 connectaddress=127.0.0.1。これでWindows ChromeのリモートデバッグポートがWSLから見えるようになる。
テキトー教師.AI認定講師さらにsocatを使って、WSL起動時に自動でトンネルを張るようにしておくと安心です。~/.bashrcに仕込んでおけば毎回手動でやる必要がなくなります。
室谷代表取締役接続確認は、WSLターミナルで
その場合は
curl http://localhost:9222/json/versionしてレスポンスが返ってくればOK。もし返ってこなければ、IPアドレスが再起動で変わってるケースが多い。その場合は
ip route showで新しいIPを取得してポートプロキシを更新する。DevContainer環境でのAntigravity活用法
テキトー教師.AI認定講師チーム開発だとDevContainerを使いたいという要望も多いです。コンテナ内でAntigravityのブラウザ自動化を動かす場合も、基本的にはWSLホストを経由してWindows Chromeにアクセスする形になります。
室谷代表取締役DevContainerの利点は環境再現性。各開発者が同じ設定で動くので、初心者のセットアップ時間が大幅に削れる。
コンテナ内からは
コンテナ内からは
socatでWSLホストの9222ポートに転送すれば、Antigravityはローカルと同じ感覚で使えます。
テキトー教師.AI認定講師ただし、コンテナからホストのポートにアクセスするには、Dockerのネットワークモードを
hostにするか、host.docker.internalを使う必要があります。ここは環境によってハマるポイントなので、事前にドキュメント化しておくとスムーズですね。
室谷代表取締役うちのチームではDevContainerテンプレートにポート転送のスクリプトを組み込んで配布してます。そうすれば、新しいメンバーが来ても即戦力になる。
初期投資は少しかかるけど、長期的なコスト削減になるんで。
初期投資は少しかかるけど、長期的なコスト削減になるんで。
WSLターミナル・Ubuntu環境でのAntigravity運用
WSL UbuntuへのAntigravity CLI導入
室谷代表取締役WSLでAntigravity使うなら、まずCLIをUbuntu側に入れるところからですね。USの現場ではもうWSLがデフォルト環境になってるチームも多くて、導入コストを時給換算すると1時間ちょっとで回収できる計算です。
テキトー教師.AI認定講師たしかに。ただ初めての人は「Linux用バイナリを落とすのかWindows用か」で迷うことが多いです。
AntigravityはLinuxバイナリを公式サイトから取ってくるだけで、あとはパスを通せば動きます。ここでつまずくと後々響くので、最初の設定が肝心ですね。
AntigravityはLinuxバイナリを公式サイトから取ってくるだけで、あとはパスを通せば動きます。ここでつまずくと後々響くので、最初の設定が肝心ですね。
室谷代表取締役そうなんですよ。あとsocatも必須で入れておかないと、後のブラウザ連携で手間が増えます。
ターミナルを介したAIエージェント操作
テキトー教師.AI認定講師ターミナルからAIエージェントを操作するときは、ポートフォワーディングの自動化がポイントです。~/.bashrcにsocatの起動スクリプトを仕込めば、ターミナル開くたびにWindowsのChromeとつながります。
室谷代表取締役あれ、ROIで言うとスクリプト書く時間が30分もかからない割に、毎回手動でトンネル張る手間が消えるので大きいですよね。MYUUUの現場でも、この自動化入れてからブラウザ操作の成功率がグッと上がりました。
テキトー教師.AI認定講師そうそう、最初は手動でやってた人が「毎回IP変わるのに気づかない」ってハマるパターンが多いんです。動的IP対応のスクリプトを~/.bashrcに書いておけば、再起動後も安心です。
ファイルシステムの権限とマウント設定
室谷代表取締役ここが地味に厄介で、/mnt/c経由でWindowsのChromeを呼ぶとき、権限が不足してて実行できないケースがあります。WSLのデフォルトマウントオプションが原因の場合がある。
テキトー教師.AI認定講師ええ。あとChromeのプロファイルがデフォルトだとAntigravityが拡張機能をインストールできずに「Download error」で止まる例もよく見ます。
新しいプロファイルを明示的に指定すると解決するんですが、最初は気づきにくいですね。
新しいプロファイルを明示的に指定すると解決するんですが、最初は気づきにくいですね。
室谷代表取締役その辺、設定ファイルでプロファイルパスを指定できるので、チームでテンプレート化しておくとコスト削減になります。特に複数人で同じ環境を共有する場合は必須です。
トラブルシューティング:よくある不具合と解決策
Chrome拡張インストールエラー(Download interrupted)
テキトー教師.AI認定講師これ、僕も最初にハマりました。AntigravityのBrowser SubagentがChrome拡張をインストールしようとしたときに「Download error: Download interrupted」って出るんですよね。
室谷代表取締役あれ、よくあるんですよ。コミュニティでも結構話題になってて、原因はChromeのプロファイル絡みらしいです。
Antigravityが新しいプロファイルを作成せずに、デフォルトプロファイルに書き込もうとして失敗するケースが多い。
Antigravityが新しいプロファイルを作成せずに、デフォルトプロファイルに書き込もうとして失敗するケースが多い。
テキトー教師.AI認定講師そう、新しいChromeプロファイルを事前に作って、Antigravityの設定でそのプロファイルを指定してやると直るみたいです。具体的には、WindowsのChromeを手動で起動して新しいプロファイルを作成し、そのパスをAntigravityのBrowser Subagent設定に指定する。
ロケットスタートじゃないですが、これでスッと通ります。
ロケットスタートじゃないですが、これでスッと通ります。
室谷代表取締役結果的に工数としては5分もかからない。ROIで考えると、Macに戻るよりはるかに価値がある判断ですね。
WSL再起動後のIP変更を自動で修正する方法
室谷代表取締役この構成で一番面倒なのが、PC再起動後にWSLのゲートウェイIPが変わっちゃうことですよね。Windows側のポートプロキシルールを毎回手動で更新するのが地味に効く。
テキトー教師.AI認定講師たしかに。ただ、~/.bashrcにIPを動的取得するスクリプトを仕込んでおけば、確認は一発で済みます。
でもルールの更新自体はPowerShellを管理者で実行しないといけないので、完全自動化はまだハードルがある。
でもルールの更新自体はPowerShellを管理者で実行しないといけないので、完全自動化はまだハードルがある。
室谷代表取締役そこをどうにかしたいところですね。今のところは、再起動後にWSLで
現場では「起動したら最初にこれをやる」をルーティン化してます。
ip route showでIPを確認して、Windows側でnetsh interface portproxy set v4tov4を叩く、という流れが確実です。現場では「起動したら最初にこれをやる」をルーティン化してます。
テキトー教師.AI認定講師そのルーティンを覚えてしまえばあとは楽ですよ。むしろ、envをスクリプト化して、バッチファイルでゴリ押しする人もいるみたいですが。
ファイアウォールとポートプロキシの再確認手順
テキトー教師.AI認定講師接続が突然切れたとき、まず疑うのがファイアウォールとポートプロキシの設定です。特にWindows Update後の再起動で、ファイアウォールルールが吹き飛ぶことがあります。
室谷代表取締役そのパターン、結構聞きますね。初回設定時にPowerShellで
New-NetFirewallRuleを叩いてChrome Remote Debug用のルールを入れておくんですが、大型アップデートでリセットされることがある。
テキトー教師.AI認定講師確認手順としては、PowerShell Adminで
ポートプロキシも
Get-NetFirewallRule -DisplayName "Chrome Remote Debug"を実行してルールが存在するか確認。なければ再度New-NetFirewallRuleで追加。ポートプロキシも
netsh interface portproxy show allで設定をリスト表示して、listenaddressが現在のWSL IPと一致しているか見るといいです。
室谷代表取締役これを週一でチェックする習慣をつけると、トラブルに巻き込まれにくくなりますね。特にチーム開発では、環境差異をなくす意味でも手順書化しておいた方がいい。
さらに一歩先へ:チーム開発とパフォーマンス最適化
WSL2のパフォーマンス比較(VS Code vs Antigravity)
テキトー教師.AI認定講師VS Code RemoteでWSL使うのと、Antigravity IDEで直接WSLにつなぐのと、体感どれくらい違うんですか?
室谷代表取締役明らかにAntigravityの方が速いですね。VS Codeはファイルシステムの変換にオーバーヘッドがあるんですが、AntigravityはWSLのLinuxネイティブのプロセスをそのまま使う設計なんで、IO待ちが少ない。
チームで使うと、その差が積もって生産性に効くんですよ。
チームで使うと、その差が積もって生産性に効くんですよ。
テキトー教師.AI認定講師なるほど。特にブラウザ自動化を走らせるときは、GPUリソースの扱いも影響しますしね。
複数WSLディストリの管理自動化
テキトー教師.AI認定講師プロジェクトごとにWSLディストリを分けてる現場、結構ありますよね。それぞれにAntigravityのセットアップをするのは面倒じゃないですか?
室谷代表取締役そこは自動化しましょう。設定スクリプトを共通化して、各ディストリの.bashrcにsocatの起動処理を仕込んでおけば、一度やればあとは勝手に動く。
ROIで考えると、初期の数時間でその後ずっと節約できる計算です。
ROIで考えると、初期の数時間でその後ずっと節約できる計算です。
テキトー教師.AI認定講師たしかに、ポートフォワーディングのルールも一度PowerShellで設定すれば、WSL側のIPが変わってもスクリプト内で動的に取得してくれるので、再起動後も自動でつながりますね。
企業環境での標準化とセキュリティ考慮
テキトー教師.AI認定講師チーム導入となると、セキュリティポリシーとの兼ね合いが気になります。Chromeのリモートデバッグポートを開けるのは結構抵抗ある現場も……
室谷代表取締役そこはWindows Firewallのルールをグループポリシーで配布すれば、全員同じ設定で運用できます。社内の許可リストに9222ポートを入れておけば、管理も楽。
結局、個々にやらせると差異が出るので、標準化してしまった方がトータルコストは低いんですよね。
結局、個々にやらせると差異が出るので、標準化してしまった方がトータルコストは低いんですよね。
テキトー教師.AI認定講師あと、ChromeのプロファイルをAntigravity専用に分ける方法も、Gistで共有されてました。デフォルトプロファイルに拡張を入れずに済むので、環境を壊さずに使えるのがいいですね。
よくある質問
Q1. Windows HomeエディションでもAntigravity WSLは使えますか?
室谷代表取締役HomeでもWSL2は使えるので、基本的には問題ないはずです。ただ、Hyper-V関連の機能制限があるケースもあるので、公式の対応表は一応確認したほうがいいですね。
テキトー教師.AI認定講師たしかに、Pro前提の記事が多いですが、Homeでも工夫すれば動くという声を現場で聞きます。
Q2. ブラウザ自動化のスクリプトはPython以外の言語でも書けますか?
室谷代表取締役公式サンプルはPythonが多いですが、APIの仕様さえわかればcurlでも動くんで、言語は何でもいけますよ。
テキトー教師.AI認定講師ただ、Pythonのライブラリが一番整っている印象です。RustやTypeScriptで書いてる猛者もいますけどね。
Q3. Antigravity WSL Bridgeを使わなくても、WSL内だけでブラウザ自動化はできますか?
室谷代表取締役WSL内だけでやるなら、ヘッドレスブラウザをWSLに直接入れて動かす方法もあります。ただ、実際のブラウザを操作したいならBridgeが必要です。
テキトー教師.AI認定講師用途次第ですね。CIで完全に閉じた環境ならWSL内で完結できますが、デバッグにはBridgeのほうが便利です。
Q4. チーム開発で環境の差異を吸収するにはどうすればいいですか?
室谷代表取締役.devcontainerやAnsibleで環境をコード化するのが王道です。Antigravity自体は設定が軽いので、リポジトリに設定ファイルを入れておくだけでもある程度カバーできます。
テキトー教師.AI認定講師チームメンバー全員が同じWSLバージョンを使うことを意識するだけでもトラブルが減りますね。
Q5. Antigravity IDEじゃなくてVSCodeでも連携できますか?
室谷代表取締役もちろんです。Remote-WSLプラグインでそのまま使えます。
Antigravity独自の機能はIDE限定のものもありますが、基本はエディタを選びません。
Antigravity独自の機能はIDE限定のものもありますが、基本はエディタを選びません。
テキトー教師.AI認定講師VSCode派の人は多いので、そちらでも十分快適に使えると思います。
まとめ
室谷代表取締役WSLとAntigravityの組み合わせ、環境構築さえ終わればブラウザ自動化まで一気に進められるのが魅力ですよね。
テキトー教師.AI認定講師そうですね。最初のBridge設定だけハードルがありますが、そこさえクリアすれば後はスムーズです。
室谷代表取締役チーム開発に持ち込むなら、設定の標準化と定期的なメンテナンスがカギです。一度仕組みを作れば、テスト自動化の工数が大幅に減ります。
テキトー教師.AI認定講師まだ試してない方は、まずはWSL2の環境を整えて、小さなスクリプトから始めてみるのがおすすめです。
室谷代表取締役そうですね。では、実際に動かしながら詰まったところはまた次の機会に。
