SeleniumとPlaywrightが午前2時に「お手上げ」になるとき
午前2時、真っ赤なエラーログが画面を埋め尽くす――それは自動化エンジニアにとっての悪夢です。データをスクレイピングして社内の会計ソフトに流し込むために書いたSeleniumのスクリプトが、実行からわずか5分でクラッシュしました。理由は単純。対象のウェブサイトがデザインを変更したからです。苦労して特定したxpathやcss selectorの山は、一瞬にして役に立たなくなりました。さらに悪いことに、その Windows上で動く会計ソフトは文字通りの「ブラックボックス」であり、APIもDOMもなく、介入する術がありませんでした。
従来の自動化がいかに硬直的であるかは、現実が証明しています。システムにAPIがない場合や、ボット対策でウェブサイトの構造が頻繁に変わる場合、すぐに限界が訪れます。AnthropicのComputer Use APIは、人間と同じような思考プロセスでこの問題を解決する、新しいアプローチとして登場しました。
比較:AIオートメーション vs 従来のRPA
いつどのツールを使うべきか判断するために、それぞれの動作原理を確認しましょう:
- 従来のRPA (Selenium, Playwright): ソースコード(DOM)に完全に依存します。速度は速く精度も高いですが、コード内の1ピクセルでも構造が変わると壊れやすい(brittle)という弱点があります。
- スクリプト型GUI (PyAutoGUI): 固定の座標に基づいてマウスとキーを操作します。そこにボタンがあるかどうかに関係なく、指定された点 (100, 200) を盲目的にクリックします。
- Claude 3.5 Sonnet (Computer Use): AIが実際にスクリーンショットを「見ます」。アイコンを理解し、「キャンセル」ボタンがどこにあろうと、何色であろうと認識した上で、次のアクションを決定します。
Claudeにコンピュータ操作を任せるメリットとデメリット
圧倒的なメリット
- 柔軟な思考: 「送信」ボタンが青から赤に変わっても、Claudeは見つけ出せます。ソースコードではなく、視覚的な体験を重視するからです。
- アプリケーションの壁を突破: ブラウザだけに留まりません。AIはExcelを開いたり、Slackでチャットしたり、数十年前の古い基幹システム(Legacy Systems)を操作したりすることも可能です。
- 自然言語による指示: 何百行ものコードを書く代わりに、「ウェブで10月の売上レポートを探して、デスクトップのExcelファイルにコピーして」と命じるだけで済みます。
注意すべき「課題」
- コスト面: 各アクションごとにAIがスクリーンショットを撮り、サーバーに送信する必要があります。Claude 3.5 Sonnetの入力トークン料金(100万トークンあたり約15ドル)を考えると、ループ処理を回し続けるとコストが急速に膨らみます。
- 遅延(レイテンシ): 爆速を期待してはいけません。AIの思考とレスポンスには、1ステップあたり5〜10秒かかります。
- データセキュリティ: AIは連続的に画面をキャプチャします。誤ってパスワードや機密情報を画面に表示させてしまうと、それらはAnthropicのクラウドに送信されます。
実践:Claudeをサンドボックス環境で動かす
AIを自分の実機で直接動かしてはいけません。指示を誤解してSystem32フォルダをまるごと削除してしまう可能性もゼロではないからです。最も安全な方法はDockerを使用することです。
ステップ 1:APIキーの設定
Anthropic ConsoleにアクセスしてAPIキーを取得します。複雑なタスクは数ドルかかることもあるため、体験用に10ドルほどチャージしておきましょう。
ステップ 2:仮想環境の起動
以下のDockerコマンドを使用して、ブラウザや必要なツールがプリインストールされた仮想デスクトップ環境を作成します:
export ANTHROPIC_API_KEY=your_api_key_here
docker run \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-v $HOME/.anthropic:/home/computeruse/.anthropic \
-p 8080:8080 -p 8501:8501 -p 5900:5900 \
-it anthropic/computer-use-demo:latest
起動後、http://localhost:8080を開くと、Claudeがあなたの命令を待っている操作インターフェースが表示されます。
ステップ 3:Pythonコードへの統合
完全な自動化システムを構築したい場合は、公式SDKを介してAPIを呼び出します:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
tools=[{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
}],
# メッセージ:Chromeを開き、GitHubにアクセスしてAnthropicのリポジトリを探してください。
messages=[{"role": "user", "content": "Chromeを開き、GitHubにアクセスしてAnthropicのリポジトリを探してください。"}],
betas=["computer-use-2024-10-22"],
)
予算を使い果たさないための最適化のコツ
AIにすべてを丸投げするのは、財布を空にする最短ルートです。テストを重ねて導き出した3つの黄金律を紹介します:
- 分割統治: 長いプロセス全体をAIに任せないでください。ロジックの処理には通常のPythonスクリプトを使い、複雑なUI操作が必要な時だけClaudeを呼び出します。
- 解像度 1024×768: これが最適な数値です。これ以上の高解像度は送信される画像が重くなり、トークンを浪費するだけで、AIの賢さはそれほど向上しません。
- ループ制限を必ず設ける:
max_iterationsをハードコードしてください。10ステップ経っても終わらない場合、AIがポップアップなどで立ち往生している可能性があります。
おわりに
Computer Use APIはSeleniumを完全に置き換えるものではありません。ITエンジニアのツールキットに加わった「強力な武器」です。速度を最適化するためにいつ純粋なコードを使い、視覚的なロジックを処理するためにいつClaudeを使うべきかを知ることこそが、単なるプログラマーと、真のソリューションアーキテクトの違いです。
現在、午前3時。難解なスクレイピングタスクをClaudeに投げて処理させているおかげで、スクリプトのクラッシュを心配することなく、安心して眠りにつくことができます。
