LLM が「PC を操作する」時代に入った
2026年3月、OpenAI が GPT-5.4 をリリースしました。
目玉機能の一つが Computer Use です。
これまで LLM の仕事は「テキストを生成すること」でした。
コードを書く、文章を要約する、質問に答える。
すべて「出力はテキスト」という前提の上に成り立っていました。
Computer Use はこの前提を壊します。
LLM がスクリーンショットを見て、マウスを動かし、クリックし、キーボードを叩く。
つまり「人間と同じ UI を通じてソフトウェアを操作する」能力を持ったのです。
これは開発者にとって大きな意味を持ちます。
- API が存在しないレガシーシステムの自動化が可能になる
- ブラウザ操作、デスクトップアプリ操作を統一的に扱える
- E2E テストの自動生成・実行に応用できる
Anthropic の Claude が 2024年10月に Computer Use をベータ公開し、この領域を切り開きました。
GPT-5.4 はそこに正面から参入した形です。
本記事では、GPT-5.4 Computer Use の仕組みを解説し、実際のコード例を交えて「何ができて、何ができないか」を整理します。
GPT-5.4 の概要
本題に入る前に、GPT-5.4 の全体像を押さえます。
| 項目 | 内容 |
|---|---|
| リリース日 | 2026年3月5日 |
| コンテキストウィンドウ | 最大 1,050,000 トークン |
| 最大出力 | 128,000 トークン |
| 入力料金 | $2.50 / 1M トークン |
| 出力料金 | $15.00 / 1M トークン |
| 長文入力(272K超) | 入力料金が2倍($5.00 / 1M) |
| キャッシュ入力 | $1.25 / 1M トークン |
| 推論レベル | none / low / medium / high / xhigh の5段階 |
GPT-5.2 と比較して、個々の主張における誤り発生率が 33% 低下しています。
回答全体での誤りも 18% 減少しました。
主なモデルバリエーションは2種類です。
| モデル | 用途 |
|---|---|
gpt-5.4 |
汎用・エージェント・複雑な推論 |
gpt-5.4-pro |
高難度タスク向け($30 / 1M 入力) |
Computer Use の仕組み
スクリーンショット → アクション → スクリーンショットのループ
Computer Use の動作原理はシンプルです。
モデルが返すアクションの種類は以下の通りです。
| アクション | 説明 |
|---|---|
click |
指定座標をクリック |
double_click |
ダブルクリック |
type |
テキスト入力 |
keypress |
キー押下(Enter, Tab など) |
scroll |
スクロール |
drag |
ドラッグ操作 |
move |
マウス移動 |
screenshot |
現在の画面を再取得 |
wait |
待機 |
実行環境の選択肢
Computer Use を動かすには、アクションを実際に実行する「ハーネス」が必要です。
OpenAI は3つのアプローチを提示しています。
1. ローカルブラウザ(Playwright / Selenium)
最も手軽な方法です。
サンドボックス化されたブラウザインスタンスで動作させます。
2. 仮想マシン(Docker + Xvfb)
Ubuntu デスクトップを Docker コンテナ内で起動し、xdotool でアクションを実行します。
デスクトップアプリの操作が必要な場合に適しています。
3. コード実行ハーネス
モデルがスクリプトを書いて実行する方式です。
ループや条件分岐が必要なワークフローに向いています。
実装してみる
環境構築
必要なパッケージをインストールします。
pip install openai pyautogui pillow
基本構成
まず、スクリーンショット取得と API 通信の基盤を作ります。
import base64
import io
import time
import json
import pyautogui
from openai import OpenAI
client = OpenAI()
pyautogui.PAUSE = 0.5
pyautogui.FAILSAFE = True
SCREEN_WIDTH, SCREEN_HEIGHT = pyautogui.size()
def take_screenshot() -> str:
"""画面をキャプチャし、Base64 エンコードした PNG を返す"""
screenshot = pyautogui.screenshot()
buffer = io.BytesIO()
screenshot.save(buffer, format="PNG")
buffer.seek(0)
return base64.b64encode(buffer.read()).decode("utf-8")
API へのリクエスト送信
Computer Use を有効にするには、tools に computer_use_preview を指定します。
computer_use_preview は Computer Use 向けの specialized model として別途提供されているものです。GPT-5.4 本体にも computer tool が統合されていますが、API の呼び出し方が異なる場合があります。最新の仕様は OpenAI の公式ドキュメントで確認してください。
def send_to_gpt54(
screenshot_b64: str,
task: str,
previous_response_id: str | None = None,
) -> object:
"""スクリーンショットとタスク指示を GPT-5.4 に送信する"""
tools = [{
"type": "computer_use_preview",
"display_width": SCREEN_WIDTH,
"display_height": SCREEN_HEIGHT,
"environment": "mac", # "windows" or "linux" に変更可
}]
input_content = [{
"role": "user",
"content": [
{"type": "text", "text": task},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{screenshot_b64}",
},
},
],
}]
params = {
"model": "gpt-5.4",
"tools": tools,
"input": input_content,
"reasoning": {"effort": "medium"},
}
if previous_response_id:
params["previous_response_id"] = previous_response_id
return client.responses.create(**params)
ポイントをいくつか補足します。
-
environmentは OS に合わせて設定します。UI 規約(右クリックメニューの位置など)の解釈に影響します -
display_width/display_heightは実際の画面解像度と一致させます。座標のずれを防ぐためです -
reasoning.effortは"medium"が標準的な選択です。複雑なワークフローでは"high"に上げます
アクションの実行
モデルが返すアクションを PyAutoGUI で実行します。
def execute_action(action) -> str:
"""computer_call のアクションを実行する"""
action_type = action.type
if action_type == "click":
button = getattr(action, "button", "left")
pyautogui.click(action.x, action.y, button=button)
elif action_type == "double_click":
pyautogui.doubleClick(action.x, action.y)
elif action_type == "type":
pyautogui.write(action.text, interval=0.03)
elif action_type == "keypress":
for key in action.keys:
pyautogui.press(key)
elif action_type == "scroll":
pyautogui.scroll(action.scroll_y, x=action.x, y=action.y)
elif action_type == "drag":
pyautogui.moveTo(action.start_x, action.start_y)
pyautogui.drag(
action.end_x - action.start_x,
action.end_y - action.start_y,
duration=0.5,
)
elif action_type == "screenshot":
return "screenshot_requested"
return "executed"
メインループ
すべてを組み合わせた自動化ループです。
def run_automation(task: str, max_steps: int = 25) -> bool:
"""スクリーンショット → 解析 → アクション実行のループを回す"""
previous_response_id = None
for step in range(1, max_steps + 1):
print(f"Step {step}/{max_steps}")
screenshot_b64 = take_screenshot()
prompt = task if step == 1 else "現在の画面を確認し、タスクを続行してください。"
response = send_to_gpt54(
screenshot_b64, prompt, previous_response_id
)
has_actions = any(
item.type == "computer_call" for item in response.output
)
if not has_actions:
# モデルがアクションを返さない = タスク完了
for item in response.output:
if item.type == "text":
print(item.text)
print("タスク完了")
return True
for item in response.output:
if item.type == "computer_call":
execute_action(item.action)
previous_response_id = response.id
time.sleep(1.0)
print(f"最大ステップ数 ({max_steps}) に到達")
return False
実行例:Web フォームの自動入力
実用的な例として、Web フォームの自動入力を試します。
form_data = {
"氏名": "山田太郎",
"メールアドレス": "taro@example.com",
"電話番号": "03-1234-5678",
"会社名": "株式会社サンプル",
"お問い合わせ内容": "サービスの導入を検討しています。",
}
task = f"""
以下の情報でフォームを入力してください。
{json.dumps(form_data, ensure_ascii=False)}
各フィールドをクリックし、テキストを入力し、
最後に送信ボタンをクリックしてください。
"""
run_automation(task)
OSWorld ベンチマーク:人間超えの衝撃
Computer Use の性能を測る代表的なベンチマークが OSWorld です。
実際のデスクトップ環境でタスクを完了できるかを評価します。
| モデル | OSWorld スコア |
|---|---|
| GPT-5.4 | 75.0% |
| 人間(エキスパート) | 72.4% |
| Claude Sonnet 4.6 | 72.5% |
| GPT-5.2 | 47.3% |
GPT-5.4 は、このベンチマークで初めて人間のスコアを超えた AI モデルです。
GPT-5.2 からの伸びが著しく、わずか数ヶ月で 27.7 ポイント改善しています。
ただしベンチマークの数字は慎重に見る必要があります。
実環境では予期しない UI 変更、ポップアップ、ネットワーク遅延など、ベンチマークにない障害が発生します。
Claude Computer Use との比較
Anthropic の Claude Computer Use と比較します。
| 観点 | GPT-5.4 Computer Use | Claude Computer Use |
|---|---|---|
| アーキテクチャ | Responses API 経由のツール呼び出し | Messages API 経由のツール呼び出し |
| 対象範囲 | ブラウザ + デスクトップ | ブラウザ + デスクトップ |
| OSWorld スコア | 75.0% | 72.5%(Sonnet 4.6) |
| 実行環境 | ユーザー側で構築 | ユーザー側で構築 |
| セキュリティ | 確認ダイアログ + 監視システム | Docker 隔離を推奨 |
| 料金モデル | 従量課金(トークンベース) | 従量課金(トークンベース) |
| コンテキスト | 最大 1,050,000 トークン | 最大 200,000 トークン |
両者のアプローチは似ています。
どちらもスクリーンショットを送信し、構造化されたアクションを受け取る方式です。
GPT-5.4 の優位点はコンテキストウィンドウの大きさです。
100万トークンのコンテキストにより、長時間のワークフローでも文脈を維持できます。
Claude の優位点は実績です。
2024年10月から本番環境での運用が始まっており、エッジケースの知見が蓄積されています。
OpenAI は以前 CUA(Computer Using Agent)をブラウザ専用で提供していました。GPT-5.4 ではデスクトップ操作にも対応し、Claude Computer Use と同じ土俵に立っています。
できること・できないこと
できること
- ブラウザ操作: サイト遷移、フォーム入力、ボタンクリック、タブ切り替え
- デスクトップアプリ操作: Excel、ファイルマネージャ、ターミナルなど
- データ抽出: 画面上のテーブルやテキストの読み取り・構造化
- テストの実行: UI の状態確認、操作結果の検証
- マルチステップワークフロー: 複数アプリをまたぐ一連の操作
できないこと・苦手なこと
- 高速な操作: 毎ステップでスクリーンショット撮影 → API 通信 → アクション実行のサイクルが発生します。1ステップに数秒かかります
-
ファイルシステムの直接操作: UI を通じた操作のみです。
os.rename()のような直接操作はできません - 動的な UI の追従: アニメーション中や高速に変化する画面への対応は不安定です
- 認証情報の安全な入力: パスワード入力はスクリーンショットに映り込むリスクがあります
- 無人運転: 現時点では人間の監視が推奨されています
Computer Use は UI を通じて操作するため、API 連携やコマンドライン操作の方が確実で高速な場面も多くあります。「Computer Use でなければ解決できないタスク」かどうかを見極めることが重要です。
セキュリティ上の注意点
Computer Use は強力ですが、リスクも伴います。
1. 画面情報の漏洩
スクリーンショットが API に送信されるため、画面に表示されているすべての情報が OpenAI のサーバーに渡ります。
パスワード、個人情報、機密データが映り込まないよう注意が必要です。
2. 意図しない操作
モデルが UI 要素を誤認識する可能性があります。
2026年3月に、確認ダイアログを「システムメンテナンスタスク」と偽装することでスキップさせるジェイルブレイクが3件報告されています。
3. 攻撃面の拡大
コンピュータを操作できるということは、悪意のある指示を受けた場合の被害範囲も広がるということです。
OpenAI は GPT-5.4 を Preparedness Framework で「High サイバー能力」に分類しています。
推奨される対策
- 隔離された環境(Docker コンテナ、仮想マシン)で実行する
- ホストの環境変数へのアクセスを遮断する(空の env オブジェクトを渡す)
- ブラウザ拡張機能を無効にする
- ローカルファイルシステムへのアクセスを制限する
- 破壊的操作(ファイル削除、送金など)には人間の承認を挟む
- すべてのサードパーティコンテンツを信頼できない入力として扱う
本番環境のマシンで Computer Use を直接実行することは避けてください。必ずサンドボックス環境を用意し、ネットワークアクセスも最小限に制限してください。
実務での活用シナリオ
シナリオ 1:レガシーシステムのデータ移行
API が存在しない古い社内システムから、データを抽出する場面です。
画面遷移 → テーブルの読み取り → CSV 出力を Computer Use で自動化できます。
手作業で数日かかる作業が、数時間に短縮される可能性があります。
シナリオ 2:E2E テストの自動生成
テスト仕様書を自然言語で記述し、Computer Use に実行させます。
「ログインページを開く → メールアドレスとパスワードを入力する → ログインボタンをクリックする → ダッシュボードが表示されることを確認する」
このような指示をそのまま実行し、結果をスクリーンショットで記録できます。
シナリオ 3:定型業務の自動化
毎朝の報告資料作成を例に取ります。
- BI ツールを開いてレポートをダウンロードする
- Excel でデータを加工する
- メールに添付して送信する
各ステップが UI 操作で完結するため、Computer Use の適用範囲です。
ただし、前述の通り速度面の制約があるため、リアルタイム性が求められる業務には向きません。
シナリオ 4:クロスプラットフォームの操作連携
ブラウザで取得した情報をデスクトップアプリに転記する、といった操作です。
Slack でメッセージを確認 → Jira にチケットを作成 → 社内 Wiki にリンクを貼る。
それぞれ API 連携を組むより、UI 操作で一気通貫させる方が早い場合があります。
料金の目安
実際のコストを試算します。
1ステップあたり、スクリーンショット(約 1,000 トークン相当)+ プロンプト + レスポンスで、概算 2,000〜5,000 トークンを消費します。
| タスク規模 | ステップ数 | 概算トークン数 | 概算コスト |
|---|---|---|---|
| 簡単なフォーム入力 | 5〜10 | 25,000 | 約 $0.4 |
| 中規模ワークフロー | 20〜30 | 100,000 | 約 $1.5 |
| 複雑なマルチアプリ操作 | 50〜100 | 350,000 | 約 $5.0 |
272,000 トークンを超えると入力料金が2倍になります。長時間のワークフローではコンテキストの管理(不要な履歴の削除など)が重要です。
まとめ
GPT-5.4 Computer Use は、LLM が「テキスト生成」から「PC 操作」へ踏み出した節目の機能です。
OSWorld ベンチマークで人間超えのスコアを出した事実は印象的です。
しかし、実務に投入するにはまだ考慮すべき点が多くあります。
- 1ステップ数秒のレイテンシは、大量処理には向かない
- セキュリティリスクの管理に追加コストがかかる
- API 連携で済む場面では、わざわざ Computer Use を使う必要はない
「API がない」「UI 操作でしか到達できない」「手作業を置き換えたい」という場面で真価を発揮します。
銀の弾丸ではなく、ツールボックスに加わった新しい道具として捉えるのが適切です。
まずはサンドボックス環境で小さなタスクを試し、精度・速度・コストの感覚を掴むことをお勧めします。