ブラウザを操作する AI エージェントが変えるもの
2026年3月、Googleが発表した「Gemini 3 Pro Computer Use Tool」は、AI エージェントに新たな可能性をもたらす革新的なテクノロジーです。このツールを使うことで、AI が直接ブラウザを操作し、デスクトップアプリを制御し、複雑な自動化タスクを実行できるようになりました。
Computer Use Tool とは
何ができるのか
Computer Use Toolは、AI が人間のように画面を「見て」、マウスをクリックし、キーボードを操作する能力です。従来のAPIのように「データを入出力する」のではなく、UI そのものを操作する点が特徴。
具体的には以下のようなタスクが可能になります:
- ブラウザでの自動フォーム入力と送信
- 複数のWebサイトからのデータ収集
- オンラインサービスのアカウント管理
- デスクトップアプリの自動制御(スクリーンショット→判断→操作のループ)
- 複雑なワークフロー自動化
なぜ重要か
従来のAI APIは「構造化データ」を入出力することが得意でした。しかし現実の業務の多くは、「UIを通じた操作」に依存しています。Computer Use Tool はこのギャップを埋め、AI エージェントが真の意味で実世界のシステムと対話できるようにしたのです。
セットアップと基本設定
必要な環境
- Python 3.10 以上
- Google Gemini API アクセス(Cloud Platform での設定)
google-generativeaiPython SDK
インストール
pip install google-generativeaiAPIキーの設定
import os
from google import genai
# 環境変数から API キーを取得
api_key = os.getenv("GEMINI_API_KEY")
client = genai.Client(api_key=api_key)セキュリティ上の注意:APIキーを環境変数として管理し、コードに直接記述しないでください。
ブラウザ自動化の実装例
基本的なパターン:スクリーンショット → AI 判断 → アクション
Computer Use Tool の核心は「スクリーンショット」→「AI による画面解析」→「マウス/キーボード操作」のループです。以下は、実際の検索フォーム自動入力の例です。
from google import genai
def automate_search(query: str):
client = genai.Client(api_key="YOUR_API_KEY")
# Step 1: 現在のスクリーンショットを取得
screenshot = capture_screen()
# Step 2: AI にスクリーンショットを渡し、次のアクションを判断させる
message = client.messages.create(
model="gemini-3-pro",
max_tokens=1024,
system_prompt="You are a web automation agent. Analyze the screenshot and help complete the search task.",
messages=[
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": screenshot
}
},
{
"type": "text",
"text": f"Search for '{query}' on this page. Tell me the coordinates where I should click the search box and what text to type."
}
]
}
]
)
# Step 3: AI の指示に基づいてアクション実行
response = message.content[0].text
# パースして click_x, click_y, text を抽出
# (実装例は省略)
return response
# 実行例
result = automate_search("Gemini AI automation")
print(result)期待される出力:
Search box found at coordinates (640, 320). Clicking and typing 'Gemini AI automation'...
Search completed successfully.
より実践的なパターン:複数ステップのワークフロー
複雑なワークフロー(例:E コマース注文)では、複数のステップを組み合わせます。
def complete_ecommerce_workflow(product_name: str, qty: int):
"""
E コマース自動購入フロー:
1. 商品検索
2. 商品ページを開く
3. 数量入力
4. カートに追加
5. チェックアウト実行
"""
client = genai.Client(api_key="YOUR_API_KEY")
step = 1
max_steps = 10
while step <= max_steps:
# 現在の画面状態を確認
screenshot = capture_screen()
# AI に次のアクションを判断させる
response = client.messages.create(
model="gemini-3-pro",
max_tokens=500,
messages=[
{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": screenshot}},
{"type": "text", "text": f"Step {step}/{max_steps}: I want to buy {qty} of '{product_name}'. What's the next action?"}
]
}
]
)
# AI の判断に従ってアクション実行
instruction = response.content[0].text
execute_action(instruction) # click, type, wait など
step += 1
return "Workflow completed"安全性とベストプラクティス
リスク管理
Computer Use は強力な機能ですが、悪用の可能性もあります。以下の対策は必須です。
| 対策項目 | 説明 |
|---|---|
| API キー管理 | 環境変数で管理し、ログに出力しない |
| アクション承認 | 重要な操作(送信・削除)は実行前に人間による確認を入れる |
| スクリーンショット処理 | 個人情報(パスワード、クレジット番号)を含む画像は保存しない |
| エラーハンドリング | 予期しない状態に達した場合は自動停止 |
| 監査ログ | 実行したアクションを記録・検証 |
実装例:承認プロセス付き自動化
def safe_automated_action(action_type: str, details: dict):
"""人間による承認が必要な場合のみ実行"""
# システムが提案したアクションをユーザーに表示
print(f"AI is proposing to: {action_type}")
print(f"Details: {details}")
# ユーザー確認
approval = input("Approve? (yes/no): ")
if approval.lower() == "yes":
execute_action(action_type, details)
log_action(action_type, details, approved=True)
else:
print("Action cancelled by user")
log_action(action_type, details, approved=False)Gemini とのアプローチの比較
GoogleとAnthropicの両社とも AI エージェント技術を提供していますが、異なるアプローチを取っています。
| 観点 | Gemini 3 Pro Computer Use | Claude Agents (MCP) |
|---|---|---|
| アーキテクチャ | UI ベース(画面操作) | Tool 統合型(API呼び出し) |
| 学習曲線 | 直感的(既存UIを活用) | 構造化(カスタムTool開発) |
| デスクトップアプリ対応 | 直接サポート | 別途Tool実装が必要 |
| API レスポンス時間 | 若干長い(画面解析) | 高速(構造化データ) |
| 運用における予測性 | UI 変更の影響を受けやすい | Tool仕様が安定 |
どちらのアプローチが優れているかではなく、ユースケースに応じて使い分ける点が肝心です。一度、Gemini 3 Pro ガイドでアーキテクチャを、Gemini エージェントフレームワークで統合パターンを学ぶことをお勧めします。
実践的なユースケース
1. データ収集・スクレイピング
複数のニュースサイトから同時に記事を収集し、要約を作成。
def scrape_news_articles(sources: list):
"""複数のニュースサイトから記事を自動収集"""
client = genai.Client(api_key="YOUR_API_KEY")
articles = []
for source_url in sources:
# ブラウザをそのURLに移動
navigate_to(source_url)
# AI に「重要な記事3件のタイトルと URL をリストアップ」と指示
screenshot = capture_screen()
response = client.messages.create(
model="gemini-3-pro",
max_tokens=1000,
messages=[
{
"role": "user",
"content": [
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": screenshot}},
{"type": "text", "text": "Extract 3 important articles with titles and URLs"}
]
}
]
)
articles.extend(parse_response(response.content[0].text))
return articles2. 定期的なレポート生成
毎日、複数のダッシュボードからデータを抽出し、自動レポートを作成。
3. カスタマーサポート自動化
ユーザーの質問に対し、AI が実際にシステムにログインして状況を確認・対応。
Gemini エージェント本番システム への次のステップ
Computer Use Tool の基本を習得したら、実運用環境での考慮事項が重要です。監視、エラーハンドリング、スケーリング、セキュリティの統合的な設計が必要です。詳細は「Gemini エージェント本番システム」ガイドで解説しています。
フォーム自動入力とデータ抽出を実装に落とし込む
ここまでは流れをつかむためのスケッチでした。実際に手元で動かす段になると、Computer Use は専用モデルと専用ツールを通して呼び出します。2026 年春時点で公開されているのは gemini-2.5-computer-use-preview-10-2025 で、gemini-3-flash-preview にも組み込まれています。チャット用のテキストモデルとは別物だと考えておくと、最初の戸惑いが減ります。
呼び出しの形はこうなります。スクリーンショットとゴールを渡すと、モデルは function_call を返してきます。その名前が click_at や type_text_at といった UI 操作で、座標は画面サイズに依存しない 0〜999 の正規化値で返ります。受け取った側が Playwright などで実際のピクセルに直して実行します。
from google import genai
from google.genai import types
client = genai.Client() # GEMINI_API_KEY は環境変数から読み込みます
config = types.GenerateContentConfig(
tools=[types.Tool(computer_use=types.ComputerUse(
environment=types.Environment.ENVIRONMENT_BROWSER,
))],
)
response = client.models.generate_content(
model="gemini-2.5-computer-use-preview-10-2025",
contents=contents, # ユーザーの指示 + 直近のスクリーンショット
config=config,
)フォームを一項目ずつ埋める
問い合わせフォームのような入力は、type_text_at で一フィールドずつ進めます。引数の clear_before_typing と press_enter を意識しておくと、暴発を防げます。
press_enter=False を指定しておくと、文字を入れた瞬間に送信されてしまう事故が起きません。すべての項目を埋め終えてから、最後に送信ボタンを click_at で押す、という二段構えにします。
# モデルが返してくる type_text_at の引数イメージ
# {"name": "type_text_at",
# "args": {"x": 371, "y": 470, "text": "お問い合わせ本文",
# "press_enter": False, "clear_before_typing": True}}
def denormalize(value: int, length: int) -> int:
# 座標は 0〜999 の正規化値なので、実画面サイズへ戻します
return int(value / 1000 * length)
def fill_field(page, args, width, height):
x = denormalize(args["x"], width)
y = denormalize(args["y"], height)
page.mouse.click(x, y)
if args.get("clear_before_typing", True):
page.keyboard.press("Control+A")
page.keyboard.press("Backspace")
page.keyboard.type(args["text"])
if args.get("press_enter", True):
page.keyboard.press("Enter")入力欄が増えるほど、座標のわずかなずれが効いてきます。個人開発でアプリを運営していると、レビューの巡回や在庫の確認といった単純作業はどうしても積み重なります。私自身、フォーム系のタスクでは推奨解像度の 1440×900 に固定し、毎回同じ初期状態から始めるようにしています。前のタスクのポップアップが残っているだけで、モデルは平気で別の場所をクリックします。
抽出結果を構造化して受け取る
データ収集では、ページを巡回させたあとの「最終回答」を構造化して受け取ると、後段の処理が一気に楽になります。ゴールの文面で出力形式を具体的に指定しておくのがコツです。
たとえば「商品名・価格・URL を JSON 配列で。各要素のキーは name, price, url」と頼んでおくと、ループが終わったときのテキスト応答をそのまま json.loads に渡せる確率が上がります。曖昧な指示のままだと、整形済みの表だったり箇条書きだったりが混ざり、毎回パーサを書き直す羽目になります。
送信・購入の直前で必ず止める
Computer Use には、危険そうな操作を検知すると safety_decision を返す仕組みがあります。require_confirmation が付いた function_call は、利用者の許可を取るまで実行してはいけない決まりです。規約上もこの確認を迂回することは認められていません。
実装では、送信・購入・ログイン・Cookie 同意・CAPTCHA をこちら側のルールでも止めるようにしています。モデルの判定に任せきりにせず、フォームを埋め終えた状態でいったん人間に渡す。RPA を業務に乗せられるかどうかは、この「最後の一押しを誰が押すか」を設計できているかにかかっていると感じています。
実行環境はサンドボックス化したブラウザプロファイルかコンテナに隔離し、巡回先はあらかじめ許可リストで絞っておくと、想定外のサイトへ迷い込む事故を減らせます。
まとめ
Gemini 3 Pro の Computer Use Tool は、AI エージェント開発の新しい時代を切り開く機能です。
学んだポイント:
- Computer Use とは、AI による UI 操作能力
- スクリーンショット → AI 判断 → アクションのループが基本パターン
- セキュリティと人間による承認プロセスが不可欠
- UI 型と Tool 型のアプローチの使い分けが重要
- 実装は段階的に、まず単純なタスクから始める
ブラウザ自動化、データ収集、レポート生成など、Computer Use の可能性は無限です。今から実装を始めて、AI エージェントの時代に備えましょう。
参考資料: