公開後に報告されたエラーや問題については、 正誤表をご確認ください。
また、 翻訳もご覧ください。
著作権 © 2014-2018 W3C® (MIT, ERCIM, 慶應義塾大学, 北京航空航天大学). W3C 責任, 商標 および 文書利用 規則が適用されます。
この文書は、ユーザーエージェントがウェブコンテンツ言語から名前および説明をどのようにアクセシブルオブジェクトに対して決定するかを説明します。この情報は、アクセシビリティAPIを通じて公開され、 支援技術がこれらのオブジェクトを識別し、ユーザーに名前や説明を提示できるようにします。 名前や説明がどのように決定されるかのアルゴリズムを文書化することで、異なるアクセシビリティAPI間でこれらのプロパティが相互運用可能に公開され、著者の意図に沿った一貫性のある情報提示が促進されます。
アクセシブルな名前と説明の算出仕様は、複数のコンテンツ技術にまたがるサポートを定義しています。これには、汎用のWAI-ARIA [WAI-ARIA] ロール、状態、プロパティによるアクセシブルな名前と説明、および個々のコンテンツ言語固有の機能が含まれます。
この文書は、WAI-ARIA 1.0 ユーザーエージェント実装ガイド [WAI-ARIA-IMPLEMENTATION] W3C 勧告におけるアクセシブルな名前と説明のガイダンスを置き換えます。本仕様は、WAI-ARIA 概要で説明されている WAI-ARIA スイートの一部です。
このセクションは公開時点の文書のステータスを説明します。他の文書がこの文書に取って代わる場合があります。現行標準の W3C 公開物リストおよびこの技術レポートの最新改訂版は W3C 技術レポートインデックス https://www.w3.org/TR/ でご確認いただけます。
本仕様は Accessible Name and Description Computation (Accname) 1.1 W3C 勧告であり、Accessible Rich Internet Applications ワーキンググループが策定しました。ワーキンググループは仕様が実装可能であることを示すためAccname 1.1 実装報告を作成しました。Accname 1.1 の変更履歴は付録でご覧いただけます。
本仕様へのコメントは、 W3C accname GitHub リポジトリに issue を提出してください。提出が難しい場合は、public-aria@w3.org (コメントアーカイブ) にメールしてください。Accname 1.1 勧告へのコメントによって本バージョンに変更が加えられることはありませんが、正誤表や将来のバージョンで対応することがあります。ワーキンググループはコメントへの正式な回答を行わない場合もありますが、今後の作業で寄せられたコメントが考慮される場合があります。技術の進行中の更新は公開編集者ドラフトでご覧いただけます。
本仕様は Accessible Rich Internet Applications ワーキンググループによって 勧告として公開されました。
ワーキンググループの 実装報告もご覧ください。
本仕様は W3C メンバー、ソフトウェア開発者、その他 W3C グループおよび関係者によってレビューされ、ディレクターにより W3C 勧告として承認されています。これは安定した文書であり、参考資料や他の文書から引用することができます。W3Cの勧告策定における役割は、仕様への注目と普及を促進することです。これにより Web の機能性と相互運用性が向上します。
本仕様は W3C 特許方針の下で活動するグループによって作成されました。 W3Cは 公開特許開示リスト にグループの成果物に関連して開示された特許を掲載しています。そのページには特許開示の手順も記載されています。特許に関する実際の知識を有し、その特許が必要な要求を含むと考える個人は、W3C特許方針第6節に従って情報を開示する必要があります。
本仕様は 2018年2月1日 W3C プロセス文書によって管理されています。
このセクションは参考(非規定)です。
ユーザーエージェントは
DOM [DOM]
から情報を取得し、アクセシビリティツリーと呼ばれる並列構造を作成します。このツリーはアクセシブルオブジェクトで構成されています。アクセシブルオブジェクトは、そのロール、状態、プロパティなどの情報を提供します。例として、ロールがmenuitemで、現在enabled状態にあり、haspopupプロパティを持ち、サブメニューへ繋がることを示すアクセシブルオブジェクトがあります。
本書で説明するアクセシブルオブジェクトの2つのプロパティは、アクセシブルな名前とアクセシブルな説明です。名前は、オブジェクトの目的を示す短いラベルです。例えば、メニュー項目のアクセシブルな名前は新規などで、これは新しい文書やウィンドウなどの作成を提供するメニュー項目であることを表します。
説明は、アクセシブルオブジェクトの性質をさらに明確にする短い解説です。名前だけで十分な場合は必ずしも説明を付与する必要はありませんが、オブジェクトの使い方をよりよく理解できるよう支援することができます。
アクセシビリティ APIは現状、アクセシブルな名前や説明には平坦な構造(フラットな文字列)のみをサポートしています。そのため、名前や説明の算出結果はフラットな文字列となります。
「アクセシブルな名前」と「アクセシブルな説明」という語は、アクセシブルオブジェクトのプロパティとして、アクセシビリティ APIによって公開されることを強調するために使われていますが、以降では単に「名前」と「説明」と呼ぶことが多いです。
非規定と記載されたセクションの他に、本仕様書のすべての著作ガイドライン、図、例、および注記は参考(非規定)です。 それ以外の本仕様書の内容はすべて規定となります。
キーワード MUST は [RFC2119]で説明されている通りに解釈されます。
RFC-2119キーワードは大文字で表記され、class="rfc2119"を持つstrong要素内に記載されます。上記のキーワードがこの形式で使われていない場合、RFC
2119の正式な意味は持たず、説明的、つまり参考情報としてのみ扱われます。本仕様ではそのような用法はできる限り避けています。
セクションが規定か参考(非規定)であるかの表示は、そのセクション全体および下位セクションに適用されます。
参考部分は仕様の理解に役立つ情報を提供します。これらのセクションには推奨される実践例が含まれる場合がありますが、本仕様への適合のためにそれらの推奨事項に従う必要はありません。
一部の用語は本文中で定義されていますが、以下の定義は本書全体で使用されます。
オペレーティングシステムやその他のプラットフォームは、オブジェクトやイベントに関する情報を支援技術へ公開するための一連のインターフェースを提供します。支援技術はこれらのインターフェースを利用して、対象となるウィジェットの情報を取得したり操作します。アクセシビリティAPIの例として、Microsoft Active Accessibility [MSAA]、Microsoft User Interface Automation [UI-AUTOMATION]、MSAAとUIA Express [UIA-EXPRESS]、Mac OS X アクセシビリティプロトコル [AXAPI]、Linux/Unix Accessibility Toolkit [ATK]、Assistive Technology Service Provider Interface [AT-SPI]、そしてIAccessible2 [IAccessible2]などがあります。
ユーザーインターフェース(UI)の構造を表すアクセシブルオブジェクトのツリーです。アクセシビリティツリーの各ノードは、アクセシビリティAPIを通じて公開されるUIの各要素(例:プッシュボタン、チェックボックス、コンテナなど)を表します。
アクセシブルな説明は、インターフェース要素に関連した追加情報であり、アクセシブルな名前を補完します。アクセシブルな説明は、視覚的に認識できる場合とできない場合があります。
アクセシブルな名前は、ユーザーインターフェース要素の名称です。各プラットフォームのアクセシビリティAPIは、アクセシブルな名前プロパティを提供します。アクセシブルな名前の値は、UI要素の可視(例:ボタン上の可視テキスト)または不可視(例:アイコンを説明する代替テキスト)プロパティから導出されます。関連するアクセシブルな説明も参照してください。
アクセシブルな名前プロパティの簡単な例は「OK」ボタンです。テキスト「OK」がアクセシブルな名前です。ボタンにフォーカスが当たると、支援技術はプラットフォーム固有のロール説明とアクセシブルな名前を連結して出力することがあります。例えば、スクリーンリーダーが「プッシュボタン OK」や「OK ボタン」と読み上げる場合です。連結の順序やロール説明(例:「ボタン」、「プッシュボタン」、「クリック可能なボタン」など)の詳細は、プラットフォームのアクセシビリティAPIや支援技術によって決定されます。
プラットフォームのアクセシビリティツリー内のノードです。アクセシブルオブジェクトは、状態、プロパティ、イベントなどを支援技術向けに公開します。マークアップ言語(例:HTMLやSVG)一般、特にWAI-ARIAでは、マークアップ要素とその属性がアクセシブルオブジェクトとして表現されます。
ハードウェアおよび/またはソフトウェアで、以下の機能を持つもの:
この定義は他文書の定義と異なる場合があります。
本書の文脈で重要な支援技術の例には以下が含まれます:
本仕様書では、属性はマークアップ言語で使用される通りの意味です。属性は要素に追加される構造的特徴であり、状態やプロパティなど、要素が表すオブジェクトに関する情報を提供します。
共通する特徴を持つインスタンスオブジェクトの集合です。
本仕様書では、要素はマークアップ言語で使用される通りの意味です。要素はマークアップ言語の構造的要素であり、オブジェクトのデータプロファイルを含みます。
プログラムによるメッセージで、状態の個別の変化を他のオブジェクトに通知します。Webページへのユーザー入力は、抽象的なイベントによって仲介されることが多く、これによりドキュメントオブジェクトの状態変化が通知されます。プログラミング言語によってはイベントを通知と呼ぶこともあります。
要素が、いかなるユーザーにも可視・知覚・操作できないことを示します。自身または祖先要素がレンダリングされていなかったり、明示的に非表示の場合、その要素は非表示と見なされます。
情報提供を目的としたコンテンツで、適合上必須ではありません。適合に必要な内容は規定と呼ばれます。
DOMツリーまたはアクセシビリティツリー内の基本的なオブジェクト型です。DOMノードには要素やテキストノードなどがあります。アクセシビリティツリーのノードはアクセシブルオブジェクトです。
適合のために必須です。対照的に、参考(非規定)または「非規定」とされた内容は適合に必須ではありません。
ユーザーインターフェースの文脈では、知覚可能なユーザー体験内の項目であり、マークアップ言語では1つ以上の要素によって表現され、ユーザーエージェントによってレンダリングされます。
プログラミングの文脈では、1つ以上のクラスやインターフェースを実体化し、類似するオブジェクトの一般的な特徴を定義します。アクセシビリティAPIのオブジェクトは、1つ以上のDOMオブジェクトを表す場合があります。アクセシビリティAPIには、DOMインターフェースとは異なる独自のインターフェースがあります。ユーザーが感覚で認識できるよう提示可能なこと。本書における知覚可能の参照は、WCAG 2.1 原則1:コンテンツは知覚可能でなければならない [WCAG21]に関連します。
あるオブジェクトの本質的特徴や、オブジェクトに関連するデータ値を表す属性です。プロパティの変更は、オブジェクトの意味や表示に大きく影響する場合があります。特定のプロパティ(例:aria-multiline)は状態よりも変化が少ない傾向がありますが、その頻度の違いは規則ではありません。頻繁に変化するプロパティとして、aria-activedescendant、aria-valuenow、aria-valuetextなどがあります。状態とプロパティの違いも参照してください。
型の主な指標です。 この意味論的な関連付けにより、ツールはその型の他のオブジェクトと一貫した方法でオブジェクトの提示や操作をサポートできます。
人間が理解する意味を、人間がオブジェクト(例:要素や属性)の表現をコンピュータが処理できる形で定義し、様々な人間がオブジェクトについて相互に一貫した理解を得られるようにすることです。
状態は動的なプロパティであり、オブジェクトの特徴を表し、ユーザーの操作や自動処理によって変化することがあります。状態はオブジェクトの本質的な性質には影響せず、オブジェクトやユーザー操作可能性に関連するデータを表します。状態とプロパティの違いも参照してください。
デスクトップユーザーエージェントにおけるマウスホバー等でツールチップを生成する原因となる、任意のホスト言語属性。
Webコンテンツの取得・表示・エンドユーザーとのインタラクションを支援するソフトウェア全般。この定義は他文書の定義と異なる場合があります。
ユーザーが操作可能な個別のユーザーインターフェースオブジェクトです。ウィジェットは、1つの値や操作のみを持つ単純なオブジェクト(例:チェックボックス、メニュー項目)から、多数の管理されたサブオブジェクトを含む複雑なオブジェクト(例:ツリーやグリッド)までさまざまです。
名前と説明の算出は、DOMの要素から開始します。出力はフラットで構造化されていない文字列で、1語だけの場合もあれば、スペースで区切られたトークンの羅列になる場合もあります。例:保存やディスクから再読み込みなど。
重要な要素は要素のロールです。これがどのコンテンツが名前文字列に寄与するかを決定します。ロールにはnameFromというRDFプロパティがあり、値は2通りです:
aria-labelやaria-labelledbyの属性、またはホスト言語のラベリング機構(例:HTMLのaltやtitleの属性、SVGのdesc要素)など、著者が明示的にマークアップで提供した値から生成されます。
Accessible Rich Internet Applications (WAI-ARIA) 1.1 [WAI-ARIA]仕様は、authorからの名前とcontentからの名前に対応するロールのリストを提供しています。
ユーザーエージェントは、アクセシブルな名前をアクセシブルな名前と説明の算出セクションで示されるルールに従って算出しなければなりません(MUST)。
aria-describedbyが存在する場合、ユーザーエージェントは、現在の要素のaria-describedby属性で参照される要素のテキスト代替を連結してアクセシブルな説明を算出しなければなりません(MUST)。参照要素のテキスト代替は、下記アクセシブルな名前と説明の算出セクションで示される複数の方法で算出されます。
アクセシブルな名前と説明の算出は、アクセシブルな名前とアクセシブルな説明の両方を生成するために使われます。要素やノード、マークアップの組み合わせごとに異なるルールが定められています。テキスト代替は、必要に応じて、要素内の関連コンテンツ全体から構築されます。これはステップ2Bおよび2F(再帰的な処理)で、子要素や参照ノードからテキストを取得するためにすべてのルールを用いて実行されます。
算出の目的は、代替表示のために、スペースで区切られたテキストトークンからなるフラットな文字列として、知覚可能なラベルまたは説明を生成することです。
root nodeだが、後の段階ではroot nodeの子孫や他の参照ノードとなる。
current nodeを除いて、これまでに算出されたテキスト代替。resultをXにコピー。resultをXの末尾にコピー。resultをXにコピー。resultをXの末尾にコピー。resultをXにコピー。resultをXの先頭にコピー。resultをXにコピー。resultをXの先頭にコピーし、その後にスペース1個追加。指定された要素のテキスト代替は以下のように算出します:
root nodeを指定要素に、current nodeをroot nodeに、total accumulated textを空文字列("")に設定する。
current nodeのテキスト代替を算出する:
current nodeが非表示かつaria-labelledbyやaria-describedby、またはネイティブのテキスト代替要素(例:HTMLのlabel)や属性から直接参照されていない場合は、空文字列を返す。
支援技術は通常、非表示情報を伝達しませんが、著者がaria-labelledbyやaria-describedbyを使って非表示テキストをアクセシブルな名前や説明として明示的に含めることができます。
current nodeがaria-labelledby属性を持ち、少なくとも1つの有効なIDREFが含まれていて、なおかつcurrent nodeがすでにaria-labelledby走査の一部でない場合、そのIDREFを記述順で処理する:
current nodeがaria-describedby属性を持ち、少なくとも1つの有効なIDREFが含まれていて、なおかつcurrent nodeがすでにaria-describedby走査の一部でない場合、そのIDREFを記述順で処理する:
accumulated textを空文字列に設定。current nodeをIDREFで参照されるノードに設定。current nodeのテキスト代替をステップ2から算出し、resultに設定。
resultをスペース付きでaccumulated textに追加。
accumulated textを返す。以下は「…かつcurrent nodeがすでにaria-labelledby走査の一部でない…」の意味を示す例です。
element1のアクセシブルな名前は"hello"です。これは最初のaria-labelledby走査でelement3に到達するためです。
element2はアクセシブルな名前を持ちません。算出は最初のaria-labelledby走査でelement1に到達しますが、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がステップ2Eで定義される埋め込みコントロールの場合、aria-labelは無視し、規則2Eへ進む。
aria-labelの値を返す。以下は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)を備えていれば、ホスト言語で定義されたflat stringとしてその代替を返す。ただし要素がrole="presentation"やrole="none"であれば除く。
例えば、HTMLではimg要素のalt属性がテキスト代替文字列となり、label要素は参照されるフォーム要素のテキストを提供します。SVG2ではdescやtitle要素が親要素の説明を提供します。
current nodeが他のウィジェットのラベル内(例:HTMLのlabel要素や、aria-labelledbyで直接参照される要素)に埋め込まれたコントロールであり、その値をユーザーが調整可能な場合、次の方法で埋め込みコントロールをテキスト代替に含める:
current nodeのロールがcontentからの名前を許可している場合、またはcurrent nodeがaria-labelledby、aria-describedby、ネイティブテキスト代替要素(例:HTMLのlabel)、またはその子孫の場合:
accumulated textを空文字列に設定。:beforeと:after疑似要素)をcurrent nodeに関連付けている場合、それをaccumulated textに含める。
:before疑似要素については、ユーザーエージェントは、CSSのテキストコンテンツをスペースなしでcurrent nodeのテキストコンテンツの前に追加しなければなりません(MUST)。:after疑似要素については、ユーザーエージェントは、CSSのテキストコンテンツをスペースなしでcurrent nodeのテキストコンテンツの後ろに追加しなければなりません(MUST)。current nodeの各子ノードについて:
current nodeを子ノードに設定。current nodeのテキスト代替をステップ2から算出し、resultに設定。
resultをaccumulated textに追加。accumulated textを返す。重要:サブツリー内の各ノードは一度だけ参照されます。子孫からテキストを収集した場合、他のIDREFから同じ子孫ノードが参照されても2回目以降は辿りません。これは無限ループを防ぐためです。
このステップは子ノード自身にも適用されるため、算出は再帰的であり、current nodeのサブツリーのすべての要素からテキストが収集されます。ただし、子孫ノードのテキスト代替は、上記B〜Dステップの優先度の高いマークアップ("Namefrom:
author"属性)によってサブツリー全体のテキスト代替となる場合もあります。
current nodeがテキストノードの場合、そのテキスト内容を返す。current nodeが、アクセシブルな名前やアクセシブルな説明の算出対象要素の子孫であり、かつ子孫を持つ場合は2F.iへ進む。current nodeがツールチップ属性を持つ場合、その値を返す。
ツールチップ属性は、他に結果が得られない場合(サブツリーの内容なども含めて)、のみ使用されます。
上記各ステップのresultをスペース付きでtotal accumulated textに追加する。
すべてのステップが完了したら、total accumulated textが、算出を開始した要素のアクセシブルな名前またはアクセシブルな説明として利用されます。
名前・説明のアクセシビリティAPIマッピングに関する情報(labelled-by/label-forやdescribed-by/description-forなどの関係を含む)は、Core Accessibility API Mappings仕様 [CORE-AAM-1.1] に記載されています。マッピング表のaria-label、aria-labelledby、aria-describedbyの項目も参照してください。
<img>の特例をHTML-AAMに移動。このセクションは参考(非規定)です。
本書の作成に貢献いただいた方々は以下の通りです。
本書の公開は、米国連邦政府のDepartment of Education、National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR)の資金提供を受けており、当初は契約番号ED-OSE-10-C-0067、現在は契約番号HHSP23301500054Cの下で実施されています。本書の内容は米国教育省の見解や方針を必ずしも反映するものではなく、商標名、製品、組織の記載は米国政府の支持を意味するものではありません。