第4章 競合比較 ── Playwright・Stagehand・Skyvern との使い分け
ブラウザ自動化の地形図
2026年時点のブラウザ自動化ツールは「AIの関与度」で明確に層が分かれている。
graph TB
subgraph "AI関与なし"
PW["Playwright / Selenium<br/>決定論的・高速・セレクター依存"]
end
subgraph "AI補助"
SH["Stagehand<br/>Playwright + 選択的AI<br/>(act / extract / observe)"]
end
subgraph "AI主導"
BU["browser-use<br/>完全自律エージェント<br/>LLMが全ステップを判断"]
SK["Skyvern<br/>CV + LLM ハイブリッド<br/>単一APIエンドポイント"]
end
subgraph "OS操作レベル"
CU["Computer Use<br/>(Claude / OpenAI Operator)<br/>ブラウザに限らないOS全体の操作"]
end
PW -. "AI適応性が必要になると" .-> SH
SH -. "完全自律が必要になると" .-> BU
Playwright との比較
Playwrightはbrowser-useの「下位レイヤー」として機能しており、対立関係ではなく補完関係にある。しかしプロジェクト選定では比較対象になる。
| 観点 | Playwright | browser-use |
|---|---|---|
| 実行速度 | 高速(ミリ秒単位) | 低速(62秒/タスク平均) |
| 信頼性 | 安定動作時は99%以上 | 70〜83%(タスク複雑度に依存) |
| ページ変更への耐性 | 弱い(セレクター変更で壊れる) | 強い(AIが再判断) |
| セットアップコスト | 高い(セレクターの特定・維持) | 低い(自然言語タスクのみ) |
| 実行コスト | 極めて安い | LLM API費用がかかる |
| 適したタスク | 繰り返し・決定論的・高ボリューム | 複雑・動的・探索的 |
判断基準:
Playwright を選ぶとき
✅ 毎日1000回以上実行する繰り返しタスク
✅ ページ構造が安定しており変更が少ない
✅ CIパイプラインでのUIテスト
✅ LLMコストを最小化したい
browser-use を選ぶとき
✅ ページ構造が頻繁に変わる(ECサイト・動的コンテンツ)
✅ 「このフォームを埋めて送信する」のようなアドホックタスク
✅ 事前にどこをクリックすべきかわからない探索的なタスク
✅ セレクター保守にかかる人件費 > LLMコスト の場合
Stagehand との比較
Stagehand(Browserbaseが開発)は「PlaywrightのAI拡張」として設計されており、browser-useとは設計思想が根本的に異なる。
Stagehandの設計思想:外科的AIアシスト
Stagehandは「Playwrightコードが主体で、難しい部分だけAIを呼ぶ」という思想だ。
// Stagehandのコード例
import { Stagehand } from "@browserbasehq/stagehand";
const stagehand = new Stagehand();
await stagehand.init();
// 普通のPlaywright的な遷移
await stagehand.page.goto("https://example.com");
// AIが必要な部分だけ自然言語指示
await stagehand.page.act("'ログイン' ボタンをクリックして");
// 構造化データの抽出(Zodスキーマで型安全)
const product = await stagehand.page.extract({
instruction: "商品の名前・価格・在庫状況を取得して",
schema: z.object({
name: z.string(),
price: z.number(),
inStock: z.boolean(),
})
});
自動キャッシュ(Stagehand v3の差別化機能):AIが成功したアクションのセレクターパスを記録し、次回実行時はAIを呼ばずに再生する。ページレイアウト変更時のみAIが再介入。繰り返すほどPlaywright並みの速度・コストに近づく。
browser-use の設計思想:LLMが完全制御
browser-useは「LLMが全ステップを判断し、人間は目標だけ伝える」という思想だ。コードではなく自然言語がファーストクラスの市民だ。
# browser-useのコード例
agent = Agent(
task="""
example.comにログインして、
注文履歴の最新5件を取得して、
各注文の金額・日付・ステータスをJSON形式で返して
""",
llm=llm,
)
# あとはAIが全部やる
result = await agent.run()
どちらを選ぶか
flowchart TD
Q1{"TypeScriptが使えるか?"}
Q2{"既存のPlaywrightコードがあるか?"}
Q3{"繰り返し実行で\nコスト最適化が重要か?"}
Q4{"全ステップを予測できないか?"}
SH_WIN["Stagehand が有利<br/>TypeScript・既存資産活用・コスト最適化"]
BU_WIN["browser-use が有利<br/>Python・完全自律・探索的タスク"]
Q1 -- No(Python) --> BU_WIN
Q1 -- Yes --> Q2
Q2 -- Yes --> SH_WIN
Q2 -- No --> Q3
Q3 -- Yes --> SH_WIN
Q3 -- No --> Q4
Q4 -- Yes --> BU_WIN
Q4 -- No --> SH_WIN
Skyvern との比較
Skyvernはbrowser-useと同じ「AI自律エージェント」カテゴリだが、アーキテクチャが異なる。
| 観点 | browser-use | Skyvern |
|---|---|---|
| アーキテクチャ | Playwright + LLM | Computer Vision + LLM |
| APIスタイル | Pythonライブラリ | 単一RESTエンドポイント |
| WebVoyager精度 | 83.3%(BU 2.0) | 85.8% |
| 言語 | Python主体 | REST API(言語非依存) |
| OSS | Yes(コア部分) | Yes |
| クラウド | Yes | Yes |
Skyvernの差別化点は「アプリケーションコードが不要」なことだ。URLとタスクを渡すだけで自律実行する。一方でカスタマイズ性はbrowser-useの方が高い。
ハイブリッドパターン:実務の答え
実務の現場で最も語られているのは「単一ツールへの全振り」ではなく「ハイブリッドパターン」だ。
「本番システムの多くはPlaywrightを80%の予測可能なステップに使い、Stagehand/browser-useを残りの20%のAI判断が必要なステップに使う」(NxCode 比較記事より)
# ハイブリッドパターンの例
from playwright.async_api import async_playwright
from browser_use import Agent
async def scrape_product_data(product_url: str):
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
# ① 予測可能な部分はPlaywrightで高速・安定実行
await page.goto(product_url)
await page.wait_for_load_state("networkidle")
# ② シンプルな構造化データ抽出もPlaywrightで
title = await page.locator("h1.product-title").text_content()
price = await page.locator("[data-price]").get_attribute("data-price")
# ③ 複雑・動的な部分のみbrowser-useのエージェントに委譲
# (例:レビューの要約、比較商品の発見、在庫確認フォームの操作)
agent = Agent(
task=f"このページの主要なユーザーレビューを3つ日本語で要約して: {product_url}",
llm=llm,
browser=existing_browser, # 既存のブラウザセッションを共有
)
review_summary = await agent.run()
await browser.close()
return {
"title": title,
"price": price,
"review_summary": review_summary
}
このパターンの利点は明確だ。コスト・速度・信頼性はPlaywrightが担保し、セレクターが壊れやすい部分・探索的な判断が必要な部分のみAIが担う。
Computer Use との位置づけ
AnthropicのComputer Useとbrowser-useはしばしば混同される。整理しておく。
| 観点 | browser-use | Computer Use(Claude) |
|---|---|---|
| 操作対象 | Webブラウザのみ | OS全体(ブラウザ・デスクトップアプリ等) |
| 実装形態 | Pythonライブラリ | LLM API機能(tool_use) |
| アーキテクチャ | Playwright + LLM | スクリーンショット + 直接マウス/キーボード制御 |
| 使いどころ | Webタスクの自動化 | デスクトップアプリを含む広範なタスク |
browser-useはClaude Computer Useと組み合わせて使うことも可能だ(Claude Computer Useをバックエンドとして使い、browser-useがPlaywrightの制御層を担当する)。