Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Automating Web Accessibility Testing with AI Ag...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Gaudiy Dev
September 06, 2025
0
0
Automating Web Accessibility Testing with AI Agents
フロントエンドカンファレンス北海道2025 登壇資料 by kotori(
https://x.com/maminami_minami
)
Gaudiy Dev
September 06, 2025
Tweet
Share
More Decks by Gaudiy Dev
See All by Gaudiy Dev
Connectrpcで始まるContract-first開発
gaudiy_dev
0
1
Spanner Change StreamによるTransactional Outboxでの 分散トランザクションの高速化
gaudiy_dev
0
1
AI-DLCの思想に基づくこれからのAI駆動開発
gaudiy_dev
0
0
Green Tea Garbage Collector の今
gaudiy_dev
0
0
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
160
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
What's in a price? How to price your products and services
michaelherold
247
13k
Building Applications with DynamoDB
mza
96
7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
WENDY [Excerpt]
tessaabrams
9
36k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
310
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
220
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
720
Transcript
AIエージェントによるWebアクセ シビリティ試験の自動化 〜Gaudiyが実践するAI活用開発〜 フロントエンドカンファレンス北海道2025 | 株式会社Gaudiy kotori
自己紹介 • kotori ( @maminami_minami) • 株式会社Gaudiy Enabling Team •
札幌出身! • 趣味: 酒・アニメ・声優・お絵描き
について
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL
גࣜձࣾ(BVEJZ@ձࣾઆ໌ࢿྉ$PNQBOZ%FDL4QFBLFS%FDLIUUQTTQFBLFSEFDLDPNHBVEJZDPNQBOZEFDL Design System
全社的なAI活用の推進 • 週次の全社MTGで職種を横断した活用事例の共有 • 40,000円/月 まで経費で任意のAIツールを利用可能 (2025年9月時 点) • Claude
Teamプラン Premiumシート • 先日TeamプランでもClaude Codeが利用可能に🔥 • プロダクト開発に携わるエンジニアのほとんどが利用
話すこと
話すこと🙆 • AIエージェントを活用したa11y試験の自動化手法 • Custom MCPサーバー開発 話さないこと🙅 • アクセシビリティの基礎知識や詳細な実装方法 •
個別のWCAGガイドライン解説
経緯: a11y対応が早急に必要に⚠ ※一部のコミュニティ・機能
早く・正確に・楽したい!🤫
アプローチ • AI以外の主要なツール • eslint-plugin-jsx-a11y • Storybook Test runner +
axe-playwright • @storybook/addon-a11y • axe DevTools • 自動化 with AI エージェント • a11y試験 • レポート作成
AI以外のアプローチ
eslint-plugin-jsx-a11y • JSXのa11y問題を静的に特定 • polymorphicPropName settings • <Typography as=‘h1’> ->
<h1> • components settings • <Image> -> <img>
eslint-plugin-jsx-a11y • label-has-associated-control rule • controlComponents option • コントロールコンポーネントとして認識 •
label を必須に
Storybook Test runner + axe-playwright • Storybook Test runner •
.stories.tsx ファイルをテストファイルとみなす • Story のレンダリングと Play function を実行しチェック • axe-playwright • Playwright + axe-core を組み合わせたa11yテストライブラリ • WebアプリのWCAGコンプライアンスをチェック
Storybook Test runner + axe-playwright
Storybook Coverage • .stories.tsx ファイルを起点とした、Component の coverage を収集・CIでチェック • 新規に
Component を追加した際は必ず Storybook 上で確認で きることを担保 • 必ずしも Component と Story が1対1で存在する必要はなく、先 祖の Component の Story から確認可能であればパス
Storybook Coverage • .stories.tsx ファイルを起点とした、Component の coverage を収集・CIでチェック • 新規に
Component を追加した際は必ず Storybook 上で確認で きることを担保 • 必ずしも Component と Story が1対1で存在する必要はなく、先 祖の Component の Story から確認可能であればパス a11yチェックで広範囲をカバー 詳細: https://zenn.dev/gaudiy_blog/articles/97e924e39d02ae#storybook-coverage
axe DevTools • Chrome拡張機能版のアクセシビリティ検証ツール • 手動でのa11yチェックを効率化 • DOM変更後の状態でスキャン可能 • インタラクティブな要素の状態確認
axe DevTools
AIを利用したアプローチ
最初の試み:Claude Desktop • Playwright MCP • 単体でa11yチェックする機能はない • axe-core等のスクリプトをPlaywright経由で注入する必要… •
a11yチェック MCP • WCAGベースでチェックできるものは野良のツールのみ • 一応はチェック可能だが複数の課題あり (後述
Claude Desktop + a11yチェック MCP
Claude Desktop + a11yチェック MCP いい感じに見えるが…
Claude Desktop + 野良MCPの課題😇 • コンテキスト制限: 上限に達すると会話の継続不可 • インタラクション未対応・特定のDOMの状態でのテスト不可 •
ログイン未対応 • ビューポート指定不可・PCのみ
課題全てをクリアしたい!
Claude Code Custom MCP Server
構成 • Claude Code: a11yテストの実行と結果の分析 • Custom MCP🛠 • Playwright:
マルチブラウザ対応, PC/モバイル ビューポート • axe-core: WCAG基準自動検証 • カスタム評価モジュール • Playwright MCP: a11y問題点の分析
Features • a11yチェック対象管理ファイル • 最適化されたパフォーマンス • 統一されたレポートフォーマット • 動的UI・認証対応 •
評価モジュール実装
a11yチェック対象管理ファイル AIにJSONで管理させ、プロンプトではページ名だけ伝える
最適化されたパフォーマンス • コンテキスト節約 • axe-coreの生データを返すと肥大化 • 冗長なHTML・セレクタ等を削除 • 並列化 •
デスクトップ/モバイル 並列実行
統一されたレポートフォーマット
評価モジュール実装 • 各WCAG項目に特化した評価ロジックを実装 • axe-core だけでの評価には課題 • 誤検出 (False Positive)
の多さ • e.g. 「色だけで情報を伝えてはいけない」-> axe-coreは色の使用自体を違反 と判定しがち • 文脈を考慮しない • N/A判定 • 実際のユーザー操作をシミュレートした上で判定 • e.g. キーボード操作などによるフォーカストラップのテスト
評価モジュール実装 - 例 • 2.2.1 タイミング調整可能 • 課題: 時間制限機能の存在自体を検出できない •
解決: セッションタイムアウト、カウントダウン、自動リダイレクトを動的に検出 • 効果: 時間制限がないページを自動的にN/A判定 • 3.3.3 エラー修正の提案 • 課題: エラーメッセージの質を判定できない • 解決: わざと誤入力→エラー内容を分析→修正提案の有無を判定 • 効果: 「メールアドレスが不正です」vs「@を含む形式で入力」を区別 • 4.1.3 ステータスメッセージ • 課題: 動的な状態変化の通知を検証できない • 解決: ライブリージョンを監視→アクション実行→通知発生を確認 • 効果: 「カートに追加しました」等の通知を自動検証
評価モジュール実装サイクル a11yテスト実施 AIに誤検知の原因を解析させる エラー誤検知 AIに実装を改善させる 精度向上
axe-coreのみでは検知できない問題を 高精度で特定👏
小ネタ TodoWriteでpromptを強制再確認させる
まとめ
まとめ • 一般最適化されたa11yチェックツールではWCAGの項目全てを正 しく確認するのは難しい • 日本語やテスト対象のアプリケーションのコンテキストに寄り添った チェックロジックをAIに実装させる • 全てをAIに委ねることは難しいので人の目による確認も怠らない •
最後は気合い💪
宣伝
余熱NIGHT from FEC北海道&東京2025 • 日時: 2025年9月30日(火) 19:00〜 • 会場: Datadog
Japan Tokyo オフィス • 参加費: 無料 • LT登壇者を募集中!! • 感想・現地レポ • 深掘り or 横展開 #FEC余熱NIGHT
余熱NIGHT from FEC北海道&東京2025 スポンサーLT by Han 小規模&短期間でユーザーに OMO体験 を届けるためのAI駆動開発 #FEC余熱NIGHT
We are hiring!🔥