Gemini 2.5 Computer Use 究極ガイド:入門から実践まで、あなたのAI自動化アシスタントを構築

Google DeepMindが発表したGemini 2.5 Computer Useモデルは、AIに真の「コンピュータ操作」を学習させます。これは単なる技術的なブレークスルーではなく、自動化の未来です。この記事では、中心的な概念、応用シーンから、Pythonによる実践的なチュートリアルまで、この強力なツールを完全にマスターするためのガイドを提供します。


AIがあなたと会話するだけでなく、本物のアシスタントのようにコンピュータやモバイルアプリを「操作」できたらどうなるか、考えたことはありますか?それはもはや冷たいコードを通して指示を伝えるだけでなく、画面を直接理解し、ボタンをクリックし、フォームに記入し、ファイルをドラッグすることができます。

これはSF映画の筋書きのように聞こえますが、Google DeepMindの最新のGemini 2.5 Computer Useモデルは、これを現実にしています。これは、Gemini 2.5 Proの強力な視覚的理解と推論能力に基づいて構築された特殊なモデルです。その目標は明確です。AIエージェントに、ユーザーインターフェース(UI)を理解して操作できる「手」を与えることです。

なぜ「コンピュータを使える」AIが必要なのでしょうか?

これまで、AIとソフトウェアのやり取りは、主にAPI(アプリケーションプログラミングインターフェース)に依存していました。APIはソフトウェアの「メニュー」のようなもので、AIはそこに書かれている選択肢に基づいてしか指示を出すことができません。この方法は効率的ですが、非常に制限があります。

現実の世界では、オンラインでのレストランの予約、複雑な申請書の記入、プロジェクトボードの管理など、数え切れないほどのデジタルタスクが、グラフィカルユーザーインターフェース(GUI)との直接的なやり取りを必要とします。私たちはクリック、入力、スクロール、ドロップダウンメニューからの選択が必要です。人間にとってはごく自然なこれらの動作も、従来のAIにとっては乗り越えられない壁のようなものでした。

Gemini 2.5 Computer Useの登場は、この根本的な問題を解決するためです。これにより、AIエージェントは真に次のことを実現できます。

  • 反復的なデータ入力を自動化する: 手動でのコピー&ペーストはもう必要ありません。AIにウェブサイト上のさまざまなフォームへの入力を任せましょう。
  • 自動テストを実行する: 実際のユーザーの操作フローをシミュレートして、Webアプリケーションのエンドツーエンドのテストを実施します。
  • サイトを横断した調査と情報統合: AIエージェントに複数のeコマースサイトを閲覧させ、製品情報、価格、レビューを収集して、購入の意思決定を支援します。

この一歩は、より強力で汎用的なAIエージェントを構築するために不可欠です。

どのように機能するのか?舞台裏の「エージェントループ」を解読する

では、このモデルは一体どのようにして人間のように「見て」「実行する」のでしょうか?その中心的な動作メカニズムは、絶えず循環する「エージェントループ」です。プロセス全体は、次の4つのステップに簡略化できます。

  1. モデルにリクエストを送信する: AIにタスクを与え(例:「評価が最も高いスマート冷蔵庫を探して」)、現在の画面のスクリーンショットを添付します。
  2. モデルの応答を受信する: モデルはスクリーンショットを「見て」、リクエストを分析し、次に何をすべきかを決定します。具体的なUI操作コマンドを返します。たとえば、「座標(371, 470)の検索ボックスにテキストを入力する」などです。この応答には、この操作にリスクがあるかどうかを警告するセキュリティ決定が含まれている場合もあります。
  3. 受信したアクションを実行する: アプリケーション(クライアントコード)がこのコマンドを受信すると、実際にクリックまたは入力のアクションを実行します。モデルがユーザーの確認を要求した場合、プログラムはプロンプトを表示してユーザーの同意を待つ必要があります。
  4. 新しい環境の状態をキャプチャする: アクションが完了すると、プログラムは新しいスクリーンショットを撮り、操作結果とともにモデルに返します。

その後、プロセスはステップ2から再開されます。モデルは新しい画面に基づいて次のアクションを決定し、タスク全体が完了するまでこれを繰り返します。

ステップバイステップチュートリアル:PythonとPlaywrightで最初のAIエージェントを構築する

理論はかっこいいですが、実際にどうやってやるのでしょうか?次に、PythonとPlaywright(強力なブラウザ自動化ツール)を使用して、シンプルなAIエージェントを構築します。

ステップ0:環境の準備

始める前に、2つのものが必要です。

  • 安全な実行環境: AIエージェントは実際にブラウザを操作するため、サンドボックス化された仮想マシン、コンテナ(Docker)、または権限が制限されたブラウザプロファイルなど、制御された環境で実行することを強くお勧めします。
  • クライアント側のアクションハンドラ: モデルが生成したコマンド(クリック、入力など)を実行し、画面をキャプチャするコードを作成する必要があります。ここでPlaywrightが活躍します。

ステップ1:必要なパッケージをインストールする

ターミナルを開き、次のコマンドを入力して、Google Generative AIとPlaywrightのPythonライブラリをインストールします。

pip install google-genai playwright
playwright install chromium

ステップ2:Playwrightブラウザを初期化する

Pythonスクリプトを作成し、Playwrightが制御するブラウザウィンドウを初期化する必要があります。これがAIエージェントのワークスペースになります。

from playwright.sync_api import sync_playwright

# 1. ターゲット環境の画面サイズを設定する
SCREEN_WIDTH = 1440
SCREEN_HEIGHT = 900

# 2. Playwrightブラウザを起動する
# 本番環境では、サンドボックス環境を使用してください
playwright = sync_playwright().start()
# headless=Falseに設定すると、AIの操作を画面上で確認できます
browser = playwright.chromium.launch(headless=False)

# 3. 指定したサイズのコンテキストとページを作成する
context = browser.new_context(
    viewport={"width": SCREEN_WIDTH, "height": SCREEN_HEIGHT}
)
page = context.new_page()

# 4. タスクを開始するために初期ページに移動する
page.goto("https://www.google.com")

print("ブラウザが初期化され、タスクを開始する準備ができました。")

ステップ3:エージェントループを構築する

これはプロジェクト全体の核となる部分です。AIがブラウザと継続的にやり取りできるように、前述の4ステップのループを実装します。

まず、モデルの応答を実行し、結果を返すためのヘルパー関数がいくつか必要です。

# ヘルパー関数:モデルが返した正規化された座標(0-999)を実際のピクセル座標に変換する
def denormalize_x(x, screen_width):
    return int(x / 1000 * screen_width)

def denormalize_y(y, screen_height):
    return int(y / 1000 * screen_height)

# ヘルパー関数:モデルが返した関数呼び出しを実行する
def execute_function_calls(candidate, page, screen_width, screen_height):
    results = []
    for part in candidate.content.parts:
        if not part.function_call:
            continue
        
        fname = part.function_call.name
        args = part.function_call.args
        print(f"-> 実行中: {fname}、引数: {args}")

        try:
            if fname == "click_at":
                x = denormalize_x(args["x"], screen_width)
                y = denormalize_y(args["y"], screen_height)
                page.mouse.click(x, y)
            elif fname == "type_text_at":
                x = denormalize_x(args["x"], screen_width)
                y = denormalize_y(args["y"], screen_height)
                page.mouse.click(x, y)
                page.keyboard.type(args["text"])
                if args.get("press_enter", False):
                    page.keyboard.press("Enter")
            # ... ここに他のサポートされているアクションを実装します ...
            else:
                 print(f"警告: 実装されていない関数 {fname}")
            
            # ページの読み込みを待つ
            page.wait_for_load_state(timeout=5000)
            results.append((fname, {"status": "success"}))
        except Exception as e:
            print(f"エラー: {fname} の実行中にエラーが発生しました: {e}")
            results.append((fname, {"error": str(e)}))
            
    return results

# ヘルパー関数:新しい画面の状態をキャプチャし、戻り値の形式にパッケージ化する
def get_function_responses(page, results):
    screenshot_bytes = page.screenshot(type="png")
    current_url = page.url
    
    function_responses = []
    for name, result in results:
        response_data = {"url": current_url, **result}
        function_responses.append({
            "name": name,
            "response": response_data,
            "screenshot": screenshot_bytes
        })
    return function_responses

次に、すべての部分を組み合わせて、完全なエージェントループを形成します。

# (genai APIキーを設定していることを確認してください)
import google.genai as genai
from google.genai import types

# --- 完全なエージェントループのメインプログラム ---
try:
    # 1. モデルを設定する
    model = genai.GenerativeModel(
        'gemini-2.5-computer-use-preview-10-2025',
        tools=[types.Tool(
            computer_use=types.ComputerUse(
                environment=types.Environment.ENVIRONMENT_BROWSER
            )
        )]
    )
    chat = model.start_chat()

    # 2. タスクを初期化する
    USER_PROMPT = "aistudio.google.comにアクセスして、agentsに関するドキュメントを検索してください"
    print(f"目標: {USER_PROMPT}")
    
    initial_screenshot = page.screenshot(type="png")
    
    # 3. エージェントループに入る
    turn_limit = 10
    for i in range(turn_limit):
        print(f"\n--- ターン {i+1} ---")
        
        # モデルにリクエストを送信する
        if i == 0:
            response = chat.send_message(
                [USER_PROMPT, initial_screenshot],
            )
        else:
            response = chat.send_message(function_responses)
            
        # モデルの応答を受信して実行する
        candidate = response.candidates[0]
        
        if not any(part.function_call for part in candidate.content.parts):
            print("エージェントが完了しました:", candidate.content.parts[0].text)
            break
        
        results = execute_function_calls(candidate, page, SCREEN_WIDTH, SCREEN_HEIGHT)
        
        # 新しい状態をキャプチャして次のターンに備える
        print("-> 新しい状態をキャプチャしています...")
        function_responses = get_function_responses(page, results)
        
finally:
    # リソースをクリーンアップする
    print("\nタスクが終了しました。ブラウザを閉じています...")
    browser.close()
    playwright.stop()

AIのツールボックス:サポートされているUIアクション

Gemini 2.5 Computer Useモデルは、さまざまなUI操作コマンドを生成できます。以下は、最も一般的に使用されるもののいくつかです。

  • click_at(x, y): 指定した座標でマウスをクリックします。
  • type_text_at(x, y, text, ...): 指定した座標でクリックしてからテキストを入力します。
  • drag_and_drop(from_x, from_y, to_x, to_y): 要素を別の位置にドラッグアンドドロップします。
  • scroll_document(direction): ページ全体を特定の方向にスクロールします。
  • navigate(url): 指定したURLに直接移動します。
  • key_combination(keys): “Control+C"などのキーの組み合わせを押します。

セキュリティ:AIに強力な能力を与えるには、「手綱」を締めることがさらに重要です

AIにコンピュータの制御権を与えることは諸刃の剣です。悪意のある使用、フィッシング、誤操作などのリスクも伴います。したがって、最初から完全なセキュリティガードレールを確立することが不可欠です。Googleは、多層的な保護対策を提供しています。

  • ヒューマンインザループ: モデルの応答にrequire_confirmationのセキュリティ決定が含まれている場合、プログラムは必ず一時停止し、実行を続行する前にユーザーの確認を要求する必要があります。この要求を回避するコードを記述することはできません。
  • カスタムセキュリティ指示: 開発者は、モデルの動作を制限するためのカスタムシステム指示を提供できます。たとえば、「利用規約に同意する」ボタンのクリックを禁止したり、金融取引を行う前に必ずユーザーの承認を得るなどのルールを設定できます。
  • 安全な実行環境: 繰り返しになりますが、サンドボックス化された環境でエージェントを実行すると、潜在的な悪影響を大幅に制限できます。

開発者は、これらのリスクに慎重に対処し、適切なセキュリティ対策を講じる責任があります。

デモ動画

結論と次のステップ

Gemini 2.5 Computer Useの登場は、AI技術の大きな一歩であるだけでなく、人間とコンピュータのインタラクションの未来に全く新しい想像の空間を開きました。私たちを真に理解し、デジタル世界の煩雑なタスクを分担してくれる汎用AIエージェントは、もうすぐそこまで来ているのかもしれません。

AIアシスタントの構築を始める準備はできましたか?

シェアする:

© 2025 Communeify. All rights reserved.