WAI-ARIA Authoring Practices Guide
アクセシビリティを
とにかくわかりやすく。
W3C の APG(ARIA Authoring Practices Guide)の各パターンを、日本語で・動くデモつきで・Good / Bad の対比つきで解説します。「なぜそう書くのか」が腑に落ちることを目指しています。
HTML/CSS/JavaScript を書く実装者と、UI をレビューする人のためのサイトです。
動くデモで体感
キーボードやスクリーンリーダーで実際に触れて、挙動の違いを体で理解できます。
Good / Bad の対比
「やりがちな悪い実装」と「推奨実装」を並べ、何が・なぜダメかを明確にします。
実装チェックリスト
各パターンに、そのまま使えるレビュー用チェックリストを用意しています。
最近の仕様変更
W3C APG の最新変更を追跡しています。
1.4.11: 非テキストのコントラストの例外がUIコンポーネントに「継承」されることを明確化
達成基準1.4.11(非テキストのコントラスト)のUnderstandingが全面的に構成し直され、ロゴなど「必須(essential)」の例外に該当するグラフィックがリンクやボタンなどのUIコンポーネントとしても機能する場合、その例外は規範的にUIコンポーネント側にも継承されることが明記されました。ただし推奨事項としてUIコンポーネントを識別できる要素を別途用意すること、フォーカスインジケーターなど基準の他の要件は免除されないことも併記されています。本サイトのデータに変更はありません。
PR #5250(新しいタブで開きます)3.2.4: Understanding を全面改訂、文脈に応じたラベルの違いを許容する旨を明確化
達成基準3.2.4(一貫した識別)のUnderstandingが全面的に書き直されました。同じ機能のコンポーネントに必ずしも同一のラベルやアイコンが必要なわけではなく、「4ページ目」(5ページ目から見ると「前のページ」)のように文脈に応じた表現の違いは許容されると明確化されたほか、同じ機能を異なるアイコンで示す例が新たに失敗例として整理され、印刷レシート/印刷請求書のような異なる機能を持つボタンはこの基準の適用対象外であることも明記されました。規範的な意味の変更はないとされています。本サイトのデータに変更はありません。
PR #5251(新しいタブで開きます)1.3.5: ブラウザが実際に自動入力するかは無関係であることを明確化
達成基準1.3.5(入力目的の特定)のUnderstandingで、ブラウザが実際に自動入力を行うかどうかはこの基準の判定と無関係であり、重要なのは入力目的がプログラムで判別可能かどうかであると明確化されました。ブラウザの推測(ヒューリスティクス)による自動入力は目的の明示にあたらず基準を満たさないこと、autocomplete属性で目的を示しつつ自動入力機能自体はオフにできることも追記されています。本サイトのデータに変更はありません。
PR #5293(新しいタブで開きます)
パターン一覧
気になるパターンから読んでみてください。「準備中」は順次公開します。
開閉・展開
通知・ダイアログ
ナビゲーション
パンくずリスト
解説ありBreadcrumb
サイト内の現在位置を示すナビ。nav とリスト、現在地の aria-current が肝。
メニュー / メニューバー
解説ありMenu and Menubar
アプリ的なメニュー。矢印キー操作と role="menu" 系のロールで構成します。
メニューボタン
解説ありMenu Button
押すとメニューを開くボタン。aria-haspopup と aria-expanded で関係を伝えます。
リンク
解説ありLink
基本にして奥深いリンク。div の onclick ではなく a 要素を使う理由を解説。
ランドマーク
解説ありLandmarks
header / nav / main / footer などでページを領域分けし、素早い移動を可能に。
フォーム・入力
ボタン
解説ありButton
すべての基本。button 要素を使えば得られるアクセシビリティと、自作の落とし穴。
チェックボックス
解説ありCheckbox
オン/オフの選択。中間状態(mixed)を含むチェックボックスの扱いも。
ラジオグループ
解説ありRadio Group
複数から1つを選ぶ。矢印キー移動と roving tabindex の代表例。
スイッチ
解説ありSwitch
オン/オフのトグル。チェックボックスとの違いと role="switch" の使い方。
コンボボックス
解説ありCombobox
入力+候補リスト(オートコンプリート)。APG でも最難関の1つ。
リストボックス
解説ありListbox
選択肢のリストから選ぶ。単一/複数選択と矢印キー操作。
スライダー
解説ありSlider
値を範囲から選ぶ。aria-valuenow/min/max とキーボード操作。
スライダー(複数つまみ)
解説ありSlider (Multi-Thumb)
価格帯などの範囲選択。つまみ同士の干渉とラベリングが論点。
スピンボタン
解説ありSpinbutton
数値の増減入力。上下キーとボタンでの増減、範囲の通知。
メーター
解説ありMeter
既知の範囲内の量(ディスク使用率など)を示す表示専用の指標。