LEARN BY EXAMPLE
4.1.2 名前 (name)・役割 (role)・値 (value) レベル A
操作部品の名前・役割・今の状態や値をソフトにも伝える。
概要
すべての操作部品で、名前と役割をソフトが特定できるようにします。利用者が設定できる状態・特性・値はソフトからも設定でき、それらの変更をブラウザーや支援技術が受け取れるようにします。
開閉ボタンの役割と現在の状態を伝える
PCやスマートフォンで講座サイトを開き、写真入門の持ち物を確認する場面です。
利用者が困る例 見た目だけの開閉ボタン
ボタンなのか、今開いているかがわからない。
読み上げでは文字だけが伝わり、操作部品としての役割や状態を確かめられません。
改善した例 役割と状態が伝わる
写真入門のご案内
写真入門の持ち物
- カメラ、又は撮影できるスマートフォン
- 充電したバッテリー
ソフトへ伝える情報の説明
- 名前
- 受講前の準備
- 役割
- ボタン
- 状態
- 展開(aria-expanded="true")
Tabでボタンへ進み、Enter・Spaceで開閉できます。下の情報欄は実際の読み上げを再現したものではありません。
操作する部品と、現在の開閉状態がわかる。
開閉に合わせて状態を更新し、その変更をソフトが受け取れます。
達成できないと起こる問題の例
読み上げを使う利用者が、PCやスマートフォンで講座サイトを開き、写真入門の持ち物を確認しようとしています。
「受講前の準備」という文字は、画面では開閉ボタンのように見えます。しかし、文字をクリックすると案内が開くようにしただけで、操作部品としての役割や開閉状態をソフトに伝えていません。
利用者には操作できる場所だとわかりにくく、操作後も案内が開いたかを確かめられません。画面で案内が変わるだけでは、その変化を読み上げから把握できないことがあります。
達成するための改善例
同じ場所をHTMLのbutton要素で作り、ボタン内の「受講前の準備」を名前として伝えます。開いているかを示すaria-expandedと、開閉する案内の表示を一緒に更新します。
利用者はボタンの名前と役割、現在の開閉状態を支援技術から確かめて操作できます。開閉後も状態が更新されるため、現在の表示に合った情報を得られます。
図の「改善した例」で、Tabキーでボタンへ移動し、EnterキーやSpaceキーで開閉してみてください。下の情報欄は、部品がソフトへ伝える内容の説明です。実際の読み上げ方や伝える順序は、使うブラウザーや支援技術によって異なります。
確認のポイント
- 入力欄、リンク、ボタン、スクリプトで作る部品など、すべての操作部品に、ソフトが取得できる名前と役割がありますか。
- 利用者が変更できる入力値や選択状態、開閉状態などを、支援技術を通じても変更できますか。
- 操作後に、ソフトへ伝わる状態や値が現在の表示と一致していますか。変更通知をブラウザーや支援技術が利用できますか。
- ブラウザーのアクセシビリティツリーで、支援技術へ伝える名前・役割・状態・値を確認していますか。実際の支援技術でも操作と変更を確かめていますか。
- 見えるラベルを変更したとき、部品の名前も目的に合っているか確認していますか。
条件と補足
名前、役割、状態や値の違い
名前は、ソフトが操作部品を利用者に識別させるためのテキストです。「名前 (name)」はHTMLのname属性とは別の概念です。役割は、その部品がボタン、リンク、入力欄など、どんな機能を持つかを表します。
状態や値には、開閉状態、選択状態、入力した文字列、スライダーの現在値などがあります。フォーカスがあるかも重要な状態です。必要な情報は部品の種類によって変わります。
図のボタンでは、名前は「受講前の準備」、役割は「ボタン」、状態は「展開」又は「折りたたみ」です。文字入力欄なら、項目名とは別に、現在入力されている文字列もソフトが扱えるようにします。
読み取れること、設定できること、変更が伝わること
必要なのは情報を読み取れることだけではありません。利用者が設定できる状態・特性・値は、ブラウザーや支援技術が対応する方法で、ソフトからも設定できる必要があります。変更通知もブラウザーや支援技術が利用できるようにします。
今回の例では、標準のボタンを通じて開閉を操作でき、開閉するたびにaria-expandedを更新します。案内が開いているときはtrue、閉じているときはfalseにして、現在の表示と一致させます。
変更通知を利用できることと、毎回同じ文章が自動で読み上げられることは別です。この例では、開閉状態をソフトへ伝えるために、毎回の状態を読み上げる独自の案内を追加していません。
標準のHTMLとARIA
button、input、select、リンクなど、標準のHTML要素を仕様に沿って使うと、役割や操作方法、状態や値をブラウザーが支援技術へ伝えます。入力欄のlabelなど、部品に必要な名前も適切に関連付けます。
独自の部品や追加の機能を作る場合は、必要な役割・状態・特性をARIAなどで補います。図ではbuttonの標準の役割を使い、aria-expandedで開閉状態を補い、aria-controlsで対象の案内に関連付けています。aria-controlsの使用は、この教材で選んだ実装方法です。
divやspanにrole="button"を付けるだけでは、キーボードで押す動作は追加されません。名前や状態を伝えることに加え、2.1.1「キーボード」などの操作要件も確認します。
見えるラベルや一貫した識別との違い
この基準で扱う名前は、画面に見える場合と、支援技術だけに伝わる場合があります。4.1.2だけで、すべての名前を画面に表示することまで求めるわけではありません。
一方、入力を求める場面のラベル又は説明は3.3.2「ラベル又は説明」で確認します。見えるラベルに文字がある場合、その文字を名前に含めることは2.5.3「ラベルを含む名前 (name)」で確認します。3.2.4「一貫した識別性」は、ページ一式で繰り返す同じ機能を一貫して識別できることを扱います。
図は開閉ボタンについての例です。名前・役割・状態が伝わることだけで、画面やサイト全体のWCAG適合を示すものではありません。
参照資料
- WCAG 2.2 本体:4.1.2 Name, Role, Value(要件)
- WAIC:4.1.2 名前 (name)・役割 (role)・値 (value) の解説(日本語訳)
- W3C:Understanding 4.1.2(英語公開版)
- W3C:H91 標準のHTMLのフォーム部品とリンクを使う方法(実装例)
- W3C:ARIA5 ARIAの状態・特性を伝えて更新する方法(実装例)
- W3C:F59 divやspanを操作部品にして役割を伝えない失敗例
- W3C:ARIA Authoring Practices Guideの開閉部品パターン(実装の参考)
テクニックやパターンは達成する方法の例です。特定の実装方法だけが必須ではありません。
出典の最終確認: 2026-11-09。画面と説明文は、この教材のために作った例です。