メインコンテンツへスキップ
見出し画像

Google Antigravityの紹介~AIエージェント主導IDE~


    1.概要

     GoogleのAIエージェント主導IDE "Google Antigravitye"を紹介します。

    1-1.Google Antigravitye とは 

      Google Antigravityは、より高いタスク指向のレベルで作業できるように設計された新しいエージェント開発プラットフォームです。
     Antigravityは信頼、自律性、フィードバック、自己改善という4つの中核的な理念を持っています。

    • 信頼:エージェントによる作業に関するコンテキストを、より自然なタスクレベルの抽象度で提供し、ユーザーがその信頼を得るために必要かつ十分な成果物と検証結果のセットを提供

    • 自律性:エージェントと同期的に作業。ユーザーがより非同期的に対話可能

    • フィードバック:直感的な非同期ユーザーフィードバックを可能

    • 自己改善:知識管理により、エージェントは過去の作業から学習することができる

     オープンソースの Visual Studio Code(VS Code)をフォークしていますが、「エージェント・ファースト」的な設計思想になっています。

    • 複雑なマルチツールソフトウェアタスクをエージェントに委任

    • UIの変更を要求することで、より高いタスク指向のレベルで操作

    • エージェントをバックグラウンドにディスパッチ

     モデルは2025年11月19日にリリースされたGemini3.0も使用可能です。

    画像
    https://blog.google/technology/developers/gemini-3-developers/

    Meet Google Antigravity, your new agentic development platform.

    An evolution of the IDE, it's built to help you:
    - Orchestrate agents operating at a higher, task-oriented level
    - Run parallel tasks with agents across workspaces
    - Build anything with Gemini 3 Pro. pic.twitter.com/GCwHVJSU1O

    — Google Antigravity (@antigravity) November 18, 2025

    1-2.Google Antigravityでできること

     Antigravityの特徴は以下の通り。

    画像
    https://antigravity.google/docs/home
    • Manager View:エディタの「裏側」で動く複数のエージェントを可視化・管理する画面/プロマネのようにタスクを割り振りできる。

    • Artifacts:エージェントが生成した成果物を即座に別ウィンドウでプレビューできる

    • Browser: エージェントが自律的にブラウザを操作し、ドキュメントの参照やWebアプリの動作検証(E2Eテストなど)を行う

    • Nano Banana Proによる画像生成:

    • API Liberation(API連携): 外部サービスのAPIと直接通信し、データの取得や投稿を自動化

    • Vibe Coding:「自然言語」と「音声」だけで開発

    コラム:AntigravityのArtifactsの類似機能
     こちらの機能はCursorのComposerやClaudeのArtifactsに近い機能みたいです。私はCursor/Claudeは触った程度のため知りませんでしたが、普段使いされている方は簡単に移行できると思います。

    1-3.他ツールとの比較

     IDEで比較するとGitHub Copilot, WindsurfやCursorなど多くの類似ツールがあります。既存ツールは”AIアシスタント”寄りでした。
     Antigravityが”AIエージェント管理ツール”や”Vibe Coding(音声入力でエージェントを自走)”になれるなら一線を画すことになると思います。

    画像

    1-4.プラン

     2025年12月7日時点では、Google Antigravityはパブリックプレビューでのみご利用いただけます。

    • すべてのプランに含まれるもの:

      • コアエージェントモデルとして Gemini 3 Pro およびその他の提供されている Vertex Model Garden モデルの使用

      • 無制限のタブ補完

      • 無制限のコマンドリクエスト

      • エージェントマネージャーやブラウザ統合など、すべての製品機能へのアクセス

    • Google AI Ultraをご利用のユーザー:

      • 最も高水準で寛大なレート制限

      • 5時間ごとにクオータがリフレッシュ

    • Google AI Proをご利用のユーザー:

      • 高水準で寛大なレート制限

      • 5時間ごとにクオータがリフレッシュ

    • Google AI プランをご利用でないユーザー:

      • 意味のあるレート制限

      • 毎週クオータがリフレッシュ

    • 現在サポートされていないもの:

      • 追加のレート制限のための持ち込みキー(Bring-your-own-key)または持ち込みエンドポイント(bring-your-own-endpoint)

      • 組織向けティア(セルフサービスまたは契約によるもの)


    2.環境構築

     Antigravityの環境を作ります。事前に「Chrome ウェブブラウザ」と「Gmail アカウント」が必要です。

    2-1.インストール

     サイトから「Antigravity」をダウンロードし、解凍/インストール/起動します。

    画像
    図 ダウンロード
    画像
    図 セットアップ画面

     インストールの流れは以下の通り。基本的に全デフォで進めました。

    1. 「Next」をクリック

    2. 設定のインポートで「Start fresh」を選択し、「Next」をクリック

    3. エディターテーマで「Dark」を選択し、「Next」をクリック

    4. エージェントの使い方はデフォルトのまま「Next」をクリック

    5. エディタの設定はデフォルトのまま「Next」をクリック

    6. Googleアカウントにログイン

    7. 利用規約を確認し、「Next」をクリック

    画像
    図 設定の流れ

    【参考:エージェントの使い方の画面】
     ターミナル実行ポリシーは、エージェントにターミナルでコマンド(アプリケーション/ツール)を実行する機能を与えることです。こちらには 3 つのオプションがあります。

    • Off: ターミナル コマンドを自動実行しない(構成可能な許可リストにあるコマンドを除く)

    • Auto: エージェントは、指定されたターミナル コマンドを自動実行するかどうかを決定します。権限の取得が必要な場合は、判断してユーザーに権限を求めます。

    • Turbo: 常にターミナル コマンドを自動実行する(構成可能な拒否リストにあるコマンドを除く)

     レビュー ポリシーは、エージェントはタスクを実行する際に、さまざまなアーティファクト(タスクプラン、実装プランなど)を作成します。審査ポリシーは、審査が必要かどうかを判断するユーザーを決定できるように設定されています。常に確認するか、エージェントに判断を任せるか。そのため、ここでも 3 つのオプションがあります。

    • Always Proceed: エージェントがレビューをリクエストしない

    • Agent Decides: エージェントがレビューを求めるタイミングを決定

    • Request Review: エージェントが常にレビューを求める

     上記を考慮したうえで、4 つのオプションがあり、これらのオプションは、ターミナルの実行ポリシーの特定のプリセットであり、そのうち 3 つはレビュー ポリシー、4 つ目は完全にカスタム制御できるオプションです。

    • エージェント主導型の開発

    • エージェント支援開発

    • レビュー駆動開発

    • カスタム構成

    画像
    図 エージェントの使い方の画面

    【参考:エディタの設定画面】

    画像
    図 エディタの設定画面

    2-2.IDEの拡張機能

     VS Codeフォークのため、VS Codeと同様に拡張機能を追加できます。

     とりあえず下記追加します。

    • Python:Python実行用

    • Japanese Language Pack for Visual Studio Code:文字を日本語化

    2-3.Settings調整

     基本的に不要ですが、動作が気になった方はご参照ください。
    設定画面(Settings)は(Windows: Ctrl + , / Mac: Cmd + ,)で開けます。

    【承認ポリシーの確認】
     「エージェントが勝手にコードを書き始めて止まらない」現象が起きる場合は下記を確認します。

    • 設定画面(Settings)を開く(Windows: Ctrl + , / Mac: Cmd + ,)

    • Agentタグから「Review Policy」を確認

    • 設定値を Request Review に変更

    画像

    3.Quickstart:とにかく触る

     Antigravityを起動したら、まず「Open folder」でワークスペースを開きます。私は適当に”test_antigravity”フォルダを作り、これを使用しました。
    ※ワークスペースは下記VS Code記事の説明参照

     資料は下記を参考にしていきます。

    3-1.Editor vs. Manager View

     まずAntigravityでは主に「Agent Manager」と「Editor」の2つの画面があります。Windowsでの切り替えも含めたショートカットは以下の通り。

    • エージェントマネージャーへ切り替え:Ctrl + E

    • エージェントと一緒にコーディング / チャット:Ctrl + L

    • コードをインラインで編集:Ctrl + I

     Agent Manager View

     画面+説明は以下の通り。

    画像
    https://codelabs.developers.google.com/getting-started-google-antigravity?hl=ja#2

     Editor View

     画面+説明は以下の通り。

    画像
    画像

    3-2.hello world.py

     まずはとにかく動作することを確認します。Editorの方で下記を実行しました。

    1. 「Open Folder」をクリックし、フォルダを選択

      1. 私は事前に作成した”test_antigravity”フォルダを使用

    2. Agentパネルに「hello.pyというファイルを作って、"Hello World!" を出力するコードを書いてください」と入力

    3. 「Accept all」をクリック

    4. ▷をクリックする

     これでAIエージェントがファイル作成、コード記載、ターミナル実行までを全てほぼ自動で実行してくれました。

    画像
    画像

    3-3.Agent Mangerを触る1

     Agent Mangerがどんなものか試してみます。まずはAgent MangerでAntigravityのサイトに移動してみます。

     実施フローは以下の通り。

    • Playground にアクセス:Antigravity の Playground 画面を開く

      • チャット欄上に”Playground”と表示される

      • Playground:

        • 新しいワークスペースを設定する手間をかけずに、すぐに会話を開始し、アイデアを探求できる独立したワークスペース

        • PCのHDD/SSDにファイルは保存されずメモリ上だけで動作します。よって、プロジェクトフォルダを汚さずに実験できます

    • タスクを入力:チャット欄に go to antigravity.google と入力し送信

    画像
    • 設定の開始:

      • エージェントが思考後、「ブラウザ設定が必要です」と表示される

      • [設定] (Settings) をクリック

    画像
    • 拡張機能のインストール(初回のみ)

      • ブラウザが起動し、インストールの案内が出る

      • ボタンクリックし、Chrome 拡張機能のインストール画面へ進む

      • ”antigravity browser extension ”をインストール

    画像
    画像
    • 権限の付与

      • Antigravity Agent からタスク実行の許可を求められるので、権限を許可

    • 動作確認

      • 自動的にブラウザが開き、エージェントが antigravity.google へアクセスする様子を確認

      • 最初の画面に戻り、タスク完了のステータスを確認

    画像

    3-4.Agent Mangerを触る2

     Agent Mangerから指定のWorkspacesにREADMEファイルを作成してみます。まずは①3-2.のEditorからCtrl+EでAgentを開くか、②下図の通り「Start conversation」をクリックしWorkspacesを指定します。

    画像

     次にプロンプトで「プロジェクトのルートに README.md を作成して、簡単な説明を日本語で書いてください。」を入力し、実行します。
     結果としてEditor側で新しい README.md が作成させたのを確認できました。

    画像

    4.Quickstart2:他機能を体験

    4-1.Artifacts

     Artifactsとはエージェントが作業を完了させるため、またはその作業内容と思考を人間のユーザーに伝えるために作成する、あらゆるもの(例:ログ、差分表示、アーキテクチャ図、画像、ブラウザ記録、コード差分など)を指します。
     エージェントがより自律的、より長い期間実行できるようになるにつれて、AIがどのように考え、何を実行し、どうなったかを確認することは非常に重要になりますArtifactsは、エージェントが計画モード (Planning mode) の間に生成され、エージェントマネージャー (Agent Manager) とエディター (Editor) の両方のビューに表示されますが、前者はアーティファクトの表示、整理、管理に最適化されています。

    まずは触って実感しています。

    1.エディタ(Editor View)からCtrl + L でチャットパネルを開き、プロンプトを入力します。

    【プロンプト例】
    HTMLとJavaScriptを使って、サイバーパンク風のデザインのデジタル時計を作ってください。Artifactとして表示して。

    2.実行後、チャットパネルには実行ログが表示され、エディタ欄にはartifactsのコメント欄が表示されます。
    "comment on artifacts"のポップアップは"Dismiss"ボタンで消します。

    画像

    3.現時点で成果物であるデジタル時計がプレビューされました。成果物を取り込むには右下の”Accept all”を押します。

    画像

    4.デジタル時計の見た目を変えるため、追加プロンプトを入力します。

    【プロンプト例】
    秒数の表示を赤色にして、もっと文字を大きくして。

    5.チャットパネルに”implementation_plan.md”が表示されるため、「Open」ボタンを押します。

    画像

     内容に問題なければ右上の「Proceed」を押すとAgentが自走します。プレビューに変更後の成果物が出るため、問題なければ”Accept all”を押します。

    画像

    6.最後に成果物を確認します。

    • ファイルの場所を開く: ファイルエクスプローラーorタブで、cyberpunk_clock.html を右クリック

    • メニューから「エクスプローラーで表示する」を選択

    • Workspaceのフォルダが開く(今回はtest_antigravity)

    • ブラウザで開く: 中にある cyberpunk_clock.html をダブルクリック

    画像

     ブラウザで成果物が確認できれば成功です。

    画像

    4-2.Browser

     Antigravity は、Chrome ブラウザを開く、読み取る、制御する能力を備えており、開発中のウェブサイトのテスト、インターネットデータソースの読み取り、および様々なブラウザタスクの自動化を可能にします。

     「気象庁のデータをAPI経由で取得し、ダッシュボード化する」機能を作ってみます。

    1:Browser Agentに仕様書を学習させる
     まず、エージェントに外部ドキュメントを「読みに」行かせます。Editor View(Ctrl + L)を開き、以下を入力します。

    @Browser を使用して、以下の気象庁のデータ仕様を確認してください。 
    URL: https://www.jma.go.jp/jma/kishou/know/xml/pdf/xml_catalogue.pdf (※または任意のAPIドキュメント) 
    このドキュメントに基づいて、Pythonで最新の天気予報を取得する方法を特定してください。
    画像

     実行すると自動でブラウザが開きGUI形式で勝手に動き始めます。適時承認チェックが入るため、確認しながら実行を承認していきます。

    画像
    図 ブラウザが立ち上がる
    画像
    図 頑張ってエラー対応中
    画像
    図 Implementation Planを確認し、Reviewボタンから承認
    画像
    図 色々対応した後に walkthrough.mdがでるので再度Reviewして承認

     成果物が得られました。

    画像
    [get_weather.py]
    import json
    import urllib.request
    from datetime import datetime
    
    def get_jma_forecast():
        # Tokyo area forecast URL
        url = "https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json"
        
        print(f"Fetching weather data from {url}...")
        
        try:
            with urllib.request.urlopen(url) as response:
                data = json.loads(response.read().decode("utf-8"))
        except Exception as e:
            print(f"Error: {e}")
            return
    
        if not data:
            print("No data received.")
            return
    
        # The JSON is a list. The first item usually contains the 3-day forecast.
        forecast_data = data[0]
        
        publishing_office = forecast_data.get("publishingOffice", "Unknown Office")
        report_time = forecast_data.get("reportDatetime", "")
        print(f"\nSource: {publishing_office}")
        print(f"Report Time: {report_time}\n")
    
        # timeSeries contains different types of data (weather, pops, temps)
        time_series = forecast_data.get("timeSeries", [])
        
        # 1. Weather descriptions (weathers)
        if len(time_series) > 0:
            ts_weather = time_series[0]
            dates_weather = ts_weather.get("timeDefines", [])
            
            # Find Tokyo area (130010)
            tokyo_weather = None
            for area in ts_weather.get("areas", []):
                if area["area"]["code"] == "130010":
                    tokyo_weather = area
                    break
            
            if tokyo_weather:
                print("--- Weather Forecast (Tokyo) ---")
                for i, weather in enumerate(tokyo_weather.get("weathers", [])):
                    date_str = dates_weather[i] if i < len(dates_weather) else "Unknown Date"
                    # Format date string for readability
                    try:
                        dt = datetime.fromisoformat(date_str)
                        date_display = dt.strftime("%Y-%m-%d %H:%M")
                    except ValueError:
                        date_display = date_str
                    
                    print(f"Date: {date_display}")
                    print(f"Weather: {weather.replace(' ', ' ')}") # Replace full-width spaces
                    print("-" * 30)
    
        # 2. Precipitation Probability (pops) - usually in the second timeSeries
        if len(time_series) > 1:
            ts_pops = time_series[1]
            dates_pops = ts_pops.get("timeDefines", [])
            
            tokyo_pops = None
            for area in ts_pops.get("areas", []):
                if area["area"]["code"] == "130010":
                    tokyo_pops = area
                    break
    
            if tokyo_pops:
                print("\n--- Rain Probability (Tokyo) ---")
                for i, pop in enumerate(tokyo_pops.get("pops", [])):
                    if i < len(dates_pops):
                         try:
                            dt = datetime.fromisoformat(dates_pops[i])
                            date_display = dt.strftime("%Y-%m-%d %H:%M")
                         except ValueError:
                            date_display = dates_pops[i]
                         print(f"{date_display}: {pop}%")
    
        # 3. Temperatures - usually in the third timeSeries
        if len(time_series) > 2:
            ts_temps = time_series[2]
            # Temps structure can be slightly structurally different (min/max days)
            # We'll just look for Tokyo
            tokyo_temps = None
            # Note: Tokyo temperature code might be 44132 (Tokyo city) inside 130010 region structure?
            # Let's check the JSON structure again. 
            # Previous read: "areas":[{"area":{"name":"東京","code":"44132"},"temps":["16","16","5","18"]}]
            # So we look for code 44132 for temps or name "東京"
            
            for area in ts_temps.get("areas", []):
                if area["area"]["name"] == "東京" or area["area"]["code"] == "44132":
                    tokyo_temps = area
                    break
            
            if tokyo_temps:
                print("\n--- Temperatures (Tokyo) ---")
                temps = tokyo_temps.get("temps", [])
                # Mapping temps to times is tricky as they map to specific time slots
                # We'll just list them for now
                print(f"Values: {temps}")
    
    if __name__ == "__main__":
        get_jma_forecast()
    
    [Terminal]
    python get_weather.py
    [OUTPUT]
    Fetching weather data from https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json...
    
    Source: 気象庁
    Report Time: 2025-12-07T11:00:00+09:00
    
    --- Weather Forecast (Tokyo) ---      
    Date: 2025-12-07 11:00
    Weather: 晴れ
    ------------------------------
    Date: 2025-12-08 00:00
    Weather: 晴れ 昼過ぎ から 時々 くもり
    ------------------------------
    Date: 2025-12-09 00:00
    Weather: 晴れ 時々 くもり
    ------------------------------
    
    --- Rain Probability (Tokyo) ---
    2025-12-07 12:00: 0%
    2025-12-07 18:00: 0%
    2025-12-08 00:00: 0%
    2025-12-08 06:00: 0%
    2025-12-08 12:00: 0%
    2025-12-08 18:00: 0%
    
    --- Temperatures (Tokyo) ---
    Values: ['16', '16', '5', '18']

    5.応用例

    ポスター/Deck作成

     Antigravityの凄さというよりは、最強プロンプト×Gemini3.0×nano bananaでの応用技になります。

     スライド作成-まじん式v4×nano banana proで1枚のポスター作成します。まじん式v4は無料で使用できますが、メンバーシップで最新情報を得ることができます。

    1. まじん式v4のプロンプトを"prompt_majin_v4.md"として作成

    2. スライドにしたいデータを追加

    3. @でコンテキスト(nedo_水素.pdf)を指定し、下記プロンプトを実行

      1. まじん式のJSON出力が”nedo_text.txt”に出力

    4. @でコンテキスト(nedo_text.txt)を指定し、下記プロンプトを実行

    【プロンプト1】
    @prompt_majin_v4.md
    のプロンプトを元に、 @nedo_水素.pdf のファイルを解析し、JSON出力を出して

    【プロンプト2】
    @nedo_text.txt で記載されている情報で重要な内容を抽出したうえで、1枚のポスター形式で情報を出力してください

    画像

     Artifactsで微調整すると”poster_preview.html”が出力されました。後はブラウザで確認すると以下が生成できました。

    画像

    その他

    追って

    AntigravityでSAM 3D BodyのWebアプリが作れたので、早速AIニケちゃんでお試し。

    明日以降でsam-3d-objectsの方も作りたい。#AIニケちゃん pic.twitter.com/mPN5PtuBvP

    — 金のニワトリ (@gosrum) November 20, 2025

    What are you making with Nano Banana Pro?

    Drop your creations in the replies ↓

    — G3mini (@GeminiApp) November 20, 2025

    Gemini 3 use case: Explain a technical science topic through a coded visualization.

    See how Gemini 3 helps bring any idea to life → https://t.co/YshM9WOIT1 pic.twitter.com/a7f1vyl81T

    — Google Cloud (@googlecloud) November 21, 2025



    6.ヘルプ

    6-1.ショートカット

    VS Code共通

    • Ctrl + Shift + P:コマンドパレット

      • 全機能へのアクセス(拡張機能の管理やテーマ変更など)。

    • Ctrl + P:ファイルを開く

      • ファイル名を指定して素早く移動。

    • Ctrl + @:ターミナル表示/非表示

      • エージェントが実行したコマンドのログ確認などに使用。

    • Ctrl + B:サイドバー開閉

      • ファイルエクスプローラー等の表示切り替え。

    Editor View

    • Ctrl + E:Agent Manager へ切り替え

      • エディタ画面から、タスク全体を俯瞰・管理する「マネージャービュー」へ移動します。

    • Ctrl + L:Chat with Agent

      • サイドパネルを開き、エージェントと一緒にコーディングやチャットを行います。

    • Ctrl + I:Inline Edit

      • コード上に直接入力欄を出し、インラインでAIに編集指示を出します。

    Manager View


    あとがき

     Gemini3.0+Nano banana Proが楽しすぎるので、もう少し深堀したいけどとりあえず先出。


    参考資料

    公式Docs


    改正履歴

    • 2025年11月22日:初版発行

    • 2025年12月7日:事例追加+BrowserとAPIの情報更新

     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ