出版以来の報告されたエラーや問題に対するエラッタを確認されたい。
翻訳も参照のこと【訳注:これは日本語非公式訳です】。
Copyright © 2014-2018 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
この文書は、ユーザーエージェントがウェブコンテンツ言語からアクセシブルオブジェクトの名前および説明をどのように決定するのかを説明する。この情報はアクセシビリティAPIを通じて公開されるため、支援技術はこのオブジェクトを識別し、その名前または説明をユーザーに提示することができる。名前および説明を決定するためのアルゴリズムを文書化することは、異なるアクセシビリティAPI間でこれらのプロパティの相互運用可能な公開を促進し、この情報が著者の意図と一致する方法で表示されるように保証することを促す。
アクセシブルな名前および説明の計算仕様は、複数のコンテンツ技術に適用されるサポートを定義する。これには、汎用のWAI-ARIA [WAI-ARIA]ロール、ステート、およびプロパティだけでなく、個々のコンテンツ言語に固有の機能によって提供されるアクセシブルな名前および説明も含まれる。
この文書は、WAI-ARIA 1.0 User Agent Implementation Guide [WAI-ARIA-IMPLEMENTATION] W3C勧告のアクセシブルな名前および説明のガイダンスに取って代わる。この文書は、WAI-ARIA Overviewで説明されているWAI-ARIAスイートの一部と位置付けられている。
この節は、公開時点におけるこの文書のステータスについて説明する。他の文書がこの文書に取って代わるかもしれない。W3Cが現在公開しているリストとテクニカルレポートの最新版は、W3C technical reports index at https://www.w3.org/TR/で見つけることができる。
この文書は、Accessible Rich Internet Applications Working GroupによるAccessible Name and Description Computation (Accname) 1.1の W3C Recommendationである。Working Groupは、仕様が実装可能であることを実証するために Accname 1.1実装レポートを作成した。Accname 1.1への変更点の履歴は付録で利用可能である。
この文書にコメントするには、W3C accna GitHubリポジトリーに提出する。これを実行できない場合、[email protected](コメントアーカイブ)にメールを送信する。Accname 1.1勧告に寄せられたコメントは、この仕様のバージョンに変更をもたらすことはできないが、エラッタまたはAccnameの将来のバージョンで対処することができる。ワーキンググループは、コメントに正式な回答をすることはないが、ワーキンググループによって行われる将来の仕事は、この文書で寄せられたコメントに対処することができる。技術の進行中の更新は、公開エディターズドラフトで見ることができる。
この文書は、RecommendationとしてAccessible Rich Internet Applications Working Groupによって発行された。
Working Groupの実装レポートを参照されたい。
この文書は、W3Cのメンバー、ソフトウェア開発者、および他のW3Cグループや利害関係者によって検討され、W3C勧告としてディレクターによって承認されている。これは安定した文書であり、規範的仕様として使用されてもよく、他の文書から引用してもよい。勧告の作成におけるW3Cの役割は、仕様に注意を引き付け、広範な開発を促進することである。これはウェブの機能と相互運用性を強化する。
この文書はW3C特許ポリシーの下で活動するグループによって作成された。W3Cは、グループの成果物に関するあらゆる開示特許の公開リストを管理する。ここには、特許開示にあたっての指示も含まれている。特許について十分に知識のある人物が、仕様にEssential Claim(s)が認められると判断した場合は、W3C特許ポリシーの第6章に従い情報を開示する必要がある。
この文書は、2018年2月1日のW3Cプロセス文書によって管理される。
この章は非規範的である。
ユーザーエージェントはDOM [DOM]から情報を取得し、アクセシブルなオブジェクトで構成されるアクセシビリティツリーと呼ばれる並列構造を作成する。アクセシブルなオブジェクトは、そのロール、ステート、およびプロパティに関する情報を提供する。一例は、ロールがmenuitem
であり、現在haspopup
プロパティを持つenabled
状態にあり、それがサブメニューにつながることを示す、アクセシブルなオブジェクトである。
この文書で説明されるアクセシブルなオブジェクトの2つのプロパティは、そのアクセシブルな名前およびアクセシブルな説明である。名前は、オブジェクトの目的に関する情報を提供する短いラベルである。メニュー項目のアクセシブルな名前の例はNew
であり、メニュー項目が新しい文書、ウィンドウなどを作成するために提供することを意味する。
説明は、アクセシブルなオブジェクトの性質をさらに明確にする短い説明である。名前が十分である場合に説明を提供する必要は必ずしもないが、ユーザーがオブジェクトの使用法をよりよく理解するのに役立つ。
アクセシビリティAPIは現在、アクセシブルな名前および説明のためのフラットな非構造化文字列をサポートしている。名前/説明の計算結果は、フラットな文字列である。
用語"アクセシブルな名前"および"アクセシブルな説明"は、それらがアクセシビリティAPIによって公開されているアクセシブルなオブジェクトのプロパティであることを強調するために使用されている。しかし、それらは、以後単に"名前"および"説明"とたびたび呼ばれる。
非規範的とマークとしてマークされる章と同様に、この仕様のすべてのオーサリングガイドライン、図、例、およびノートは非規範的である。この仕様における他のすべては規範的である。
キーワードは、[RFC2119]で示されるとおりに解釈されなければならない。
RFC 2119のキーワードは、(原文で)大文字で整形されかつclass="rfc2119"
をもつstrong
要素で包まれる。上に示したキーワードが使用されるが、この形式を共有しない場合キーワードは、RFC 2119の意味で形式的な情報を伝達せず、単なる説明、すなわち、参考情報である。可能な限り、そのような用途は、この使用において回避される。
ある章規範的または非規範的(参考情報である)であるかかどうかの指示は、節を含む章全体に適用される。
参考情報の章は、この仕様を理解するのに有益な情報を提供する。そのような章は、推奨されるプラクティスの例を含むかもしれないが、この仕様に準拠するためにそのような推奨に従うことを必要としない。
一部の用語は適当な位置に定義されるが、以下の定義は、この文書全体で使用される。
オペレーティングシステムおよびその他のプラットフォームは、支援技術にオブジェクトおよびイベントに関する情報を公開する一連のインターフェイスを提供する。支援技術は、情報を取得し、それらのウィジェットと対話するためにこれらのインターフェイスを使用する。アクセシビリティAPIの例は、Microsoft Active Accessibility [MSAA]、Microsoft User Interface Automation [UI-AUTOMATION]、MSAA with UIA Express [UIA-EXPRESS]、Mac OS X Accessibility Protocol [AXAPI]、Linux/Unix Accessibility Toolkit [ATK]およびAssistive Technology Service Provider Interface [AT-SPI]、ならびにIAccessible2 [IAccessible2]である。
ユーザーインターフェイス(UI)の構造を表すアクセシブルなオブジェクトのツリー。アクセシビリティツリーの各ノードは、アクセシビリティAPIを介して公開されるようなUIにおける要素を表す。例えば、プッシュボタン、チェックボックス、またはコンテナなど。
アクセシブルな説明は、インターフェイス要素に関連する、アクセシブルな名前を補完する追加情報を提供する。アクセシブルな説明は、視覚的に知覚されるかもしれないし、されないかもしれない。
アクセシブルな名前は、ユーザーインターフェイス要素の名前である。各プラットフォームのアクセシビリティAPIは、アクセシブルな名前プロパティを提供する。アクセシブルな名前の値は、可視(たとえば、ボタンの可視テキスト)またはユーザーインターフェイス要素の不可視(たとえば、アイコンを説明する代替テキスト)プロパティから得られるかもしれない。関連するアクセシブルな記述を参照のこと。
アクセシブルな名前プロパティに対する簡単な用法は、"OK"ボタンによって説明することができる。テキスト"OK"は、アクセシブルな名前である。ボタンがフォーカスを受け取る場合、支援技術は、アクセシブル名前をもつプラットフォームのロールの説明を連結できる。たとえば、スクリーンリーダーは、"押しボタンOK"または"OKボタン"を話すことができる。連結の順序および役割の説明の詳細(たとえば"ボタン"、"押しボタン"、"クリック可能ボタン")は、プラットフォームアクセシビリティAPIまたは支援技術によって決定される。
アクセシビリティAPIのアクセシビリティツリーにおけるノード。アクセシビリティオブジェクトは、支援技術による用途に対する、さまざまなステート、プロパティおよびイベントを公開する。一般にマークアップ言語(HTMLやSVGなど)のコンテキストにおいて、特にWAI-ARIAにおいて、マークアップ要素およびその属性は、アクセシブルなオブジェクトとして表される。
ハードウェアおよび/またはソフトウェアは:
この定義は他の文書で使用したものと異なるかもしれない。
この文書のコンテキストにおいて重要である支援技術の例としては次のものを含む:
この仕様において、属性は、マークアップ言語における属性として使用される。属性は、要素によって表されるオブジェクトのステートおよびプロパティに関する情報を提供するために要素に追加される構造的特徴である。
類似の特性を共有する一連のインスタンスオブジェクト。
この仕様において、要素は、マークアップ言語における要素として使用される。要素は、オブジェクトに対するデータプロファイルを含むマークアップ言語における構成要素である。
コンピュータシステムにおける他のオブジェクトにオブジェクトのステートで個別の変化を通信するために使用されるプログラムのメッセージ。ウェブページへのユーザー入力は、相互作用を記述する抽象イベントを介して一般的に媒介され、ドキュメントオブジェクトのステートの変化の通知を提供することができる。一部のプログラミング言語において、イベントは、通知としてより一般的には知られる。
要素がすべてのユーザーに可視、知覚可能またはインタラクティブでないことを示す。要素またはいずれかのその祖先要素がレンダリングされないか明示的に隠される場合、要素は非表示と考えられる。
情報目的で提供されかつ適合のために必須でないコンテンツ。適合するために必要なコンテンツは、規範的と呼ばれる。
DOMツリーまたはアクセシビリティツリーにおけるオブジェクトの基本型。DOMノードは、他の型の中で、要素またはテキストノードとしてさらに指定される。アクセシビリティツリーのノードは、アクセシブルなオブジェクトである。
適合のために要求されるもの。対照的に、参考情報または"非規範"として識別されるコンテンツは、適合のために必須でない。
ユーザーインターフェイスのコンテキストで、1つ以上の要素によってマークアップ言語で表現され、ユーザーエージェントによってレンダリングされる、知覚的ユーザーエクスペリエンスの項目。
プログラミングのコンテキストで、1つ以上のクラスおよび同様のオブジェクトの一般的な特性を定義するインターフェイスのインスタンス。アクセシビリティAPIにおけるオブジェクトは、1つ以上のDOMオブジェクトを表すことができる。アクセシビリティAPIは、DOMインターフェイスと区別されるインターフェイスを定義している。ユーザーが感じることができる方法でユーザーに提示可能なもの。この文書における参照はWCAG 2.1原則1:コンテンツは知覚可能でなければならないに関連する。[WCAG20]
指定されたオブジェクトの性質に不可欠である、またはオブジェクトに関連付けられたデータ値を表す属性。プロパティの変化は、オブジェクトの意味または見栄えに著しい影響を与えるかもしれない。特定のプロパティ(たとえば、aria-multiline
)は、ステートを変更する可能性がより低いが、変更差分の周期は原則でないことに注意する。aria-activedescendant
、aria-valuenow
、およびaria-valuetext
のような少数のプロパティは、頻繁に変更することが期待される。ステート対プロパティの明確化を参照のこと。
種類の主な指標。このセマンティックな関連付けはツールが存在してもよく、その種類の他のオブジェクトに関するユーザーの期待と一致する方法でオブジェクトとの相互作用をサポートしてもよい。
コンピューターが要素および属性などのオブジェクトの表現を処理し、かつさまざまな人間がオブジェクトの一貫した理解を相互に達成するような方法でオブジェクトを確実に表現できるような方法で定義される、人間によって理解されるようなものの意味。
ステートは、ユーザーのふるまいまたは自動化プロセスに応じて変更することができるオブジェクトの特性を表現する動的なプロパティである。ステートは、オブジェクトの本質的な性質に影響を与えないが、オブジェクトまたはユーザーインタラクションの可能性に関連したデータを表す。プロパティに対するステートの明確化を参照のこと。
デスクトップユーザーエージェントのマウスホバーに応答してなど、ユーザーエージェントにツールチップの生成をもたらすホスト言語の属性。
ウェブコンテンツとのエンドユーザーのやりとりを引き出し、レンダリングしかつ容易にする任意のソフトウェア。この定義は他の文書で使用したものと異なるかもしれない。
ユーザーが対話することができる個別のユーザーインターフェイスオブジェクト。ウィジェットは、1つの値または操作(たとえば、ボックスやメニュー項目をチェックする)を持つ単純なオブジェクトから、多数の管理されたサブオブジェクト(たとえば、ツリーやグリッド)を含む複雑なオブジェクトへと多岐にわたる。
名前および説明計算の出発点はDOM要素である。その出力はフラットであり、とても単純な1つの単語となりうる構造化されていない文字列、すなわちスペースで区切られたトークンの文字列である。例としては、Save
とReload from disk
がある。
重要な因子は要素のロールである。これは、どのコンテンツが名前文字列に寄与するかを決定する。ロールはnameFrom
RDFプロパティを持ち、次の2つの値を取りうる:
aria-label
およびaria-labelledby
属性などの明示的なマークアップ機能、またはHTMLのalt
もしくはtitle
属性、SVGのdesc
要素などのホスト言語のラベル付けメカニズムで著者によって提供される値から生成される。Accessible Rich Internet Applications (WAI-ARIA) 1.1 [WAI-ARIA]仕様は、著者由来の名前およびコンテンツ由来の名前をサポートするロールのリストを提供している。
ユーザーエージェントは、下記のアクセシブルな名前および説明の計算の節で概説される規則を使用して、アクセシブルな名前を計算しなければならない。
aria-describedby
が存在する場合、ユーザエージェントは、現在の要素のaria-describeby
属性によって参照される要素のテキストによる代替を連結することによってアクセシブルな説明を計算しなければならない。参照される要素のテキストによる代替は、アクセシブルな名前および説明の計算の節で概説される複数の方法を使用して計算される。
アクセシブルな名前および説明の計算は、アクセシブルな名前とアクセシブルな説明の両方を生成するために使用される。複数の異なる種類の要素、ノード、およびマークアップの組み合わせに対して提供される異なる規則が存在する。適切な場合、テキストによる代替は、要素内に含まれるすべての関連コンテンツから構築される。これは、テキスト自身が参照する自身の子またはノードからテキストを検索するための規則の完全なセットを使用して、再帰的なステップ2Bおよび2Fを経て達成される。
計算の目的は、スペースで区切られたテキストトークンのフラットな文字列の形式で、代替プレゼンテーション用の知覚可能なラベルまたは説明を作成することである。
root node
のテキスト同等物を計算するために現に横断したDOMノード。最初は、current node
がroot node
であるが、後の段階では、root node
の子孫か、別の参照されるノードのいずれかになる。current node
を含めない。result
をXにコピーする。result
をXの末尾にコピーする。result
をXにコピーする。result
をXにコピーする。result
をXにコピーする。result
をXの先頭にコピーする。result
をXにコピーする。result
をXの先頭にコピーし、そのコピーの後にスペースを追加する。与えられた要素に対するテキストによる代替は、次のように計算される:
root node
を与えられた要素に、current node
をroot node
に、そしてtotal accumulated text
を空文字列("")に設定する。current node
のテキストによる代替を計算する:current node
が非表示であり、かつaria-labelledby
またはaria-describeby
によって直接参照されない場合、もしくはネイティヴホスト言語のテキストによる代替要素(HTMLのlabel
など)または属性によって直接参照されない場合、空文字列を返す。
current node
が少なくとも1つの妥当なIDREFを含むaria-labelledby
属性を持ち、かつcurrent node
がまだaria-labelledby
トラバーサルの一部でない場合、そのIDREFを発生順に処理する:current node
が少なくとも1つの妥当なIDREFを含むaria-describedby
属性を持ち、かつcurrent node
がまだaria-describedby
トラバーサルの一部でない場合、そのIDREFを発生順に処理する:accumulated text
を空文字列に設定する。current node
をIDREFによって参照されるノードに設定する。current node
のテキストによる代替を計算する。result
結果をそのテキストによる代替に設定する。 result
をaccumulated text
に追加する。accumulated text
を返す。次の例は、「…かつcurrent node
がまだaria-labelledby
トラバーサルの一部でない…」という句の意味を示している。
element1
のアクセシブルな名前は"hello"である。これは、そのaria-labelledby
の最初のトラバースであり、element3
につながるためである。element2
はアクセシブルな名前を持たない。計算は、element1
につながるaria-labelledby
の最初のトラバースを含むが、element1
のaria-labelledby
はその後は続かない。<element1 id="el1" aria-labelledby="el3" />
<element2 id="el2" aria-labelledby="el1" />
<element3 id="el3"> hello </element3>
current node
が空文字列でなく、空白を除去したときに空文字列でもないaria-label
属性を持つ場合:current node
のトラバースが再帰によるものであり、かつcurrent node
がステップ2Eで定義されている埋め込みコントロールである場合、aria-label
を無視してルール2Eにスキップする。aria-label
の値を返す。次の例は、ノードが自分自身を参照するaria-labelledby
を持つときの、aria-labelledby
とaria-label
の相互作用を示している。<span role="button">
要素は、それぞれ"Delete Documentation.pdf"と"Delete HolidayLetter.pdf"というアクセシブルな名前を持つ。
<h1>Files</h1>
<ul>
<li>
<a id="file_row1" href="./files/Documentation.pdf">Documentation.pdf</a>
<span role="button" tabindex="0" id="del_row1" aria-label="Delete" aria-labelledby="del_row1 file_row1"></span>
</li>
<li>
<a id="file_row2" href="./files/HolidayLetter.pdf">HolidayLetter.pdf</a>
<span role="button" tabindex="0" id="del_row2" aria-label="Delete" aria-labelledby="del_row2 file_row2"></span>
</li>
</ul>
current node
のネイティヴマークアップがテキストによる代替を定義する属性(title
など)または要素(HTML label
など)を提供する場合、要素がプレゼンテーションとしてマークされない限り(role="presentation"
またはrole="none"
)、ホスト言語によって定義されたflat string
の形式でその代替を返す。 たとえば、HTMLにおいて、img
要素のalt
属性はテキストによる代替文字列を定義し、label
要素は参照されるフォーム要素のテキストを提供する。SVG2において、desc
要素およびtitle
要素は、それらの親要素の説明を提供する。
current node
が別のwidgetのラベル内に埋め込みコントロール(HTMLのlabel
要素、またはaria-labelledby
によって直接参照される要素など)である場合、次の方法でテキストによる代替の一部として埋め込みコントロールを含める:aria-valuetext
プロパティが存在する場合、その値を返す。aria-valuenow
プロパティが存在する場合、その値を返す。current node
のロールがコンテンツ由来の名前を許可する場合、またはcurrent node
がaria-labelledby
もしくはaria-describeby
によって参照される、もしくはネイティヴホスト言語のテキストによる代替要素(HTMLのラベル
など)である場合、またはネイティヴホスト言語のテキストによる代替要素の子孫である場合:accumulated text
を空文字列に設定する。current node
に関連付けられているCSSで生成されたテキストコンテンツを確認し、それをaccumulated text
に含める。CSS :before
および:after
擬似要素[CSS2]は、コンテンツモデルを持つ要素にテキストコンテンツを提供することができる。:before
擬似要素の場合、ユーザーエージェントは、スペースなしでCSSテキストコンテンツをcurrent node
のテキストコンテンツの先頭に追加しなければならない。:after
擬似要素の場合、ユーザーエージェントは、スペースなしでCSSテキストコンテンツをcurrent node
のテキストコンテンツに追加しなければならない。current node
のそれぞれの子ノードに対して:current node
を子ノードに設定する。current node
のテキストによる代替を計算する。result
結果をそのテキストによる代替に設定する。 result
をaccumulated text
に追加する。accumulated text
を返す。重要:サブツリーの各nodeは一度だけ調べられる。テキストが子孫から収集されたが、いくつかの子孫ノードで別のIDREFによって参照される場合、その2回目以降の参照は行われない。これは、無限ループを避けるために行われる。
このステップは子ノード自体にも適用でき、これは計算が再帰的であり、かつcurrent node
のサブツリー内のすべての要素から収集されるテキストをもたらすことを意味する。しかし、任意の与えられたの子孫nodeのテキストによる代替は、上記のステップBからDで説明したより高い先行するマークアップに由来することがある。ここで"Namefrom: author"属性は、サブツリー全体のテキストによる代替を提供する。
current node
がテキストノードである場合、そのテキストのコンテンツを返す。current node
がアクセシブルな名前またはアクセシブルな説明が計算されている要素の子孫であり、かつ子孫を含む場合、2F.iに進む。current node
がツールチップ属性を持つ場合、その値を返す。ツールチップ属性は、サブツリーのコンテンツを含めて他に何も結果を提供できない場合にのみ、使用される。
スペース付きで上記の各ステップのresult
をtotal accumulated text
に追加する。
すべてのステップが完了した後、total accumulated text
は、計算を開始した要素のアクセシブルな名前またはアクセシブルな説明として使用される。
labelled-by/label-forおよびdescribed-by/description-forなどの関係を含む、名前および説明のアクセシビリティAPIマッピングに関する情報は、Core Accessibility API Mappings specification [CORE-AAM-1.1]に記載されている。aria-label
、aria-labelledby
、およびaria-describedby
のマッピングテーブルエントリーを参照のこと。
<img>
to HTML-AAM.この章は非規範的である。
次の人は、この文書の開発に貢献した。
この出版物は、契約番号ED-OSE-10-C-0067のもとで米国教育省・障害者リハビリテーション研究所(NIDILRR)の政府資金によって一部賄われている。この出版物の内容は、必ずしも米国教育省の見解や政策を反映するものではなく、また商品名、商用製品、組織の言及は米国政府による支持を意味するものではない。