1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Computer Use入門 — macOSデスクトップ操作とDispatch遠隔制御の全貌

1
Last updated at Posted at 2026-03-24

Claude Computer Use概要 — Dispatch経由でmacOSデスクトップをAIが操作する

はじめに

2026年3月23日、Anthropicは Claude Cowork および Claude Code にコンピュータ操作機能を追加 したことを発表した。Claude がマウス操作・キーボード入力・スクリーンショット取得を通じて macOS 上のアプリケーションを自律的に操作できるようになる。

さらに、3月中旬にリサーチプレビューとして公開された Claude Dispatch を組み合わせることで、スマートフォンからデスクトップの Claude セッションを遠隔操作する「phone-to-desktop」ワークフローも実現した。

この記事では、Computer Use の技術的な仕組みから API 実装、Cowork / Dispatch との連携、セキュリティモデルまでを体系的に解説する。

この記事で学べること

  • Computer Use API の「観察-行動ループ」アーキテクチャ
  • Python での Computer Use 実装手順
  • Cowork + Dispatch による macOS 遠隔操作の仕組み
  • セキュリティモデルとプロンプトインジェクション対策

対象読者

  • AI エージェントによるデスクトップ自動化に関心があるエンジニア
  • Claude API を活用したツール開発を検討している方
  • Computer Use と既存の RPA / 自動化ツールの違いを理解したい方

TL;DR

  • Claude Computer Use は「スクリーンショット撮影 → 画面解析 → マウス / キーボード操作」の 観察-行動ループ でデスクトップを自律制御する
  • API はベータ版で、 computer_20251124 ツールタイプと computer-use-2025-11-24 ベータヘッダーを指定して利用する
  • Cowork 経由で macOS アプリを直接操作でき、Dispatch を使えばスマートフォンから遠隔指示が可能
  • サンドボックス環境・Human-in-the-Loop 承認・E2E 暗号化の3層でセキュリティを担保している

観察-行動ループのアーキテクチャ

Computer Use の仕組み

観察-行動ループ(Observation-Action Loop)

Computer Use の中核は、Claude と外部デスクトップ環境の間で繰り返される エージェントループ にある。公式ドキュメント によると、処理の流れは以下のとおりである。

  1. ユーザープロンプト送信: 開発者が Computer Use ツールとユーザー指示を API リクエストに含める
  2. Claude がツール使用を判断: Claude が画面操作が必要と判断すると、 stop_reason: "tool_use" でレスポンスを返す
  3. ツール実行と結果返却: 開発者側でツール入力(クリック座標、入力テキスト等)を抽出し、実際のデスクトップ環境で実行。結果(スクリーンショット等)を tool_result として返す
  4. タスク完了まで反復: Claude が結果を解析し、追加操作が必要なら再度ツール使用を要求する。タスク完了時はテキストレスポンスを返す

ステップ3・4がユーザー入力なしで繰り返される部分が「エージェントループ」と呼ばれる。

利用可能なアクション

公式ドキュメント で定義されているアクションは、ツールバージョンによって異なる。

アクション computer_20250124 computer_20251124 説明
screenshot 現在の画面をキャプチャ
left_click 指定座標 [x, y] をクリック
type テキスト文字列を入力
key キーまたはキーコンビネーションを押下(例: ctrl+s
mouse_move カーソルを指定座標に移動
scroll 任意方向へのスクロール(量指定可)
right_click / double_click 右クリック・ダブルクリック
left_click_drag ドラッグ操作
hold_key キーを指定秒数間押し続ける
wait アクション間の一時停止
zoom 画面の特定領域を高解像度で検査

zoom アクションは computer_20251124(Opus 4.6 / Sonnet 4.6 / Opus 4.5)で追加された新機能で、小さな UI 要素をクリック前に拡大確認できる。

対応モデルとベータヘッダー

モデル ツールバージョン ベータヘッダー
Claude Opus 4.6, Sonnet 4.6, Opus 4.5 computer_20251124 computer-use-2025-11-24
Sonnet 4.5, Haiku 4.5, Opus 4.1 等 computer_20250124 computer-use-2025-01-24

API実装の3ステップフロー

API 実装ガイド(Python)

基本的なリクエスト

公式クイックスタート に基づく Python 実装の基本形は以下のとおりである。

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": "デスクトップにあるreport.xlsxを開いて、A1セルの値を教えてください。",
        }
    ],
    betas=["computer-use-2025-11-24"],
)

ポイントは3つある。

  1. tools 配列に computer_20251124 タイプのツールを含める。 display_width_px / display_height_px でスクリーンショットの解像度を指定する
  2. text_editorbash ツールを併用することで、ファイル編集やコマンド実行も組み合わせられる
  3. betas パラメータにベータヘッダー "computer-use-2025-11-24" を指定する

エージェントループの実装

タスク完了まで自動的にツール実行を繰り返すエージェントループの簡易実装を示す。

import anthropic
import base64

client = anthropic.Anthropic()
COMPUTER_TOOL_TYPE = "computer_20251124"
BETA_FLAG = "computer-use-2025-11-24"
MAX_ITERATIONS = 10

def run_computer_use(user_prompt: str) -> list[dict]:
    """Computer Useのエージェントループを実行する"""
    tools = [
        {
            "type": COMPUTER_TOOL_TYPE,
            "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",
        },
    ]

    messages = [{"role": "user", "content": user_prompt}]

    for _ in range(MAX_ITERATIONS):
        response = client.beta.messages.create(
            model="claude-opus-4-6",
            max_tokens=4096,
            tools=tools,
            messages=messages,
            betas=[BETA_FLAG],
        )

        # Claudeのレスポンスを会話履歴に追加
        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})

    return messages


def execute_tool(name: str, input_data: dict) -> str:
    """ツールを実際のデスクトップ環境で実行する(実装例)"""
    if name == "computer":
        action = input_data.get("action")
        if action == "screenshot":
            # スクリーンショットを撮影してbase64で返す
            screenshot_b64 = take_screenshot()
            return [{
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": screenshot_b64,
                },
            }]
        elif action == "left_click":
            x, y = input_data["coordinate"]
            perform_click(x, y)
            return "Click performed"
        elif action == "type":
            perform_type(input_data["text"])
            return "Text typed"
    # bash, text_editor等の処理も同様に実装
    return "Tool executed"

execute_tool 関数の中身は実行環境に依存する。Anthropic は Docker コンテナベースの リファレンス実装 を公開しており、Xvfb(仮想ディスプレイ)上で実際にマウス / キーボード操作を実行する仕組みが含まれている。

zoom アクションの活用

computer_20251124 で追加された zoom アクションは、小さなボタンやテキストを高解像度で確認してから操作するケースで有効である。

{
  "action": "zoom",
  "region": [100, 200, 400, 350]
}

region[x1, y1, x2, y2] 形式で、左上と右下の座標を指定する。

Cowork + Dispatch連携アーキテクチャ

Cowork と Dispatch — macOS ネイティブ体験

Cowork の Computer Use 対応

Claude Cowork は Claude Desktop アプリの拡張機能で、ファイルアクセスと自律タスク実行を提供する。3月23日のアップデートにより、Cowork 上で Computer Use が利用可能になった。

主な特徴は以下のとおりである。

  • アプリ操作: ブラウザ、スプレッドシート、テキストエディタなど macOS 上のアプリケーションを直接操作
  • ファイル管理: ローカルファイルの読み取り・編集・整理を自律的に実行
  • 永続コンテキスト: セッション間でコンテキストを保持し、過去のタスク結果を踏まえた操作が可能

利用には Claude Pro($20/月)または Claude Max($100〜200/月)のサブスクリプションが必要で、現在はリサーチプレビューとして提供されている。

Dispatch — スマートフォンからの遠隔操作

Dispatch は3月中旬にリリースされた「phone-to-desktop」ワークフロー機能である。geeky-gadgets の報道 によると、アーキテクチャの特徴は以下のとおりである。

ローカルファースト処理: すべての処理はデスクトップ上で実行される。スマートフォンはテキスト指示を送信するリモコンとして機能し、ファイルがクラウドにアップロードされることはない。

永続スレッド: Dispatch はスマートフォンとデスクトップの間に1つの永続会話スレッドを維持する。セッションごとにリセットされず、前回のタスクコンテキストを引き継ぐ。

E2E 暗号化: スマートフォンとデスクトップ間の通信はエンドツーエンドで暗号化される。Anthropic はコマンドデータを閲覧できない設計になっている。

利用の前提条件

  • macOS デスクトップで Claude Desktop アプリが起動していること(スリープ / アプリ終了時は Dispatch が停止する)
  • Claude Pro または Max サブスクリプション(Max から先行ロールアウト)
  • iOS / Android の Claude モバイルアプリ

セキュリティモデル

Computer Use はデスクトップ全体へのアクセスを伴うため、公式ドキュメント では複数の安全策が推奨されている。

1. サンドボックス環境

API 経由で Computer Use を利用する場合、Anthropic は専用の仮想マシンまたはコンテナでの実行を推奨している。リファレンス実装は Docker コンテナ内で動作し、ホストシステムへの直接アクセスを防止する。

Cowork の場合は、ユーザーが明示的に共有したフォルダ / アプリケーションのみに Claude がアクセスできるサンドボックスが適用される。

2. Human-in-the-Loop 承認

Dispatch 経由の遠隔操作では、ファイル削除や大規模なディレクトリ移動など「破壊的な操作」の前に、スマートフォンへプッシュ通知が送信される。ユーザーが承認するまで操作は一時停止する。

3. プロンプトインジェクション防御

Computer Use では、Web ページや画像に埋め込まれた悪意ある指示が Claude の動作を乗っ取るリスクがある。Anthropic はこれに対し、スクリーンショット内のプロンプトインジェクションを検出する 分類器(classifier) を自動実行している。検出時は、次のアクション実行前にユーザー確認を求める動作に切り替わる。

セキュリティチェックリスト

項目 API 利用時 Cowork 利用時
実行環境の隔離 VM / Docker コンテナ推奨 アプリ内サンドボックス
機密データへのアクセス制限 アカウント情報を渡さない 共有フォルダを最小限に
インターネットアクセス制限 許可ドメインのホワイトリスト N/A(Cowork 側で制御)
重要操作の人間承認 エージェントループ内に確認ステップを実装 Dispatch 自動プッシュ通知

競合との比較

Computer Use は「AI がデスクトップを操作する」分野で 複数の競合 と並ぶ。

項目 Claude Cowork OpenClaw GPT-5.4 Computer Use
操作方式 スクリーンショット + 座標制御 システム全体の自動化 スクリーンショット + 座標制御
実行環境 macOS サンドボックス ローカル / セルフホスト クラウド VM
永続メモリ セッション内コンテキスト グローバルメモリ ステートフルセッション
遠隔操作 Dispatch(モバイル) マルチメッセンジャー連携 ChatGPT 統合
コスト $20〜200/月 無料(セルフホスト可) API 従量課金
安全性 サンドボックス + 分類器 + E2E ユーザー設定依存 VM 隔離

Claude Cowork は 安全性とシンプルさ を重視した設計で、セキュリティを最優先としつつ macOS ネイティブの操作体験を提供している。一方、OpenClaw はシステム全体への深いアクセスと柔軟性を特徴とし、カスタマイズ性の高い自動化に向いている。

注意点と制約

  • ベータ版: Computer Use は正式リリースではなく、Zero Data Retention(ZDR)の対象外 である
  • 精度の限界: ドロップダウンメニューやスクロールバーの操作は不安定な場合がある。公式はキーボードショートカットの併用を推奨している
  • Dispatch の制約: デスクトップがスリープまたはアプリ終了するとセッションが切断される。クラウドコンピューティングではなく、あくまでリモコンである
  • コスト: API 利用の場合、エージェントループの反復ごとにトークン消費が発生する。スクリーンショット画像のトークン数にも注意が必要である

まとめ

  • Claude Computer Use は 観察-行動ループ で GUI 操作を自律実行する。API は computer_20251124 ツールタイプで利用でき、 zoom アクションによる高解像度検査が新たに追加された
  • Cowork の Computer Use 対応により、macOS 上のアプリケーションを Claude が直接操作できるようになった。Dispatch と組み合わせれば、外出先からスマートフォン経由でデスクトップタスクを指示できる
  • セキュリティはサンドボックス・Human-in-the-Loop・E2E 暗号化の3層構造。API 利用時は VM / Docker での隔離実行が推奨される
  • Computer Use はまだベータ版であり、精度や対応 OS に制約がある。本番運用の前に、リファレンス実装での検証を推奨する

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?