名前 (name) ・役割 (role) 及び値 (value) :
達成基準 4.1.2 を理解する
4.1.2 名前 (name) ・役割 (role) 及び値 (value) : すべてのユーザインタフェース コンポーネント (フォームを構成する要素、リンク、スクリプトが生成するコンポーネントなど) では、名前 (name) 及び役割 (role) は、プログラムによる解釈が可能である。又、状態、プロパティ、利用者が設定可能な値はプログラムによる設定が可能である。そして、支援技術を含むユーザエージェントが、これらの項目に対する変更通知を利用できる。 (レベル A)
注記: この達成基準は、主に独自のユーザインタフェース コンポーネントを開発、又はスクリプトで実装するコンテンツ制作者に向けたものである。例えば、標準的な HTML のコントロールを仕様に沿って使用していれば、既にこの達成基準を満たしていることになる。
この達成基準の意図
この達成基準の意図は、支援技術がコンテンツにあるユーザインタフェース コントロールの状態に関する情報を収集する、その状態をアクティブにする(又は設定する)、及び最新の状態を保つように保証することである。
アクセシブルなウェブコンテンツ技術由来の標準コントロールを使用するとき、このプロセスはごく簡単である。ユーザインタフェース要素を仕様に準じて使用している場合、この達成基準に適合したことになる。(下記の達成基準4.1.2の事例を参照のこと)
しかし、カスタムコントロールを作成する、すなわちインタフェース コンポーネントに通常とは異なる役割、及び/又は機能を持たせるように(ソースコード又はスクリプトに)プログラムする場合、コントロールが支援技術に重要な情報を提供し、支援技術がそのコントロールを制御可能にすることを保証する追加の手段を取る必要がある。
特に重要なユーザインタフェース・コントロールの状態は、フォーカスを持つかどうかである。コントロールのフォーカス状態は、プログラムによる解釈が可能であり、フォーカスの変化に関する通知は、ユーザエージェント及び支援技術に送られる。ユーザインタフェース・コントロールのステータスのその他の例としては、チェックボックス又はラジオボタンが選択されているかどうか、又は折り畳み可能なツリー若しくはリストが展開されている又は折り畳まれているかどうかが挙げられる。
注記: 達成基準 4.1.2 は、すべてのユーザインタフェース コンポーネントに対して、プログラムによる解釈が可能な名前を要求する。名前は、可視であっても、不可視であってもよい。名前がラベルと見なされる場合に、名前は可視でなければならない。より詳しい情報については、用語集にある名前及びラベルの定義を参照のこと。
達成基準 4.1.2の具体的なメリット:
すべてのユーザインタフェース コンポーネントに、役割、状態、及び値の情報を持たせることによって、例えば、スクリーンリーダー、画面拡大ソフトウェア、及び音声認識ソフトウェアなどの、障害のある利用者が使用する支援技術との互換性を保つことを可能にする。
達成基準 4.1.2の事例
アクセシビリティ API
Java アプレットは、Java 言語で定義されたアクセシビリティ API を用いている。
関連リソース
リソースは、情報提供のみを目的としており、推奨を意味するものではない。
達成基準 4.1.2 の達成方法及び不適合事例 - 名前 (name) ・役割 (role) 及び値 (value)
この節にある番号付の項目は、WCAG ワーキンググループがこの達成基準を満たすのに十分であると判断する達成方法、又は複数の達成方法の組合せを表している。しかしながら、必ずしもこれらの達成方法を用いる必要はない。他の達成方法についての情報は、達成基準を満たすための達成方法を理解するの「その他の達成方法」を参照のこと。
十分な達成方法
使用法: そのコンテンツに合致する状況を以下から選択すること。それぞれの状況には、WCAG ワーキンググループがその状況において十分であると判断する、番号付の達成方法(又は、達成方法の組合せ)がある。
状況 A:マークアップ言語(例えば HTML)で標準的なユーザインタフェース コンポーネントを使用している場合:
状況 B:スクリプト又はコードを用いて、マークアップ言語の標準的なユーザインタフェース コンポーネント再定義する場合:
名前及び役割をユーザエージェントに提供し、利用者が設定可能なプロパティを直接設定可能にし、変化を通知する
状況 C:プログラミング技術で標準的なユーザインタフェース コンポーネントを用いる場合:
下記の達成方法固有の技術を用いて、G135: 名前及び役割をユーザエージェントに提供し、利用者が設定可能なプロパティを直接設定可能にし、変化を通知するために、ウェブコンテンツ技術のアクセシビリティ API を使用する。:
状況 D:プログラミング言語で独自のインタフェース・コンポーネントを作成する場合:
下記の達成方法固有の技術を用いて、G10: 識別名及び役割を取得し、利用者が設定可能なプロパティを直接設定可能にし、変化を通知するためにユーザエージェントが動作する、プラットフォームのアクセシビリティ API 機能をサポートするウェブコンテンツ技術を用いて、コンポーネントを作成する:
ARIA4: ユーザインターフェース コンポーネントの役割(role)を明らかにするために、WAI-ARIA ロールを使用する (ARIA)
ARIA5: ユーザインターフェース コンポーネントの状態(state)を明らかにするために、WAI-ARIA ステート及びプロパティ属性を使用する (ARIA)
ARIA16: ユーザインターフェース コントロールの名前(name)を提供するために、aria-labelledby を使用する (ARIA)
SL6: Defining a UI Automation Peer for a Custom Silverlight Control (Silverlight)
SL18: Providing Text Equivalent for Nontext Silverlight Controls With AutomationProperties.Name (Silverlight)
SL20: Relying on Silverlight AutomationPeer Behavior to Set AutomationProperties.Name (Silverlight)
SL30: Using Silverlight Control Compositing and AutomationProperties.Name (Silverlight)
4.1.2 でさらに対応が望まれる達成方法(参考)
適合するためには必須ではないが、コンテンツをよりアクセシブルにするためには、次の付加的な達成方法もあわせて検討するとよい。ただし、すべての状況において、すべての達成方法が使用可能、または効果的であるとは限らない。
暗黙のラベルを持たないすべてのフォーム コントロールにラベルを付加する(リンク追加予定)
達成基準 4.1.2 のよくある不適合事例
以下に挙げるものは、WCAG ワーキンググループが達成基準4.1.2に適合していないとみなした、よくある不適合事例である。
注記: この不適合事例は、将来的に DHTML ロードマップの達成方法を用いて問題が解決されるかもしれない。
F15: 達成基準 4.1.2 の失敗例 - ウェブコンテンツ技術のアクセシビリティAPIを用いていない、又は完全には用いていないカスタム・コントロールを実装している
F20: 達成基準 1.1.1 及び 達成基準 4.1.2 の失敗例 - 非テキストコンテンツの変更時に代替テキストを更新していない
F68: 達成基準 4.1.2 の失敗例 - ユーザインタフェース コントロールがプログラム的に解釈される名前(name)を持っていない
F79: 達成基準 4.1.2 の失敗例 - ユーザインタフェース コンポーネントのフォーカスの状態がプログラムで解釈可能ではない、又はフォーカスの状態の変更が通知されていない
F86: 達成基準 4.1.2 の失敗例 - 例えば電話番号にように、複数に分けられたテキストフィールドのそれぞれに対して、識別名が提供されていない
F89: 達成基準 2.4.4、達成基準 2.4.9、及び 達成基準 4.1.2 の失敗例 - 画像のみがリンクのコンテンツの場合に、アクセシブルな名前(name)が提供されていない
重要な用語
- (この文書で用いられている) 支援技術 (assistive technology (as used in this document))
ユーザエージェントとして機能する、又は主流のユーザエージェントと一緒に機能するハードウェア及び/あるいはソフトウェアで、主流のユーザエージェントで提供されている機能以上の機能を、障害のある利用者の要求を満たすために提供するもの。
注記 1: 支援技術が提供する機能としては、代替の提示 (例: 合成音声や拡大表示したコンテンツ)、代替入力手法 (例: 音声認識)、付加的なナビゲーション又は位置確認のメカニズム、及びコンテンツ変換 (例: テーブルをよりアクセシブルにするもの) などを挙げることができる。
注記 2: 支援技術は、API を利用、監視することで、主流のユーザエージェントとデータやメッセージのやりとりをすることが多い。
注記 3: 主流のユーザエージェントと支援技術との区別は、絶対的なものではない。多くの主流のユーザエージェントは、障害者を支援する機能を提供している。基本的な差異は、主流のユーザエージェントが障害のある人もない人も含めて、広く多様な利用者を対象にしているのに対し、支援技術は、特定の障害のある利用者という、より狭く限られた人たちを対象にしているということである。支援技術により提供される支援は、対象とする利用者に特化した、よりニーズに適したものである。主流のユーザエージェントは、プログラムオブジェクトからのウェブコンテンツの抽出、マークアップの識別可能な構造への解釈といった、重要な機能を支援技術に対して提供する場合がある。
事例: この文書の文脈において重要な支援技術としては、以下のものが挙げられる:
画面拡大ソフト及びその他の視覚的な表示に関する支援技術。視覚障害、知覚障害、及び読書困難などの障害のある人が、レンダリング後のテキスト及び画像の視覚的な読みやすさを改善するために、テキストのフォント、サイズ、間隔、色、音声との同期などを変更するのに使用している。
スクリーンリーダー。全盲の人がテキスト情報を合成音声あるいは点字で読み取るために使用している。
音声変換ソフトウェア。認知障害、言語障害、及び学習障害のある人が、テキストを合成音声に変換するために使用している。
音声認識ソフトウェア。何らかの身体障害のある利用者が使用することがある。
代替キーボード。特定の身体障害のある人がキーボード操作をシミュレートするのに使用している (ヘッドポインタ、シングルスイッチ、呼気・吸気スイッチ、及びその他の特別な入力デバイスを使った代替キーボードを含む)。
代替ポインティングデバイス。特定の身体障害のある人がマウスポインタとボタンの動きをシミュレートするのに使用している。
- プログラムによる解釈 (プログラムによる解釈が可能) (programmatically determined (programmatically determinable))
支援技術 を含む様々なユーザエージェントが抽出でき、利用者に様々な感覚モダリティで提示できるような形のデータがコンテンツ制作者によって提供されたとき、そのデータがソフトウェアによって解釈されること。
事例 1: マークアップ言語で、一般に入手可能な支援技術が直接アクセスできる要素と属性から解釈される。
事例 2: 非マークアップ言語の技術特有のデータ構造から解釈され、一般に入手可能な支援技術がサポートするアクセシビリティ API を通じて支援技術に提供される。
- プログラムによる設定 (programmatically set)
支援技術を含むユーザエージェントがサポートしている手法を用いて、ソフトウェアによって設定されること。
- ユーザインタフェース コンポーネント (user interface component)
コンテンツの一部分で、特定の機能を実現するための単一のコントロールとして利用者が知覚するもの。
注記 1: 複数のユーザインタフェース コンポーネントが、単一のプログラム要素で実装されることもある。ここでいうコンポーネントは、プログラムの手法と結びついたものではなく、利用者が別々のコントロールとして知覚するものを指す。
注記 2: ユーザインタフェース コンポーネントには、フォーム要素、リンクだけでなく、スクリプトで生成されるコンポーネントが含まれる。
事例: アプレットには、コンテンツ内を行単位、ページ単位、又はランダムアクセスで移動するために用いられる「コントロール」がある。これらには、いずれも名前 (name) を割り当て、個別に設定できるようにする必要があるため、それぞれが「ユーザインタフェース コンポーネント」となる。
- ユーザエージェント (user agent)
ウェブコンテンツを取得して利用者に提示するあらゆるソフトウェア。
事例: ウェブブラウザ、メディアプレーヤ、プラグイン、及びその他のプログラム。その他のプログラムには、ウェブコンテンツの取得、レンダリング、やり取りを支援する支援技術を含む。
- 名前 (name)
ソフトウェアが、ウェブコンテンツのコンポーネントを利用者に識別させることができるテキスト。
注記 1: ラベルはすべての利用者に提示される一方で、名前 (name) は隠されていて、支援技術に対してだけ明らかにされる場合もある。多くの場合 (すべてではないが)、ラベルと名前 (name) は同じである。
注記 2: これは、HTML の name 属性とは関係がない。
- 役割 (role)
ウェブコンテンツに含まれるコンポーネントの機能を、ソフトウェアが識別するために用いることができるテキストや数字。
事例: 画像の機能が、ハイパーリンク、コマンドボタン、又はチェックボックスのどれなのかを示している数字。