← ブログに戻る

Claude Computer Use Tool:AI デスクトップ自動化の完全開発者ガイド

· Save Team
claudeaicomputer-useautomationapideveloperanthropic

もしAIに「Firefoxを開いて、ウェブサイトに移動して、フォームを入力して、結果を保存して」と言えたら——そしてそれが本当に実行されたら?脆いSeleniumスクリプトではなく。カスタムAPI連携でもなく。ただ…人間がするように画面を見て、マウスとキーボードを使って。

これがまさにClaudeのcomputer use toolがやることです。

Computer Useとは?

Computer Useは、Claudeがデスクトップ環境と対話できるベータAPI機能です:

  • スクリーンショットキャプチャ — Claudeが画面に表示されているものを見る
  • マウス制御 — クリック、ドラッグ、スクロール
  • キーボード入力 — テキスト入力、ショートカットキー操作
  • デスクトップ自動化 — あらゆるアプリケーションとの対話

キーワードはあらゆるです。従来の自動化(ブラウザ用のSelenium、macOS用のAppleScript)とは異なり、Claudeには特別なAPIや要素セレクタは不要です。画面上のピクセルを見て、どこをクリックするか判断します。あなたと同じように。

仕組み(エージェントループ)

Computer Useはシンプルなサイクルに従います:

  1. Claudeにタスクを送信 — 「デスクトップに猫の画像を保存して」
  2. Claudeがアクションを要求 — 「スクリーンショットを撮って」
  3. アプリケーションが実行 — 画面をキャプチャし、画像を返す
  4. Claudeが分析して次のアクションを要求 — 「座標(500, 300)をクリックして」
  5. 繰り返し タスクが完了するまで

このサイクルをエージェントループと呼びます。Claudeはアクション(スクリーンショット、クリック、入力、スクロール)を要求し続け、アプリケーションはそれを実行し続けます。Claudeがタスクの完了を判断するまで。

開始するための最小限のAPI呼び出しはこちらです:

import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-opus-4-6",
    max_tokens=1024,
    tools=[
        {
            "type": "computer_20251124",
            "name": "computer",
            "display_width_px": 1024,
            "display_height_px": 768,
            "display_number": 1,
        },
        {"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
        {"type": "bash_20250124", "name": "bash"},
    ],
    messages=[{
        "role": "user",
        "content": "デスクトップに猫の画像を保存して。"
    }],
    betas=["computer-use-2025-11-24"],
)

ベータヘッダー"computer-use-2025-11-24"は必須です。3つのツール(computer、テキストエディタ、bash)が連携して、Claudeに環境の完全な制御を与えます。

利用可能なアクション

Computer use toolは豊富なインタラクションセットをサポートしています:

基本アクション

  • screenshot — 現在の画面をキャプチャ
  • left_click — 座標[x, y]をクリック
  • type — テキスト文字列を入力
  • key — キーまたはキーの組み合わせを押す(例:ctrl+salt+tab
  • mouse_move — カーソルを移動

拡張アクション(Claude 4.xモデル)

  • scroll — 任意の方向にスクロール(量を制御可能)
  • left_click_drag — 座標間でクリック&ドラッグ
  • right_clickmiddle_click — 追加のマウスボタン
  • double_clicktriple_click — マルチクリック
  • hold_key — 指定した時間キーを押し続ける
  • wait — アクション間の一時停止

最新追加:ズーム

Claude Opus 4.6、Sonnet 4.6、Opus 4.5で利用可能:

  • zoom — 画面の特定領域をフル解像度で検査

Claudeが小さなテキストを読んだり、細かいUIの詳細を識別する必要がある場合に特に便利です。

コンピューティング環境

Claudeはコンピュータに直接接続しません。サンドボックス環境を提供する必要があります——通常、以下を実行するDockerコンテナです:

  • 仮想ディスプレイ — Xvfb(X Virtual Framebuffer)がデスクトップをレンダリング
  • デスクトップ環境 — Mutterのような軽量ウィンドウマネージャ
  • アプリケーション — Firefox、LibreOffice、ファイルマネージャなど
  • ツール実装 — Claudeのリクエストを実際のマウス/キーボード操作に変換するコード

Anthropicはリファレンス実装を提供しており、これらすべてがDockerで事前設定されています。最速で始める方法です。

エージェントループの構築

やり取りを処理する簡略化されたエージェントループはこちらです:

async def agent_loop(task: str, max_iterations: int = 10):
    client = anthropic.Anthropic()
    messages = [{"role": "user", "content": task}]

    tools = [
        {
            "type": "computer_20251124",
            "name": "computer",
            "display_width_px": 1024,
            "display_height_px": 768,
        },
        {"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
        {"type": "bash_20250124", "name": "bash"},
    ]

    for _ in range(max_iterations):
        response = client.beta.messages.create(
            model="claude-opus-4-6",
            max_tokens=4096,
            messages=messages,
            tools=tools,
            betas=["computer-use-2025-11-24"],
        )

        messages.append({"role": "assistant", "content": response.content})

        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })

        if not tool_results:
            return messages  # タスク完了

        messages.append({"role": "user", "content": tool_results})

execute_tool関数は、実際のスクリーンキャプチャ、マウスクリック、キーボード入力をコンピューティング環境に接続する場所です。

座標スケーリング:落とし穴

APIは画像を最長辺で最大1568pxに制限します。ディスプレイがそれより大きい場合(例えば1512x982)、スクリーンショットはダウンサンプリングされますが、Claudeは小さい画像に基づいた座標を返します。

座標をスケールバックする必要があります:

import math

def get_scale_factor(width, height):
    long_edge = max(width, height)
    total_pixels = width * height
    long_edge_scale = 1568 / long_edge
    total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
    return min(1.0, long_edge_scale, total_pixels_scale)

scale = get_scale_factor(1512, 982)

# Claudeが「(450, 300)をクリック」と言った場合、スケールアップ:
def execute_click(x, y):
    screen_x = x / scale
    screen_y = y / scale
    perform_click(screen_x, screen_y)

このステップをスキップすると、Claudeのクリックがターゲットを外します。これが最も一般的な実装バグです。

より良い結果のためのプロンプティングのコツ

Computer useは明確で構造化されたプロンプトで最も効果を発揮します:

  1. 具体的に。「Firefoxを開いて、example.comに行って、ログインボタンをクリックして」は「サイトにログインして」よりうまくいきます。

  2. **Claudeに確認を求める。**プロンプトにこれを追加してください:「各ステップの後にスクリーンショットを撮り、正しい結果が得られたか評価してください。確認できた場合のみ次に進んでください。」

  3. **キーボードショートカットを使う。**ドロップダウンやスクロールバーはクリックが難しい場合があります。代わりにTabEnter、矢印キーを使うようClaudeに指示してください。

  4. **例を提供する。**繰り返しタスクには、サンプルのスクリーンショットと期待されるツール呼び出しをプロンプトに含めてください。

  5. **資格情報にはXMLタグを使用。**Claudeがログインする必要がある場合、<robot_credentials>タグで資格情報を渡してください。ただし注意——Claudeが信頼できないコンテンツとやり取りする場合、プロンプトインジェクションのリスクが高くなります。

セキュリティ:真剣に取り組む

Computer useには固有のセキュリティリスクがあります:

  • **画面コンテンツを通じたプロンプトインジェクション。**Claudeは画面上のすべてを読みます。悪意のあるウェブページがプロンプトを上書きする指示を表示する可能性があります。
  • **自律的なアクション。**Claudeがリンクをクリックしたり、ダイアログを受け入れたり、意図した場所から離れたりする可能性があります。
  • **資格情報の露出。**Claudeが画面上のパスワードやトークンを見ることができれば、それらは会話の一部になります。

Anthropicはスクリーンショット内の潜在的なプロンプトインジェクションを検出する分類器を組み込んでいます。しかし最善の防御は隔離です:

  • 最小限の権限を持つ専用VMまたはDockerコンテナで実行する
  • 監督なしに機密アカウントへのアクセスを与えない
  • インターネットアクセスをドメインのホワイトリストに制限する
  • 重大な影響のあるアクション(購入、アカウント作成など)には人間の確認を要求する

何を構築するか

Computer useは、速度が重要でないが自動化が価値がある場合に最適です:

  • 自動テスト — Webアプリだけでなく、あらゆるデスクトップアプリケーションをテスト
  • データ収集 — ウェブサイトを巡回して情報を抽出
  • レガシーシステム統合 — APIのないアプリでワークフローを自動化
  • フォーム入力 — 複数サイトのウェブフォームに入力
  • リサーチワークフロー — ウェブから情報を検索、閲覧、編集
  • QAとモニタリング — UIが正しくレンダリングされていることを確認

リサーチやデータ収集のワークフローでは、Saveのようなツールがcomputer useを上手く補完します——Claudeがページに移動した後、クリーンなMarkdownに変換することで、生のスクリーンショットの代わりに構造化されたAI対応コンテンツが得られます。

現在の制限事項

ベータ版の制限事項に注意してください:

  • **レイテンシ。**各アクションにはAPIコール、スクリーンショットキャプチャ、レスポンスが必要です。人間がクリックするより遅いです。
  • **視覚精度。**Claudeは小さなテキストを読み間違えたり、UI要素を誤認識する場合があります。新しいズームアクションは助けになりますが、完璧ではありません。
  • **スクロール。**最近のバージョンで大幅に改善されましたが、複雑なスクロール操作はまだ信頼性に欠ける場合があります。
  • **スプレッドシート。**セル選択が難しいです。可能な場合はキーボードナビゲーションを使用してください。
  • **SNSでのアカウント作成不可。**Claudeは意図的にソーシャルメディアでアカウントを作成したり、人間になりすましたりしません。

料金

Computer useは標準的なツール使用料金に従います:

  • **システムプロンプトのオーバーヘッド:**466-499トークン
  • **ツール定義:**ツールあたり735トークン(Claude 4.x向け)
  • **スクリーンショット:**ビジョントークンとして課金(解像度により変動)
  • エージェントループ内の各API呼び出しは個別の課金対象リクエスト

典型的な10ステップのタスクでは、スクリーンショットのサイズとレスポンスの複雑さに応じて15,000〜50,000トークンの使用を見込んでください。

始め方

  1. リファレンス実装を試す。anthropic-quickstartsをクローンし、Dockerコンテナを起動して実験してください。
  2. シンプルなタスクから始める。「テキストエディタを開いて、Hello Worldと入力して、ファイルを保存して。」複雑なワークフローに挑戦する前に、エージェントループを動作させてください。
  3. **ガードレールを追加する。**イテレーション制限を設定。座標を検証。すべてのアクションをログ記録。不可逆な操作には人間の確認を追加してください。
  4. **プロンプトを最適化する。**指示が良いほど、Claudeに必要なイテレーションが少なくなり、トークンコストも下がります。

Computer useは、AI APIで可能なことの根本的な転換を表しています。あらゆるアプリケーションにカスタム統合を構築する代わりに、人間が使うのと同じインターフェース——画面、マウス、キーボード——をClaudeに与え、残りはClaudeに任せることができます。

自動化の未来は、より多くのAPIではありません。すでに存在するインターフェースを使えるAIです。