スクリーンリーダーとARIAの第一のルール
ARIAの第一のルールは、ARIAを使わないことです。button のように、その仕事をするHTMLのネイティブ要素がすでにあるなら、div にロールを付けるのではなく、その要素を使います。
スクリーンリーダーが何をもとに動くか
スクリーンリーダーは画素を読みません。ブラウザーはHTMLからアクセシビリティツリーを作ります。これはページを簡単にした写しで、大事な要素にはそれぞれロール(ボタン、リンク、見出し、チェックボックス)と名前(それを特定するテキスト)があり、状態(チェック済み、展開、無効)を持つこともあります。スクリーンリーダーはそのツリーを読み上げたり、点字ディスプレイに送ったりします。WCAG 2.2のレベルAの達成基準4.1.2「名前(name)・役割(role)及び値(value)」は、ページのすべてのコントロールがこの3つを公開することを求めています。
利用者がページを上から下まで聞くことはめったにありません。主なOSに組みこまれたスクリーンリーダーや、インストールできる無料のスクリーンリーダーでは、見出し、リンク、ランドマークの一覧を出したり、次のフォームの入力欄へ飛んだり、1行ずつ読んだりできます。だからこそ、これまでのユニットがとても大切なのです。本物の見出し、ラベルの付いた入力欄、本当にボタンであるボタン、代替テキストは、どれもそのツリーに直接入ります。html 要素の lang 属性も大切です。達成基準3.1.1「ページの言語」がこれを求めており、スクリーンリーダーはこれを使って正しい音声と発音を選びます。
ARIAが加えるもの
WAI-ARIA(Accessible Rich Internet Applications)は、アクセシビリティツリーに入るものを変える属性のセットです。role はロールを、aria-label などの属性は名前を、aria-checked や aria-expanded などは状態を設定します。ARIAが変えるのは、読み上げられる内容だけです。要素をフォーカスできるようにはせず、キーボードの動作も加えず、見た目も変えません。W3CのARIAオーサリング・プラクティス・ガイドは、これを見出しにしています。「悪いARIAよりARIAなしのほうがよい」。まちがったARIAは、スクリーンリーダーの利用者にページについてうそを伝えます。
ARIAの使い方のルール
W3Cの文書『Using ARIA』は、あちこちで引用される短いルールを示しています(2026年2月に作業を中止した草案という扱いになりましたが、ルールそのものは変わっていません)。ルール1:必要な意味と動作がすでに組みこまれたHTMLのネイティブ要素や属性を使えるなら、ARIAでほかの要素を転用せずに、それを使う。ルール2:本当に必要でない限り、ネイティブのセマンティクスを変えない。ルール3:ARIAで作った操作できるコントロールは、すべてキーボードで使えるようにする。ルール4:フォーカスを受けられる要素に role="presentation" や aria-hidden="true" を付けない。付けると、「何もないもの」にたどり着いてしまう利用者が出ます。
ARIAが本当に役立つのは、HTMLでは埋められないすき間を埋めるときです。アイコンだけが入ったボタンにはテキストがないので、名前もありません。aria-label="Close" で名前を付けられます。見えるテキストの隣にあるSVGのアイコンは飾りなので、svg に aria-hidden="true" を付けてツリーから外します。初心者に必要なのは、たいていこの2つの属性です。タブやメニューのようなウィジェット全体は、自分で考え出さずに、オーサリング・プラクティス・ガイドの対応するパターンに従いましょう。
| アクセシビリティツリー | ブラウザーがHTMLから作る、ロール、名前、状態 |
| WCAG 4.1.2 | 名前(name)・役割(role)及び値(value)(A) |
| ARIAの第一のルール | その仕事をするHTMLのネイティブ要素があれば、それを使う |
| aria-label | 要素に名前を付ける。例:アイコンだけのボタン |
| aria-hidden="true" | 飾りをツリーから外す。フォーカスできる要素には決して付けない |
| WCAG 3.1.1 | ページの言語(A):html に lang |
- スクリーンリーダーはアクセシビリティツリーのロール、名前、状態を読みます。
- ARIAが変えるのは読み上げる内容で、動作やフォーカスは変えません。
- ルール1:まずネイティブのHTMLを使う。悪いARIAよりARIAなしのほうがよい。
- aria-label はアイコンだけのボタンに名前を付け、aria-hidden は飾りを隠します。
- スクリーンリーダーが実際に読んでいるのは何ですか?
- HTMLから作られたアクセシビリティツリー
- 画面の画素
- CSSファイル
- サーバーのログ
- 4.1.2がすべてのコントロールに公開を求める3つのものは何ですか?
- 名前、ロール、値
- 色、大きさ、位置
- title、alt、lang
- id、class、style
- ARIAの使い方の第一のルールは何ですか?
- その仕事をするHTMLのネイティブ要素がすでにあれば、それを使う
- すべての要素に role を付ける
- いつも aria-label を使う
- アイコンをだれからも隠す
- span に role="button" を付けました。まだ自分で加えなければならないものは何ですか?
- フォーカスと Enter/Space の処理
- 何も問題はない
- 色
- alt 属性
- W3Cのオーサリング・プラクティス・ガイドにある見出しはどれですか?
- 悪いARIAよりARIAなしのほうがよい
- いつもARIAを使う
- ARIAはHTMLの代わりになる
- ARIAは見た目を整えるためのもの
- アイコンだけのボタンに名前を付けるARIAの属性はどれですか?
- aria-hidden="true" を決して付けてはいけない場所はどこですか?
- フォーカスを受けられる要素
- 装飾の svg
- 背景画像
- 区切り線
- html の lang 属性は、スクリーンリーダーが何をするのに役立ちますか?
- 正しい音声と発音を選ぶ
- 見出しを見つける
- 代替テキストを読む
- コントラストを変える
- ARIAは要素の見た目を変えますか?
- いいえ。変えるのは読み上げる内容だけ
- はい、いつも同じ
- role だけは変える
- ダークモードのときだけ変える
- スクリーンリーダーの利用者がページを移動するいちばんよくある方法は
- 見出し、リンク、ランドマークの一覧
- 上から下まですべての語を読む
- 拡大する
- 印刷する
このコースの出典 (9)
- W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
- W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
- W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
- W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
- MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
- MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
- MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
確認日: 2026-10-17