Playwrightとagent-browser

Accessibility Treeを基盤きばんとしたAI向けむけブラウザぶらうざ自動じどう

(30ふん発表はっぴょうようスライドすらいど解説かいせつ

  1. はじめに(背景はいけい

スライドすらいど内容ないよう
・ ブラウザぶらうざ自動じどう変遷へんせん
・ テストてすと用途ようとからAI Agent用途ようと

解説かいせつ話すはなす内容ないよう

本日ほんじつは、Playwrightを中心ちゅうしんに、最近さいきん注目ちゅうもくされているagent-browserまで含めてふくめてブラウザぶらうざ自動じどうがどのように進化しんかしてきたかを紹介しょうかいします。従来じゅうらいはE2Eテストがしゅ目的もくてきでしたが、現在げんざいはAI Agentがブラウザぶらうざ操作そうさするという新しいあたらしい用途ようと出てでてきています。

  1. 従来じゅうらいブラウザぶらうざ自動じどう

スライドすらいど内容ないよう
・ Selenium / WebDriver
・ CSS Selector / XPath中心ちゅうしん

解説かいせつ

従来じゅうらい自動じどうは、Seleniumに代表だいひょうされるようにDOM構造こうぞう前提ぜんていとし、CSSセレクタやXPathで要素ようそ特定とくていする方式ほうしきでした。この方法ほうほう強力ですきょうりょくですが、DOM変更へんこう弱くよわくメンテナンスめんてなんすコストこすと高いたかいという課題かだいがありました。

  1. Playwrightとは

スライドすらいど内容ないよう
・ Microsoft主導しゅどう
・ Chromium / Firefox / WebKit対応たいおう
・ 自動じどう待機たいき高速こうそく

解説かいせつ

PlaywrightはMicrosoftが主導しゅどうするモダンなもだんなブラウザぶらうざ自動じどうツールつーるです。クロスくろすブラウザぶらうざ対応たいおう自動じどう待機たいき優れたすぐれたデバッグ機能きのうなどを備えそなえ、Seleniumの課題かだい多くおおく解決かいけつしています。

  1. Playwrightのつよ

スライドすらいど内容ないよう
・ Locator API
・ 安定あんていしたテストてすと

// Locator API の使用しようれいひと書くかくテストてすと

1
2
3
4
5
const emailInput = page.locator('input[type="email"]');
await emailInput.fill('test@example.com');

const continueButton = page.locator('button:has-text("Continue")');
await continueButton.click();

※ Locator API は「操作そうさ安定あんていさせるための抽象ちゅうしょう」であり、
ページぺーじ状態じょうたい理解りかいするための snapshot とは目的もくてき異なりことなります。

解説かいせつ

PlaywrightのLocator APIは、単なるたんなるDOM検索けんさくではなく、要素ようそ操作そうさ可能にかのうになるまで自動じどう待機たいきします。テストてすと書くかくひとが「どの要素ようそ操作そうさしたいか」を明示めいじし、その操作そうさ確実にかくじつに成功せいこうさせるための仕組みしくみです。これによりテストてすとのフレークせい大幅におおはばに低減ていげんします。

  1. RustとPlaywright

スライドすらいど内容ないよう
・ Rust bindingsの登場とうじょう
・ playwright-rs

解説かいせつ

Playwright自体じたいはNode.jsが中心ちゅうしんですが、近年きんねんはRustから利用りようするためのplaywright-rsのようなバインディングも登場とうじょうしています。RustプロジェクトぷろじぇくとないでE2Eテストを完結かんけつできるてん特徴とくちょうです。

  1. Rust + Playwrightの位置づけいちづけ

スライドすらいど内容ないよう
・ 非公式ひこうしきバインディング
・ Playwright Serverを利用りよう

解説かいせつ

RustのPlaywrightバインディングは、内部ないぶ的にてきにはNode.jsのPlaywright Serverを呼びよび出してだしています。つまりPlaywrightの能力のうりょくをそのままRustから使えるつかえる構成こうせいです。

  1. 新しいあたらしい課題かだい:AI Agent

スライドすらいど内容ないよう
・ LLMがブラウザぶらうざ操作そうさ
・ DOMは複雑ふくざつすぎる

解説かいせつ

LLMがブラウザぶらうざ操作そうさする場合ばあい、DOM構造こうぞうやCSSセレクタは情報じょうほうりょうおおすぎます。AIにとっては「どこをクリックくりっくすればいいか」を判断はんだんするのが難しいむずかしいという問題もんだい出てでてきました。

  1. Accessibility Treeとは

スライドすらいど内容ないよう
・ ブラウザぶらうざ内部ないぶ語義ごぎ構造こうぞう
・ role / name / state

解説かいせつ

Accessibility Treeは、スクリーンすくりーんリーダーりーだーなどのためにブラウザぶらうざ内部ないぶ持ってもっている語義ごぎ的なてきなツリーつりー構造こうぞうです。ボタンぼたんテキストてきすとボックスぼっくすといった人間にんげん向けむけ意味いみ明確にめいかくに表現ひょうげんされています。

  1. DOMとAccessibility Treeの違いちがい

スライドすらいど内容ないよう
・ DOM:構造こうぞう中心ちゅうしん
・ A11y Tree:意味いみ中心ちゅうしん

解説かいせつ

DOMはレイアウトれいあうと実装じっそう都合つごう反映はんえいされますが、Accessibility Treeは人間にんげん理解りかいしやすい意味いみ最適さいてきされています。AIにとってはこちらのほう扱いあつかいやすい情報じょうほうです。

  1. Playwright と Accessibility Tree(APIれい

スライドすらいど内容ないよう
・ Playwright は A11y Snapshot を取得しゅとく可能かのう

const snapshot = await page.accessibility.snapshot();
console.log(snapshot);

実行じっこう結果けっかれい抜粋ばっすい

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"role": "WebArea",
"name": "Miro | Log in",
"children": [
{
"role": "heading",
"name": "Log in to Miro"
},
{
"role": "textbox",
"name": "Email"
},
{
"role": "button",
"name": "Continue"
},
{
"role": "button",
"name": "Continue with Google"
}
]
}

解説かいせつ

Playwright はブラウザぶらうざ内部ないぶの Accessibility Tree を直接ちょくせつ取得しゅとくできます。

  1. しかし問題もんだいてん

スライドすらいど内容ないよう
・ 情報じょうほうりょう多いおおい
・ AI向けむけではない

解説かいせつ

ただし、このままでは情報じょうほうりょう多くおおく、AI が扱うあつかうにはぜん処理しょり必要ですひつようです。Playwrightが返すかえすAccessibility Treeは忠実ですちゅうじつですが、そのままでは情報じょうほうりょう多くおおく、AIが直接ちょくせつ扱うあつかうには不向きですふむきです。ここに新しいあたらしい抽象ちゅうしょう余地よちがあります。

  1. agent-browserとは

スライドすらいど内容ないよう
・ Vercel Labs
・ AI Agent向けむけCLI

解説かいせつ

agent-browserはVercel Labsが開発かいはつした、AI Agent向けむけブラウザぶらうざ操作そうさCLIです。Playwrightのうえ構築こうちくされていますが、目的もくてき明確にめいかくに異なりことなります。

  1. Snapshot + Refモデルもでる具体ぐたいれい実行じっこう結果けっか

スライドすらいど内容ないよう
・ Accessibility Tree から生成せいせい
・ 操作そうさ要素ようそのみ抽出ちゅうしゅつ
・ 安定あんていした Ref(1, 2…)

1
agent-browser snapshot

実行じっこう結果けっかれい

1
2
3
4
@e1 heading "Log in to Miro"
@e2 textbox "Email"
@e3 button "Continue"
@e4 button "Continue with Google"

解説かいせつ

この出力しゅつりょくは agent-browser が Accessibility Tree を取得しゅとくし、操作そうさ要素ようそだけを抽出ちゅうしゅつした結果けっかです。DOM の階層かいそうや class めい一切いっさい含まふくまれておらず、AI Agent はこの一覧いちらんを「現在げんざい可能なかのうな操作そうさ集合しゅうごう」として扱えあつかえます。

  1. Token削減さくげん効果こうか

スライドすらいど内容ないよう
・ DOM:数千token
・ Snapshot:数百token

解説かいせつ

この設計せっけいにより、LLMに渡すわたす情報じょうほうりょう大幅におおはばに削減さくげんできます。AIにとって非常にひじょうに重要なじゅうようなポイントぽいんとです。

  1. CLIベースべーす利点りてん(Markdownれい付きつき

スライドすらいど内容ないよう
・ コードこーど生成せいせい不要ふよう
・ コマンドこまんど指向しこう
・ LLM に最適さいてき

1
2
3
4
agent-browser open https://miro.com/login/
agent-browser snapshot
agent-browser fill 2 "test@example.com"
agent-browser click 3

解説かいせつ

このように、AI はコードこーどではなく「操作そうさ手順てじゅん」をそのまま列挙れっきょするだけです。Playwright スクリプトすくりぷと生成せいせいする必要ひつようがなく、推論すいろん実行じっこう分離ぶんりできます。

  1. Playwrightとの関係かんけい

スライドすらいど内容ないよう
・ 代替だいたいではない
・ 上位じょういレイヤー

解説かいせつ

agent-browserはPlaywrightを置き換えるおきかえるものではありません。Playwrightの能力のうりょくをAI向けむけさい構成こうせいした上位じょういレイヤーです。

  1. 使い分けつかいわけ指針ししん

スライドすらいど内容ないよう
・ テストてすと:Playwright
・ Agent:agent-browser

解説かいせつ

ひと書くかくテストてすと厳密なげんみつな検証けんしょうにはPlaywright、AI Agentによる探索たんさくてき操作そうさにはagent-browserが適しててきしています。

  1. agent-browser と playwright-mcp の比較ひかくれい付きつき

スライドすらいど内容ないよう
・ CLI vs MCP Server
・ 操作そうさモデルもでる違いちがい

1
2
# agent-browser
snapshot -> choose @e2 -> click @e2
1
2
# playwright-mcp
ToolCall("click", { role: "button", name: "Continue" })

解説かいせつ

agent-browser は ref を中心ちゅうしんとした逐次ちくじコマンドこまんど実行じっこうモデルもでるです。一方いっぽう playwright-mcp は Tool API を介してかいして構造こうぞうされた操作そうさ行いおこないます。統合とうごうさきが CLI か IDE か、という違いちがい大きなおおきな分岐ぶんきてんです。

  1. 将来しょうらいぞう

スライドすらいど内容ないよう
・ AI + Browser
・ 意味いみベースべーす操作そうさ

解説かいせつ

今後こんごはDOMではなく、意味いみベースべーすブラウザぶらうざ操作そうさする流れながれ強まるつよまる考えかんがえられます。Accessibility Treeはその中心ちゅうしん技術ぎじゅつです。

  1. デモでもれい:Miroログインろぐいん操作そうさ実行じっこう結果けっか比較ひかく

スライドすらいど内容ないよう

1
2
3
# 初期状態
agent-browser open https://miro.com/login/
agent-browser snapshot

Snapshot(入力前)

1
2
3
4
5
6
7
8
@e1 heading "Log in to Miro"
@e2 textbox "Email"
@e3 button "Continue"

# 操作
agent-browser fill @e2 "test@example.com"
agent-browser click @e3
agent-browser snapshot

Snapshot(画面遷移後)

1
2
3
4
@e1 heading "Enter your password"
@e2 textbox "Password"
@e3 button "Log in"
@e4 link "Forgot your password?"

解説かいせつ

ここで重要なじゅうようなのは、操作そうさに snapshot をさい取得しゅとくするてんです。画面がめん遷移せんいにより操作そうさ要素ようそ集合しゅうごう変化へんかし、Ref の意味いみ更新こうしんされます。agent-browser では「ページぺーじ変わったらかわったら必ずかならず snapshot」を基本きほん原則げんそくとします。

  1. まとめ

スライドすらいど内容ないよう
・ Playwrightは基盤きばん技術ぎじゅつ
・ agent-browserとplaywright-mcpは用途ようとべつ
・ Accessibility Treeがかぎ

解説かいせつ

最後のさいごのまとめです。Playwrightは依然といぜんとして強力なきょうりょくな基盤きばん技術ぎじゅつです。そのうえで、AI Agent 向けむけには agent-browser や playwright-mcp といった新しいあたらしい抽象ちゅうしょう登場とうじょうしています。DOMではなく、Accessibility Tree を基盤きばんにした意味いみベースべーす操作そうさが、今後こんごブラウザぶらうざ自動じどう中心ちゅうしんになっていきます。

留言

2026-02-10