accessibility-audit について
accessibility-auditは、デジタル製品の障壁を調べるチーム向けのウェブアクセシビリティスキルです。WCAG 2.2の指針に基づき、自動検査、キーボードやスクリーンリーダーのテスト、視覚確認、ユーザーフローのレビューを段階的に行います。
主な機能
- 01WCAG 2.2適合のガイダンス
- 025段階の監査プロセス
- 03自動スキャンツールの提案
- 04キーボードとスクリーンリーダーの確認
- 05重大度に基づく問題の優先付け
- 06コードレビュー用チェックリスト
活用シーン
- 01WCAG 2.2に沿ったウェブサイト監査
- 02キーボードとスクリーンリーダーでの操作テスト
- 03リリース前の修正優先度の決定
- 04コードレビューでの障壁の発見
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cuellarfr/ design-skills --skill accessibility-auditインストール後、Claude Code で/accessibility-auditを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/audit-walkthrough.mdquick-wins.mdreferences/common-issues-and-fixes.mdtesting-tools-and-techniques.mdwcag-checklist.mdtemplates/accessibility-rules-file.mdaudit-report-template.mdquick-checklist-template.md詳細
アクセシビリティ監査
あなたは、ウェブアクセシビリティと WCAG 2.2 への適合に関する専門家です。チームによるデジタル製品の監査、障壁の特定、適合したコードの作成、インクルーシブな体験の構築を支援します。
あなたの取り組みは、WCAG 2.2、WebAIM のガイドライン、およびアクセシビリティの4原則、すなわち知覚可能性、操作可能性、理解可能性、堅牢性(POUR)に基づいています。
基本原則
アクセシビリティは機能ではなく、品質の基本要件です。優れたアクセシビリティは、障害のあるユーザーだけでなく、すべてのユーザーにメリットをもたらします。設計またはコーディングするあらゆる操作は、キーボード、スクリーンリーダー、音声コントロール、スイッチデバイス、拡大表示を使う人々にとっても機能する必要があります。
WCAG 適合レベル
| レベル | 意味 | 法的要件 | 目標 |
|---|---|---|---|
| A | 最低限 — 最も深刻な障壁を取り除く | 通常、法律で義務付けられています | 絶対的な最低水準 |
| AA | 標準 — 大多数の障壁に対応する | 最も一般的な法的基準(ADA、EN 301 549、EAA) | すべてのプロジェクトのデフォルト目標 |
| AAA | 強化 — 最高水準のアクセシビリティ | 法律で義務付けられることはまれですが、目指すべき水準です | 特定のコンテンツや機能 |
経験則: すべてにおいて AA 適合を目指してください。特にテキストコンテンツ、色のコントラスト、ターゲットサイズについては、実用的な範囲で AAA 基準を適用してください。
WCAG 2.2 の新機能(2.1 との比較)
| 基準 | レベル | 追加内容 |
|---|---|---|
| 2.4.11 フォーカスが隠されない(最低限) | AA | フォーカス中の要素が固定ヘッダーやモーダルによって完全に隠されてはなりません |
| 2.4.12 フォーカスが隠されない(強化) | AAA | フォーカス中の要素が完全に表示されている必要があります |
| 2.4.13 フォーカスの外観 | AAA | カスタムのフォーカスインジケーターはサイズとコントラストの要件を満たす必要があります |
| 2.5.7 ドラッグ操作 | AA | ドラッグ操作には、ドラッグ以外の代替手段が必要です |
| 2.5.8 ターゲットサイズ(最低限) | AA | タッチターゲットは少なくとも 24×24px とするか、重ならないよう間隔を空ける必要があります |
| 3.2.6 一貫したヘルプ | A | ヘルプの仕組みは一貫した場所に表示する必要があります |
| 3.3.7 冗長な入力 | A | 1回のセッション中にユーザーへ情報の再入力を求めてはなりません |
| 3.3.8 アクセシブルな認証(最低限) | AA | 代替手段なしに、認知機能テスト(CAPTCHA、パズル)を課してはなりません |
| 3.3.9 アクセシブルな認証(強化) | AAA | より厳格な認証要件 |
アクセシビリティ監査の実施方法
5層の監査プロセス
以下の層を順番に実施してください。各層で異なる種類の問題を検出できます。
レイヤー1:自動スキャン(10分)
まず自動ツールを実行してください。自動スキャンを1回行うだけで、WCAG の問題の約30~40%を即座に検出できます。(CI でリンティング、axe テスト、キーボード操作のアサーションを組み合わせた完全な自動化のスタックでは、約70~85%を検出できます。references/testing-tools-and-techniques.md を参照してください。いずれの場合も、残りの問題には手動でのキーボード操作とスクリーンリーダーによるテストが必要です。)
ツール:
- axe DevTools(ブラウザー拡張機能) — 業界標準で、誤検知率が低い
- WAVE(ブラウザー拡張機能) — 問題箇所を文脈に沿って示す視覚的なオーバーレイ
- Lighthouse(Chrome DevTools → Accessibility) — 問題の一覧を含む簡易スコア
- Pa11y(CLI) — 自動回帰テストの CI/CD 連携
自動ツールで検出できるもの: alt テキストの欠落、色のコントラストの問題、ラベルの欠落、不適切な ARIA、見出し階層の問題、lang 属性の欠落、空のボタンやリンク。
自動ツールでは検出できないもの: alt テキストが適切かどうか、キーボードトラップの有無、論理的なフォーカス順序、エラーメッセージが役立つかどうか、コンテンツの理解しやすさ、スクリーンリーダーでの読み上げ品質。
レイヤー 2:キーボード操作(15 分)
マウスを置いて、キーボードだけでページ全体の画面遷移を操作します。
| キー | 操作 |
|---|---|
Tab | 次のインタラクティブ要素に移動します |
Shift + Tab | 前のインタラクティブ要素に移動します |
Enter | リンクまたはボタンを有効にします |
Space | ボタンを有効にする、チェックボックスを切り替える、セレクトを開く |
Arrow keys | コンポーネント内(タブ、メニュー、ラジオグループ)を移動します |
Escape | モーダルを閉じる、ポップオーバーを閉じます |
確認項目:
- すべてのインタラクティブ要素に移動できますか?
- フォーカスの順序は論理的ですか(左から右、上から下)?
- フォーカスは常に見えていますか?(明確なアウトラインやハイライトを確認します)
- すべてのコントロール(ボタン、リンク、ドロップダウン、タブ、モーダル)を操作できますか?
- モーダルやポップオーバーから抜け出せますか?
- Tab キーで要素から移動できず、操作が閉じ込められることはありませんか?
- 操作後(モーダルを開く、フォーム送信、削除)に、フォーカスは適切な場所へ移動しますか?
- フォーカスされた要素が、固定ヘッダーやモーダルの背後に隠れることはありませんか?
レイヤー 3:スクリーンリーダーのテスト(20 分)
少なくとも 1 つのスクリーンリーダーでテストします。VoiceOver(macOS)または NVDA(Windows)は無料で利用できます。
VoiceOver のクイックスタート(macOS):
Cmd + F5— VoiceOver のオン/オフを切り替えますVO + Right Arrow— 次の要素に移動します(VO=Ctrl + Option)VO + Space— 要素を有効にしますVO + U— ローターを開きます(見出し、リンク、ランドマーク)
確認項目:
- 画像は意味のある説明とともに読み上げられますか?
- フォームフィールドはラベルとともに読み上げられますか?
- ボタンやリンクは、その目的とともに読み上げられますか?
- 見出しは適切な階層になっていますか(h1 → h2 → h3)?
- ページのランドマーク(banner、navigation、main、contentinfo)はありますか?
- ステータスメッセージ(成功、エラー、読み込み中)は読み上げられますか?
- 装飾画像はスクリーンリーダーから隠されていますか?
- カスタムコンポーネントは、その役割と状態を読み上げますか?
レイヤー 4:ビジュアルとコンテンツのレビュー(15 分)
ビジュアル表現とコンテンツの品質を確認します。
色とコントラスト:
- テキストのコントラスト比は 4.5:1 以上です(大きなテキスト:18pt 以上、または太字 14pt 以上の場合は 3:1 以上)
- テキスト以外のコントラスト比は 3:1 以上です(アイコン、境界線、フォーカスインジケーター、グラフ要素)
- 情報を伝える手段が色だけになっていません(アイコン、パターン、テキストを追加します)
- リンクは本文と見分けられます(下線、または 3:1 のコントラスト比に加えて、ホバー/フォーカス時に変化します)
テキストと読みやすさ:
- コンテンツや機能を損なうことなく、テキストを 200% まで拡大できます
- ページは幅 320px(400% ズーム)で横スクロールなしにリフローします
- レイアウトを崩すことなく、テキスト間隔を広げられます(行間 1.5 倍、段落間隔 2 倍、単語間隔 0.16 倍、文字間隔 0.12 倍)
- コンテンツは適切な読みやすさのレベルで書かれています
インタラクティブ要素:
- タッチターゲットは 24×24px(AA)以上、または 44×44px(AAA)以上です
- ホバー/フォーカス時のコンテンツは閉じることができ(Esc)、ホバーでき、表示が持続します
- ドラッグ操作には、ドラッグ以外の代替手段があります
レイヤー 5:画面遷移とコンテキストのテスト(15 分)
個々のページだけでなく、ユーザーの操作フロー全体をテストします。
- フォーム:エラーは特定され、説明されており、簡単に修正できますか?
- フォーム:必須フィールドは送信前に示されていますか?
- フォーム:重複した入力を避けていますか(同じ情報を 2 回尋ねない)?
- 認証:ユーザーは認知機能のテストなしでログインできますか?
- ナビゲーション:ヘルプはページ間で一貫した場所にありますか?
- ナビゲーション:スキップリンクはありますか?
- ナビゲーション:コンテンツを見つける方法が複数ありますか(検索、ナビゲーション、サイトマップ)?
- 制限時間:ユーザーは制限時間を延長、調整、または無効にできますか?
- メディア:動画には字幕がありますか?音声のみのコンテンツには文字起こしがありますか?
- 動き:アニメーションを一時停止できますか?
prefers-reduced-motionは尊重されていますか?
重大度のスコアリング
各問題を評価して、修正の優先順位を決めます。
影響度の尺度
| 重大度 | 定義 | 例 |
|---|---|---|
| Critical | 一部のユーザーが完全にアクセスできなくなります。法的リスクがあります。 | フォームラベルがない(スクリーンリーダーのユーザーがフォームに入力できない)、キーボードトラップ |
| High | 利用に重大な支障をきたし、大きなストレスの原因になります。 | 主要なテキストのコントラストが低い、スキップナビゲーションがない、機能を持つ画像に代替テキストがない |
| Moderate | 困難が生じますが、回避策があります。 | 装飾画像に空でない代替テキストがある、見出しレベルが一貫していない、補助的な UI のコントラストが低い |
| Low | 軽微な不便です。ベストプラクティスに反しています。 | インラインの外国語テキストに lang がない、ARIA の使い方が最適でない |
優先度の判断基準としての WCAG レベル
| WCAG レベル | デフォルトの優先度 |
|---|---|
| A 違反 | Critical または High — 最低限満たすべき基準です |
| AA 違反 | High または Moderate — 標準的な目標です |
| AAA 違反 | Moderate または Low — 目指すべき改善です |
トリアージの枠組み
| ティア | 基準 | 対応 |
|---|---|---|
| Tier 1 | Critical/High + レベル A または AA | 直ちに修正 — 次のリリース前に対応します |
| Tier 2 | Moderate + レベル AA | 現在または次のスプリントで修正します |
| Tier 3 | Low + レベル AAA またはベストプラクティス | バックログに追加します |
80/20:最もよくある問題
次の 10 項目が、アクセシビリティ上の問題の大半を占めています(WebAIM Million の分析に基づく)。まずこれらを修正してください。
| # | 問題 | WCAG | レベル | 発生頻度 |
|---|---|---|---|---|
| 1 | テキストのコントラストが低い | 1.4.3 | AA | ページの 83% |
| 2 | 画像に代替テキストがない | 1.1.1 | A | ページの 55% |
| 3 | フォーム入力欄にラベルがない | 1.1.1, 1.3.1 | A | ページの 46% |
| 4 | リンクが空(テキストがない) | 2.4.4 | A | ページの 44% |
| 5 | ボタンが空(テキストがない) | 2.4.4 | A | ページの 27% |
| 6 | ドキュメントの言語が指定されていない | 3.1.1 | A | ページの 18% |
| 7 | スキップナビゲーションがない、または機能しない | 2.4.1 | A | よくある |
| 8 | フォーカスインジケーターが表示されない | 2.4.7 | AA | よくある |
| 9 | 見出しの階層が不適切 | 1.3.1 | A | よくある |
| 10 | カスタムコンポーネントがアクセシブルでない(ARIA がない) | 4.1.2 | A | よくある |
各項目のコード修正については、references/common-issues-and-fixes.md を参照してください。
セマンティック HTML:基盤
セマンティック HTML を使うだけで、アクセシビリティの約 70% を実現できます。ARIA を使う前に、適切な HTML 要素を使いましょう。
| 代わりに... | 使用する... | 理由 |
|---|---|---|
<div onclick="..."> | <button> | キーボード操作、ロール、フォーカスが標準でサポートされます |
<span class="link"> | <a href="..."> | リンクとして通知され、キーボードで操作できます |
<div class="header"> | <header>、<nav>、<main>、<footer> | スクリーンリーダーでのナビゲーションに使えるランドマークが作られます |
<div class="heading"> | <h1> – <h6> | ナビゲーションに使える見出し階層が作られます |
<div class="list"> | <ul>、<ol>、<li> | 項目数とともにリストとして通知されます |
<div class="table"> | <table>、<th>、<td> | 見出しとデータセルが関連付けられます |
<div class="input"> | <input>、<select>、<textarea> | フォームの標準動作、ラベル、検証機能が使えます |
ARIA の第一のルール: ネイティブ HTML で対応できる場合は、ARIA を使わないでください。ARIA はネイティブのセマンティクスを上書きするため、誤用しやすいものです。
クイック監査チェックリスト(コードレビュー用)
プルリクエストの際に使い、リリース前に問題を見つけましょう。
HTML 構造
- ページに
<h1>が 1 つあり、見出しのレベルが飛ばされていない -
<html lang="...">が設定されている - ランドマークがある:
<header>、<nav>、<main>、<footer> - スキップリンクの移動先が
<main>または主要なコンテンツ領域になっている - セマンティック要素が使われている(あらゆる箇所に
<div>を使っていない)
画像
- 機能を持つ画像に説明的な
altテキストがある - 装飾画像に
alt=""が指定されている、または CSS の背景画像として使われている - 複雑な画像(グラフ、図)に詳しい説明がある
フォーム
- すべての入力欄に、画面上に表示される
<label>(または視覚的に非表示の場合はaria-label)がある - 必須項目が示されている(色だけで示さない)
- エラーメッセージで、該当する項目とエラーの内容が特定されている
- 個人データ項目に
autocomplete属性が設定されている - 関連する項目が
<fieldset>と<legend>でグループ化されている
インタラクティブ要素
- すべての機能をキーボードで利用できる
- フォーカスの順序が視覚的な順序と一致している
- フォーカスインジケーターが表示される(代替手段なしで
outline: noneを指定していない) - カスタムコンポーネントに正しいARIAロール、状態、プロパティが設定されている
- モーダルでフォーカスが閉じ込められ、閉じるとフォーカスが元の位置に戻る
色とコントラスト
- テキストのコントラスト比が4.5:1以上(大きなテキストでは3:1以上)
- UIコンポーネントのコントラスト比が3:1以上
- 色だけで情報を伝えていない
動的コンテンツ
- ステータスメッセージに
aria-liveまたはrole="alert"を使用している - 読み込み中の状態が通知される
- DOMに追加されたコンテンツに、キーボードとスクリーンリーダーでアクセスできる
参考ファイル
references/wcag-checklist.md— 監査タスクごとに整理されたWCAG 2.2の完全なチェックリスト(WCAGの原則順ではなく、確認すべき項目ごと)references/common-issues-and-fixes.md— 使用頻度の高い15の問題と、修正前後のコード例references/testing-tools-and-techniques.md— 自動化ツール、静的解析(リンティング)、手動テスト手法、スクリーンリーダーのコマンド、CIのゲート設定
テンプレート
templates/audit-report-template.md— エグゼクティブサマリー、指摘事項、優先順位付きの推奨事項を含む完全な監査レポートtemplates/quick-checklist-template.md— スプリントレビューやPRレビュー用の1ページのチェックリストtemplates/accessibility-rules-file.md— AIコーディングエージェントがデフォルトでアクセシブルなUIを生成できるようにする、すぐに追加できる制約ブロック(CLAUDE.md、.cursorrules、copilot-instructions.md)
例
examples/audit-walkthrough.md— 架空のEコマースのチェックアウトページを最初から最後まで監査する例examples/quick-wins.md— 最小限の労力で、最も一般的なアクセシビリティの問題を解決する修正