mcpField
A
accessibility

accessibility

github.com/oakossデザイン・UI20148 回インストール11 週間前に更新
リポジトリ

accessibility について

accessibility は、WCAG 2.2 AA、キーボード操作、ARIA、セマンティック HTML を中心とした Web アクセシビリティとテストのスキルです。デザイナーや開発者向けに、チェックリスト、よくある誤り、支援技術でのテスト方法をまとめています。

主な機能

  1. 01WCAG 2.2 AA のチェック項目
  2. 02キーボード操作とフォーカス管理
  3. 03ARIA 属性の使用ガイド
  4. 04セマンティック HTML とフォームの指針
  5. 05スクリーンリーダーと自動テスト

活用シーン

  1. 01ページの WCAG AA 適合性確認
  2. 02キーボードとスクリーンリーダー操作の確認
  3. 03フォームラベルとエラーメッセージの改善
  4. 04自動アクセシビリティテストの追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill accessibility

インストール後、Claude Code で/accessibilityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
aria-patterns.md
color-and-media.md
focus-management.md
forms-validation.md
semantic-html.md
testing.md

詳細

Web アクセシビリティ(WCAG 2.2 AA)

すべての人のために作りましょう。アクセシビリティは機能ではなく、必須要件です。

コントラスト比(WCAG AA)

要素最小比率
通常のテキスト(< 18pt)4.5:1
大きなテキスト(>= 18pt または 14pt 太字)3:1
UI コンポーネントとフォーカスインジケーター3:1

WCAG 2.2 の新しい AA 基準

基準要件
ターゲットサイズの最小値(2.5.8)インタラクティブなターゲットは 24x24 CSS ピクセル以上
フォーカスを隠さないこと(2.4.11)フォーカスされた要素が少なくとも部分的に表示され、固定ヘッダーやオーバーレイに隠されない
フォーカスの外観(2.4.13)フォーカスインジケーターは最小面積(周囲 2px)を持ち、コントラストの変化は 3:1 以上
ドラッグ操作(2.5.7)ドラッグ操作には、すべてシングルポインターで操作できる代替手段を用意する
冗長な入力(3.3.7)すでに提供された情報の再入力を要求しない
一貫したヘルプ(3.2.6)ヘルプ手段(チャット、電話、FAQ)は、ページ間で同じ相対順序に配置する
アクセシブルな認証(3.3.8)ログイン時に認知機能テストを要求しない(貼り付け、自動入力、または代替手段を許可する)

基本的なキーボード操作パターン

キー操作
Tab / Shift+Tabフォーカス可能な要素間を移動する
Enter / Spaceボタンとリンクを有効にする
矢印キーウィジェット内(タブ、メニュー)を移動する
Escapeダイアログとメニューを閉じる
Home / Endウィジェット内の最初/最後の項目へ移動する

要素の選択

用途要素
ページへ移動する<a href="...">
フォームを送信する<button type="submit">
ダイアログを開く<button aria-haspopup="dialog">
その他の操作<button type="button">
独立した記事<article>
ナビゲーションリンク<nav>
補足情報<aside>

よく使われる ARIA 属性

属性目的
aria-label表示ラベルがない場合の名前
aria-labelledby既存のテキストをラベルとして参照する
aria-describedby追加の説明(ヒント、エラー)
aria-live動的な更新を通知する(polite または assertive)
aria-expanded折りたたみ/展開の状態
aria-hidden="true"装飾要素をスクリーンリーダーから隠す
aria-invalidエラーがあるフォームフィールドを示す
aria-required="true"必須フィールドを示す
aria-busy読み込み中の状態を示す

WCAG 2.2 AA チェックリストの概要

原則主な要件
知覚可能画像に代替テキストを付ける、コントラスト比を 4.5:1 以上にする、色だけを唯一の識別手段にしない、テキストを 200% まで拡大可能にする、動画に字幕を付ける、prefers-reduced-motion に対応する
操作可能キーボードで操作可能にする、フォーカスを見える状態にし、隠れないようにする、フォーカス表示を最小要件に適合させる、ターゲットを 24px 以上にする、スキップリンクを設ける、ドラッグ操作に代替手段を用意する
理解可能<html lang="en"> を設定する、一貫したナビゲーションにする、ヘルプの配置を統一する、フォームラベルを設ける、エラーを特定できるようにする、冗長な入力を求めない、認証をアクセシブルにする
堅牢有効な HTML を使用する、すべての UI コンポーネントに名前・ロール・値を設定する、ステータスメッセージに aria-live を使用する(SC 4.1.1 Parsing は WCAG 2.2 では廃止)

アンチパターン

アンチパターン修正方法
<button> の代わりに <div onClick> を使うセマンティックな HTML 要素を使用する
置き換えなしで outline: none を指定する:focus-visible と視認できるアウトラインを使用する
ラベルとしてプレースホルダーを使う<label> 要素を使用する
tabindex に 0 より大きい値を指定するDOM 順序または tabindex="0" / tabindex="-1" を使用する
色だけで状態を示すアイコンとテキストラベルを追加する
見出しレベルを飛ばすh1-h6 を順番に使用し、CSS でスタイルを設定する
<button> に role="button" を指定する重複する ARIA を削除する
インタラクティブ要素に aria-hidden を指定するインタラクティブなコンテンツを隠さない
フォントサイズを固定する(px)rem 単位を使用する
モーダルダイアログにフォーカストラップがないフォーカスをトラップし、Escape で閉じる

よくある間違い

間違い正しいパターン
すでに可視テキストがある要素に aria-label を追加する代わりに aria-labelledby を使って既存の可視テキストを参照する
緊急でない更新に aria-live="assertive" を使うほとんどの動的コンテンツには aria-live="polite" を使い、assertive はエラーやアラートに限って使用する
情報を伝える画像に alt="" を設定する説明的な代替テキストを指定する。空の alt は純粋な装飾画像に限って使用する
フォーカスできない要素にキーボードイベントハンドラーを追加するネイティブのインタラクティブ要素を使うか、tabindex="0" と role、キーイベントハンドラーを追加する
axe などの自動ツールだけでテストする自動スキャンで検出できる問題は約 30% です。必ずキーボードのみの操作とスクリーンリーダーでのテストも行います

スクリーンリーダーとブラウザーの組み合わせ

スクリーンリーダーブラウザープラットフォーム
JAWSChromeWindows
NVDAChromeWindows(無料)
NVDAFirefoxWindows(無料)
VoiceOverSafarimacOS / iOS
TalkBackChromeAndroid
NarratorEdgeWindows(標準搭載)

テストのクイックガイド

方法ツール所要時間
キーボードのみマウスを非表示にし、ページ内を Tab キーで移動5 分
スクリーンリーダーJAWS + Chrome または NVDA + Chrome/Firefox10 分
スクリーンリーダーVoiceOver + Safari(macOS)10 分
自動スキャンaxe DevTools ブラウザー拡張機能2 分
LighthouseChrome F12 > Lighthouse > アクセシビリティ2 分
単体テストjest-axe(Jest)または vitest-axe(Vitest)継続的

作業の委任

アクセシビリティに取り組む際は、次の担当に委任してください。

  • design-system — カラートークンとコントラストの検証
  • react-patterns — コンポーネントのパターンとフック
  • testing — jest-axe の統合とテストパターン

リソース

参考資料

  • セマンティック HTML と構造 — ドキュメントのランドマーク、見出しの階層、要素の選択、スキップリンク
  • フォーカス管理 — フォーカスインジケーター、フォーカスの遮蔽防止、ダイアログのフォーカストラップ、SPA のルートフォーカス、focus-visible パターン
  • ARIA パターン — アクセシブルなタブ、ライブリージョン、ARIA 属性を使用したデータテーブル
  • フォームとバリデーション — ラベルの関連付け、エラーの通知、重複入力、アクセシブルな認証
  • カラーとメディア — コントラスト要件、モーションの低減、ドラッグ操作の代替手段、動画の字幕、代替テキスト
  • テスト — キーボードテスト、スクリーンリーダーの組み合わせ、axe DevTools、jest-axe と vitest-axe の単体テスト

コメント