アクセシブルリッチインターネットアプリケーション(WAI-ARIA)1.2

W3C 勧告

この文書の詳細
このバージョン:
https://www.w3.org/TR/2023/REC-wai-aria-1.2-20230606/
最新の公開バージョン:
https://www.w3.org/TR/wai-aria-1.2/
最新の編集者ドラフト:
https://w3c.github.io/aria/
履歴:
https://www.w3.org/standards/history/wai-aria-1.2
コミット履歴
実装レポート:
https://w3c.github.io/test-results/core-aam-1.2/
前回の勧告:
https://www.w3.org/TR/wai-aria-1.1/
編集者:
Joanmarie Diggs (Igalia, S.L.)
James Nurthen (Adobe)
Michael Cooper (W3C)
Carolyn MacLeod (IBM)
以前の編集者:
Shane McCarron (Spec-Ops) (2018年まで編集者)
Richard Schwerdtfeger (Knowbility) (2017年10月まで編集者)
James Craig (Apple Inc.) (2016年5月まで編集者)
フィードバック:
GitHub w3c/aria (プルリクエスト, 新規課題, オープン課題)
正誤表:
正誤表あり

詳しくは 翻訳もご覧ください。


概要

ウェブコンテンツのアクセシビリティには、ウィジェット、構造、動作に関するセマンティック情報が必要です。これにより支援技術が障害のある方々に適切な情報を伝えることができます。本仕様は、アクセシブルなユーザーインターフェイス要素を定義し、ウェブコンテンツやアプリケーションのアクセシビリティと相互運用性を向上させるために使用できる役割、状態、およびプロパティのオントロジーを提供します。これらのセマンティクスは、文書レベルのマークアップでユーザーインターフェイスの動作や構造情報を支援技術に正しく伝えるために設計されています。本バージョンでは、WAI-ARIA 1.1 [wai-aria-1.1]以降の新機能を追加し、支援技術との相互運用性を向上させ、より一貫したアクセシビリティモデルを [HTML] および [SVG2] に形成します。本仕様は [HTML] および [SVG2] の両方を補完します。

本書は WAI-ARIA スイートの一部であり、WAI-ARIA概要 に記載されています。

この文書のステータス

このセクションは本書が公開された時点でのステータスを説明します。現行標準のW3C公開文書一覧およびこの技術レポートの最新版は、W3C技術レポート一覧 https://www.w3.org/TR/ でご確認いただけます。

WAI-ARIA 1.2 は W3C 勧告です。諮問委員会(AC)および W3C ディレクターは、この仕様が W3C 勧告となることを承認しました。実装経験の詳細については、WAI-ARIA 1.2 実装レポートをご覧ください。WAI-ARIA 1.2 の変更履歴は付録に掲載されています。

本書は Accessible Rich Internet Applications ワーキンググループ により、Recommendation track を用いて勧告として公開されました。

W3C はウェブ標準として、この仕様の広範な展開を推奨します。

W3C 勧告は、広範な合意形成の後、W3Cおよびそのメンバーの承認を受け、ワーキンググループのメンバーから実装に対する ロイヤリティフリーライセンス の約束がなされた仕様です。

本書は、W3C特許ポリシーの下で活動するグループによって作成されました。 W3C は、グループの成果物に関連する 特許開示の公開リスト を管理しています。そのページには特許の開示方法も記載されています。対象となる特許の実際の知識がある場合、Essential Claim(s)を含むと考えられる場合は、W3C特許ポリシー第6節に従い情報を開示してください。

本書は、2021年11月2日 W3Cプロセス文書により管理されています。

献辞

このバージョンのARIA仕様は、Caroyln MacLeod氏の功績を讃えて捧げられています。彼女の貢献は本書の随所に見られ、落ち着きと賢明さをもって私たちの活動を導いてくれました。彼女の早すぎる死去は、私たちのコミュニティに長く惜しまれることでしょう。

1. はじめに

このセクションは規範的ではありません。

本仕様の目的は以下の通りです:

WAI-ARIAは、ウェブコンテンツやアプリケーションのアクセシビリティと相互運用性を向上させるための枠組みを提供する技術仕様です。本書は主にカスタムウィジェットやその他のウェブアプリケーションコンポーネントを開発する開発者を対象としています。その他の読者向けの関連文書については、WAI-ARIA概要をご覧ください。また、WAI-ARIAオーサリング実践 [WAI-ARIA-PRACTICES-1.2] では、WAI-ARIAが解決を目指すアクセシビリティの課題、基本概念、技術的アプローチが紹介されています。

本書は現在、ロールのユーザーインターフェイス機能および構造的な関係性の2側面を扱っています。詳細や利用例については、WAI-ARIAオーサリング実践 [WAI-ARIA-PRACTICES-1.2]を参照してください。

本仕様で定義されているロールは、プラットフォームアクセシビリティAPIで使われるロールをサポートするために設計されています。動的なウェブコンテンツ内の要素にこれらのロールを宣言することで、ウェブコンテンツとアクセシビリティAPIを利用する支援技術との相互運用性を確保します。

この標準をサポートするスキーマは拡張性を考慮して設計されており、ベースロールを拡張することでカスタムロールを作成することができます。これにより、ユーザーエージェントは少なくともベースロールをサポートし、カスタムロールに対応するユーザーエージェントはより高度なアクセスを提供できます。多くは[cite]XMLSCHEMA11-2で形式化することも可能ですが、baseConceptsのようなロール間の類似性や、より詳細な定義を記述することはXSDではできません。

WAI-ARIA 1.2は、WAI-ARIA 1.2スイートの一部であり、WAI-ARIAや他のウェブコンテンツ言語のセマンティクスをアクセシビリティAPIに公開する方法を定義しています。

1.1 リッチインターネットアプリケーションのアクセシビリティ

ウェブアクセシビリティの分野は、障害のある方々がウェブコンテンツを利用可能にする方法を定義します。特定の障害を持つ方は、支援技術AT)を使ってコンテンツと対話します。支援技術は、コンテンツの提示方法をユーザーに適した形式に変換したり、ユーザーが異なる方法で操作できるようにしたりします。例えば、ユーザーはマウスによるドラッグ&ドロップではなく、矢印キーでスライダーウィジェットを操作する必要がある場合や、好んでそうする場合があります。これを効果的に実現するためには、ソフトウェアがセマンティクスを理解する必要があります。セマンティクスとは意味の学問であり、この場合は、ユーザーインターフェイスやコンテンツ要素に人間が理解するようなロール、状態、プロパティを割り当てることです。たとえば、段落がセマンティックに識別されていれば、支援技術はその段落を他のコンテンツと分離した単位として扱い、その境界を正確に認識できます。調整可能なレンジスライダーや折りたたみ可能なリスト(ツリーウィジェット)などはより複雑な例であり、ウィジェットの各部分に対応するセマンティクスを正しく識別することで支援技術による効果的な操作が可能になります。

新しい技術はしばしばアクセシビリティに必要なセマンティクスを見落としがちであり、新しいオーサリング実践はその技術の本来のセマンティクスを誤用することが多いです。要素が言語で定義された意味とは異なる意味でユーザーに理解されることもあります。

例として、ウェブアプリケーション開発者は、HTMLにはセマンティックなtree要素がないにも関わらず、CSSやJavaScriptを使って折りたたみツリーウィジェットを作成します。健常者にとってはツリーウィジェットとして見え、動作するかもしれませんが、適切なセマンティクスがなければ、そのツリーウィジェットは支援技術によって知覚可能でなかったり、操作可能でなかったりします。同様に、ウェブアプリケーション開発者は、SVGにはセマンティックなbutton要素がないにも関わらず、JavaScriptを使ってインタラクティブなボタンウィジェットを作成します。健常者にはボタンとして見え、動作しますが、適切なセマンティクスがなければ、そのボタンウィジェットは障害者にとって知覚可能でなかったり、操作可能でなかったりします。支援技術がロールを認識できないためです。

WAI-ARIAの導入は、著者がカスタムウィジェットに適切なセマンティクスを付与し、これらのウィジェットをアクセシブル・利用可能・支援技術と相互運用可能にする方法です。本仕様は、アクセシビリティ製品が一般的に認識するウィジェットや構造の種類を、対応するロールオントロジーとして提供します。これにより、特定のロールを持つ要素は、実装するホスト言語から継承されるセマンティクスに関係なく、特定のウィジェットや構造タイプとして理解されます。ロールはプラットフォームアクセシビリティAPIの共通プロパティであり、支援技術はこれを使って効果的な提示や操作をユーザーに提供します。

ロールモデルにはインタラクションウィジェットや文書構造を示す要素が含まれます。ロールモデルは継承関係を説明し、各ロールがサポートする属性の詳細を示します。ロールとアクセシビリティAPIとのマッピングについては、コアアクセシビリティAPIマッピング [CORE-AAM-1.2] を参照してください。

ロールは要素タイプであり、時間やユーザー操作によって変化することはありません。ロール情報は、支援技術がユーザーエージェントと連携して、指定された要素タイプの通常の処理を提供するために使われます。

状態とプロパティは、要素の重要な属性を宣言し、インタラクションに影響を与えたり説明したりします。これによって、ユーザーエージェントやOSは、クライアントサイドスクリプトによって属性が動的に変更されても、要素を適切に処理できます。例えば、スクリーンリーダーや音声認識ソフトのような代替入出力技術は、様々なインタラクション状態(例:無効、チェック済み)を認識し、ユーザーに効果的に伝えたり操作したりする必要があります。

支援技術はこれらのプロパティにDocument Object Model [DOM]を通じて直接アクセスできますが、推奨される方法は、ユーザーエージェントが状態とプロパティをOSのアクセシビリティAPIにマッピングすることです。詳細はコアアクセシビリティAPIマッピング [CORE-AAM-1.2] および アクセシブル・ネームと説明の計算 [ACCNAME-1.2] を参照してください。

図1.0は、ユーザーエージェント(例:ブラウザ)、アクセシビリティAPI、および支援技術の関係を示しています。これは、ユーザーエージェントが支援技術に提供する「契約」を説明しており、多くのGUIプラットフォームのアクセシビリティAPIで見られる典型的なアクセシビリティ情報(ロール、状態、選択、イベント通知、関係性情報、説明など)が含まれます。DOM(通常はHTML)は、典型的なモデル・ビュー・コントローラー関係においてデータモデルとビューとして機能し、JavaScriptがコントローラーとなって表示データのスタイルや内容を操作します。ユーザーエージェントは、OSのアクセシビリティAPIに関連情報を伝達し、スクリーンリーダーなどの支援技術が利用できます。

アクセシビリティAPIによる契約モデル

図1:アクセシビリティAPIによる契約モデル

詳細は、WAI-ARIAオーサリング実践で、インタラクティブコンテンツをアクセシブルにするためのロールの利用方法をご覧ください。

代替入力デバイス利用者には、キーボードでアクセス可能なコンテンツが必要です。新しいセマンティクスは、WAI-ARIAオーサリング実践で推奨されるキーボード操作と組み合わせることで、代替入力ソリューションによるコマンドや操作の支援が可能となります。

WAI-ARIAは、ロールモデルやXHTMLロールランドマークを通じてナビゲーションランドマークを導入し、運動障害や視覚障害を持つ方々に対してキーボードナビゲーションの向上を提供します。また、認知障害を持つ方への支援にも利用できます。追加セマンティクスにより、著者は必要に応じてコンテンツの再構成や代替コンテンツの提供が可能です。

支援技術は、ウィジェットの状態やプロパティの現在値を取得・設定することで代替入力のサポートが必要です。また、オブジェクトが選択されているかを判定したり、リストボックスやグリッドなど、複数選択可能なウィジェットを管理する必要もあります。

音声によるコマンドや操作システムも、WAI-ARIArole属性のようなセマンティクスから恩恵を受け、音声情報の伝達を助けます。例えば、menuロールを持つ要素と、menuitemロールを持つ子要素がそれぞれ異なるフレーバーを表す場合、音声システムは「3つの選択肢のうち1つを選んでください:チョコレート、ストロベリー、バニラ」とユーザーに伝えることができます。

WAI-ARIAは、ネイティブ言語セマンティクスの補完として使用することを意図しており、代替ではありません。ホスト言語がWAI-ARIA機能と同等のアクセシビリティを提供する場合は、ホスト言語の機能を使用してください。WAI-ARIAは、ホスト言語に必要なロール状態プロパティ指標がない場合のみ使用してください。ホスト言語の機能がWAI-ARIA機能に近い場合はそれを使い、さらにWAI-ARIAで意味を明確化してください。例えば、複数選択可能なグリッドはテーブルとして実装し、WAI-ARIAでインタラクティブなグリッドであることを明確にします。これにより、WAI-ARIAをサポートしないユーザーエージェントでも最良のフォールバックが可能となり、ホスト言語セマンティクスの一貫性が保たれます。

1.2 対象読者

本仕様は、WAI-ARIAの基本モデル(ロール、状態、プロパティ、値)を定義し、さまざまな読者に影響を与えます:

各適合要件には、該当する読者が示されています。

本仕様は上記の読者に適用できますが、特定の読者だけを対象としたものではなく、これらの読者向けの唯一の情報源であることも意図していません。以下の文書は重要な補足情報を提供します:

1.3 ユーザーエージェントの対応

WAI-ARIAは、ユーザーエージェントの対応に以下の2つの方法で依存しています:

WAI-ARIAマークアップを使ってアクセシビリティAPIに公開する情報を改善する以外は、ユーザーエージェントは本来の動作を維持します。支援技術は、非ウェブコンテンツでも同様の情報に対して既に行っているように、アクセシビリティAPI内の追加情報に反応します。ただし、支援技術でないユーザーエージェントは、アクセシビリティAPIへの適切な更新を行う以外は何もする必要はありません。

WAI-ARIA仕様は、ユーザーエージェントがWAI-ARIAマークアップに基づいてネイティブな表示や操作動作を強化することを要求も禁止もしていません。主流のユーザーエージェントは、例えばダイアログボックスやキーボードコマンドなどでWAI-ARIAのナビゲーションランドマークを公開し、すべてのユーザーのナビゲーションを支援する意図があるかもしれません。ユーザーエージェントは、障害のないユーザーも含め、できる限り有用性を最大化することが推奨されます。

WAI-ARIAは、著者の意図を支援技術に伝えるために不足しているセマンティクスを補うことを目的としています。一般的に、WAI-ARIAを利用する著者は、適切な表示や操作機能を提供します。将来的には、ホスト言語がWAI-ARIAの同等機能(新しいフォームコントロールなど)を追加し、ユーザーエージェントがそれを標準のアクセシブルUIコントロールとして実装することで、著者はカスタムARIA UIコンポーネントではなくそれらを利用できるようになります。この場合、ユーザーエージェントはネイティブのホスト言語機能をサポートします。ホスト言語の開発者は、ホスト言語の暗黙的なセマンティクスと矛盾しない限り、WAI-ARIAセマンティクスのサポートを継続することが推奨されます。WAI-ARIAセマンティクスは、ホスト言語機能が著者のニーズに十分でない場合、著者の意図をより明確に反映します。

1.4 WAI-ARIAとホスト言語の共進化

WAI-ARIAは、[HTML]や[SVG2]などのサポート言語のセマンティクスを補強したり、ARIAを明示的にサポートしない他のマークアップベースの言語でアクセシビリティ強化技術として利用したりすることを意図しています。著者がスタイルやスクリプトで新しいタイプのオブジェクトを作成する場合、ARIAは支援技術にセマンティクスを明確に伝えます。なぜなら、新しいオブジェクトの発明はウェブ言語での標準対応よりも速く進むためです。

ホスト言語がそのタイプのオブジェクトにセマンティック要素を提供している場合、スタイルやスクリプトでオブジェクトを作成するのは適切ではありません。WAI-ARIAはこれらのオブジェクトのアクセシビリティを向上させますが、本来はユーザーエージェントがネイティブに扱うことで最良のアクセシビリティが得られます。例えば、HTMLではh1要素を使う方が、div要素にheadingロールを付与するよりも良いです。

今後、ホスト言語は現在ARIAでしか宣言できないオブジェクトに対するセマンティクスを提供するよう進化することが期待されます。これは自然で望ましいことであり、ARIAの目的の一つは、よりセマンティックでアクセシブルなマークアップの普及を促すことです。ある機能に対するネイティブセマンティクスが利用可能になったら、著者はネイティブ機能を使い、ARIAの使用をやめるべきです。ただし、レガシーコンテンツではARIAを使い続ける場合もあるため、ユーザーエージェントがARIAをサポートする必要性は残ります。

ARIAの特定機能の重要性が将来低下する可能性はありますが、ウェブページにセマンティクスを追加する一般的な手段としてのARIAの必要性は今後も続くと見込まれます。ホスト言語はARIAが提供するすべてのセマンティクスを実装するとは限らず、さまざまなホスト言語が異なる機能セットを実装する場合もあります。新しいタイプのオブジェクトは常に開発されており、ARIAの目的は、そのようなオブジェクトをアクセシブルにする方法を提供することです。ウェブオーサリングの実践はホスト言語標準よりも速く進化するためです。このようにして、ARIAとホスト言語は共に進化しますが、その速度は異なります。

一部のホスト言語は、ユーザーインターフェイス以外の機能のセマンティクスを作成するために存在しています。例えば、SVGはグラフィカルオブジェクトの生成に関するセマンティクスを表現するものであり、それらが表すUIコンポーネントのセマンティクスではありません。ホスト言語は設計上、ARIA機能にマッピングされるネイティブセマンティクスを提供しない場合もあります。このような場合、ARIAはユーザーインターフェイスコンポーネントにセマンティック情報を追加する長期的な手段として採用される可能性があります。

1.5 オーサリングの実践方法

1.5.1 オーサリングツール

WAI-ARIAのロール状態プロパティの定義にある多くの要件は、他のコード検証の品質管理と同様に、開発過程で自動的にチェックできます。カスタムウィジェットを作成する著者を支援するために、オーサリングツールはウィジェットのロール、状態、プロパティをWAI-ARIAでサポートされるものや、関連・参照されるロール、状態、プロパティと比較できます。オーサリングツールはウィジェット設計パターンのエラーを著者に通知したり、文脈だけでは判断できない情報を開発者に促したりできます。例えば、スクリプトライブラリはツリービュー内のツリー項目のラベルを判定できますが、ツリー全体のラベルは著者に問い合わせる必要があります。論理的なアクセシビリティ構造を著者が視覚化できるよう、オーサリング環境はWAI-ARIAマークアップに基づくアウトラインビューを提供する場合もあります。

HTMLやSVGでは、tabindexはブラウザがWAI-ARIAの実装にキーボードフォーカスナビゲーションをサポートする重要な方法です。オーサリング・デバッグツールはtabindex値が適切に設定されているかをチェックできます。例えば、エラー条件には、ツリー内で複数のtreeitemにtabindex値が0以上で設定されている場合、treeitemにtabindexが設定されていない場合、または、role treeを持つ要素にtabindex値が0以上で設定されているのにaria-activedescendantが定義されていない場合などが含まれます。

1.5.2 テスト方法およびツール

インタラクティブコンテンツのアクセシビリティは、静的なチェックだけでは確認できません。インタラクティブコンテンツの開発者は、ウィジェットやアプリケーションへのデバイス非依存のアクセスをテストし、ユーザー操作中のすべてのコンテンツや変更に対してアクセシビリティAPIアクセスを検証すべきです。

1.6 支援技術

アクセシビリティセマンティクスへのプログラム的アクセスは、支援技術にとって不可欠です。多くの支援技術は、他のアプリケーションと同様に、認可されたアクセシビリティAPIを通じてユーザーエージェントと連携します。UIで知覚可能なオブジェクトは、アクセシビリティAPIのインターフェースによって支援技術にアクセシブルオブジェクトとして公開されます。これを適切に行うには、ロール・状態・プロパティ・文脈情報などのアクセシビリティ情報が、アクセシビリティAPIを通じて支援技術に正確に伝達される必要があります。状態変化が発生すると、ユーザーエージェントはアクセシビリティAPIに適切なイベント通知を提供します。HTMLなど多くのホスト言語では、文脈情報はDOM自体からツリーヒエラルキーとして判定できます。

一部の支援技術はアクセシビリティAPIと連携しますが、他の技術はDOMから直接コンテンツにアクセスする場合もあります。これらの技術は、コンテンツの再構成、簡素化、スタイル変更、再フローなどを行い、異なるユーザー層を支援できます。代表的な利用例は、高齢者、認知障害者、ツール利用に制約のある環境の方々です。地域ナビゲーションランドマークがあれば、モバイルデバイス向けにそのセマンティクスに基づき一度に部分的なコンテンツだけを表示する適応を実現できます。これにより、ユーザーが一度に処理すべき情報量を減らすことができます。他の状況では、カスタムUIコントロールを、キーボードやタッチスクリーンで操作しやすいものに置き換えることが適切な場合もあります。

2. 重要な用語

このセクションは規範的ではありません。

一部の用語はその場で定義されていますが、以下の定義は本書全体で使用されます。

アクセシビリティ API

オペレーティングシステムや他のプラットフォームは、オブジェクトイベントに関する情報を支援技術へ公開する一連のインターフェースを提供しています。支援技術はこれらのインターフェースを利用して、これらのウィジェットの情報取得や操作を行います。アクセシビリティAPIの例としては、Microsoft Active Accessibility [MSAA]、Microsoft User Interface Automation [UI-AUTOMATION]、MSAAUIA Express [UIA-EXPRESS]、Mac OS X アクセシビリティプロトコル [AXAPI]、Linux/Unix アクセシビリティツールキット [ATK]、Assistive Technology Service Provider Interface [AT-SPI]、およびIAccessible2 [IAccessible2]などがあります。

アクセシビリティ・サブツリー

アクセシビリティツリー内のアクセシブルオブジェクトと、そのツリー内の子孫要素。親子関係以外の関係を持つオブジェクトは含まれません。例えば、aria-flowtoによってリンクされたオブジェクトは、アクセシビリティツリーの子孫でない限り含まれません。

アクセシビリティツリー

ユーザーインターフェイス(UI)の構造を表すアクセシブルオブジェクトのツリー。アクセシビリティツリーの各ノードは、アクセシビリティAPIを通じて公開されるUI要素(例:プッシュボタン、チェックボックス、コンテナなど)を表します。

アクセシブル・ディスクリプション

アクセシブル・ディスクリプションは、インターフェース要素に関連する追加情報を提供し、アクセシブル・ネームを補完します。アクセシブル・ディスクリプションは、視覚的に知覚可能である場合とそうでない場合があります。

アクセシブル・ネーム

アクセシブル・ネームはUI要素の名称です。各プラットフォームのアクセシビリティAPIはアクセシブル・ネームプロパティを提供します。その値は、UI要素の可視(例:ボタン上のテキスト)または不可視(例:アイコンを説明する代替テキスト)プロパティから得られます。関連情報はアクセシブル・ディスクリプションを参照してください。

「OK」ボタンのような単純な使い方では、テキスト「OK」がアクセシブル・ネームとなります。ボタンがフォーカスを受けると、支援技術はプラットフォームのロール説明とアクセシブル・ネームを結合して発話する場合があります。例えば、スクリーンリーダーは「push-button OK」や「OK button」などと読み上げます。結合の順序やロール記述(例:「button」「push-button」「clickable button」など)は、プラットフォームのアクセシビリティAPI支援技術によって異なります。

アクセシブルオブジェクト

プラットフォームアクセシビリティツリー内のノード。アクセシブルオブジェクトは、状態プロパティイベントなどを支援技術向けに公開します。マークアップ言語(例:HTMLやSVG)一般、特にWAI-ARIAの文脈では、マークアップ要素やその属性がアクセシブルオブジェクトとして表現されます。

アクティベーション動作

ユーザーが入力デバイスを通じて発生させたイベントによって、要素が定義されたロールを果たすために実行される動作。ロールはホスト言語によって定義されている場合もあれば、著者定義の変数による場合もあります。要素ごとにロールは汎用的な動作の場合もあれば、その要素固有の場合もあります。例えば、HTMLやSVGの<a>要素のアクティベーション動作は、href属性で指定されたリンクへの遷移であり、さらに現在のウィンドウやタブ、名前付きウィンドウ、新しいウィンドウなどの閲覧コンテキスト指定がオプションで可能です。HTMLの<input>要素でtype属性値がsubmitの場合は、フォーム要素の値を著者定義のIRIへ著者定義のHTTPメソッドで送信する動作となります。

支援技術

ハードウェアまたはソフトウェアで、以下を満たすもの:

  • ユーザーエージェントが提供するサービスを利用してWebコンテンツを取得・表示する
  • ユーザーエージェントまたはWebコンテンツ自体とAPIを使って連携する
  • ユーザーエージェントが提供するサービス以上の機能を提供し、障害のある人がWebコンテンツと対話するのを支援する

この定義は他文書で使われているものと異なる場合があります。

本書の文脈で重要な支援技術の例:

  • 画面拡大ツール:レンダリングされたテキストや画像を拡大・視認性向上するために使われる
  • スクリーンリーダー:合成音声や点字ディスプレイで情報を伝達するために主に使われる
  • テキスト読み上げソフト:テキストを合成音声に変換するために使われる
  • 音声認識ソフト:音声による操作や入力を可能にする
  • 代替入力技術(ヘッドポインター、オンスクリーンキーボード、ワンスイッチ、吸引/吹出し装置など):キーボード操作をシミュレートするために使われる
  • 代替ポインティングデバイス:マウスポインティングやクリックをシミュレートするために使われる
属性

本仕様での「属性」は、マークアップ言語で使われる通りの意味です。属性は要素に追加される構造的特徴であり、そのオブジェクトの状態やプロパティに関する情報を提供します。

クラス

類似した特徴を共有するインスタンスオブジェクトの集合。

非推奨

非推奨のロール状態プロパティは、新しい仕組みや状況変化によって廃止されたものであり、今後のWAI-ARIA仕様のバージョンで削除される可能性があります。ユーザーエージェントは、後方互換のために非推奨項目のサポート継続が推奨されます。詳細は適合性セクションの非推奨要件を参照してください。

デスクトップフォーカスイベント

アクセシビリティAPIを介して、ホストOSからの入力フォーカス変更通知イベント。

DOMString
16ビット符号なし整数の並びで、通常UTF-16コードユニットとして解釈されます。これはJavaScriptのプリミティブString型に相当します。
要素

本仕様での「要素」は、マークアップ言語で使われる通りの意味です。要素はマークアップ言語の構造要素であり、オブジェクトのデータプロファイルを含みます。

イベント

プログラム的なメッセージで、状態の離散的な変化を他のオブジェクトへ伝えるために使われます。ウェブページへのユーザー入力は、インタラクションを記述し、ドキュメントオブジェクトの状態変化通知を提供する抽象的なイベントを介して仲介されます。プログラミング言語によっては、イベントは通知(notification)と呼ばれることもあります。

公開する(Expose)

コアアクセシビリティAPIマッピングで定義されるように、プラットフォーム固有のアクセシビリティAPIへ変換されます。

グラフィカルドキュメント

ユーザーが操作可能な部分を含むグラフィック表現を持つ文書。チャート、地図、図、設計図、ダッシュボードなどがグラフィカルドキュメントの例です。グラフィカルドキュメントは、記号・画像・テキスト・グラフィックプリミティブ(円、点、線、パス、長方形など)の任意の組み合わせで構成されます。

非表示(Hidden)

要素がどのユーザーに対しても表示・知覚・操作できないことを示します。非表示とみなされるのは、要素自身または祖先要素がレンダリングされていない、または明示的に非表示になっている場合です。

参考(Informative)

情報提供のための内容であり、適合性のためには必要ありません。適合性のために必要な内容は規範(Normative)と呼ばれます。

キーボードでアクセス可能

キーボードや、キーボード入力を模倣する支援技術(例:吸引/吹出しチューブ)を使ってユーザーがアクセスできること。本書の記述はWCAG 2.1 ガイドライン2.1:すべての機能をキーボードから利用可能にする [WCAG21]に関連します。

ランドマーク

ユーザーが素早くアクセスしたいページ上の領域。領域内のコンテンツは他の領域と異なり、ナビゲーション、検索、主要コンテンツ閲覧など特定の目的に関連します。

ライブリージョン

ライブリージョンは、ユーザーフォーカスが他の場所にある際に外部イベントの結果として更新されることが多い知覚可能なウェブページ領域です。これらの領域は必ずしもユーザー操作によって更新されるわけではありません。例として、チャットログ、株価ティッカー、定期的にゲーム統計を反映するスポーツスコアなどがあります。これらの非同期領域はユーザーのフォーカス外で更新されるため、スクリーンリーダーなどの支援技術は存在に気付かないか、処理できない場合がありました。WAI-ARIAは、著者がライブリージョンを特定し処理できるようにするプロパティ(aria-live, aria-relevant, aria-atomic, aria-busy)を提供しています。

主要コンテンツ要素

実装ホスト言語の主要コンテンツ要素(HTMLではbody要素など)。

管理状態

アクセシビリティAPI状態で、ユーザーエージェントによって制御されるもの(例:フォーカスや選択)。これは、著者が通常制御する「非管理状態」と対比されます。ただし、著者がaria-posinsetやaria-setsizeなど一部の管理状態を上書きすることもできます。多くの管理状態は、:focusなどのCSS疑似クラスや::selectionなどの疑似要素に対応し、ユーザーエージェントによって更新されます。

ネメス点字

ネメス点字コードは、数学や科学記号を符号化するための点字コードです。WikipediaのNemeth Brailleを参照。

ノード

DOMツリーまたはアクセシビリティツリー内の基本的なオブジェクト型。DOMノードは要素テキストノードなどに分類されます。アクセシビリティツリーのノードはアクセシブルオブジェクトです。

規範(Normative)

適合性のために必要な内容。対照的に、参考(Informative)や「非規範的」とされた内容は適合性のために必要ありません。

オブジェクト

ユーザーインターフェイスの文脈では、知覚体験内の項目であり、マークアップ言語では1つ以上の要素で表現され、ユーザーエージェントによって表示されます。

プログラミングの文脈では、類似するオブジェクトの一般的な特徴を定義するクラスやインターフェースのインスタンス化です。アクセシビリティAPIのオブジェクトは、1つ以上のDOMオブジェクトを表す場合があります。アクセシビリティAPIは、DOMインターフェースとは異なる定義済みインターフェースを持っています。
オントロジー

クラスの特徴と、相互関係を記述したもの。

操作可能(Operable)

ユーザーが制御可能な方法で利用できること。本書の記述はWCAG 2.1 原則2:コンテンツは操作可能でなければならない [WCAG21]に関連します。キーボードでアクセス可能も参照。

所有要素

「所有要素」とは、要素のDOM子孫、aria-ownsで子として指定された要素、または所有子のDOM子孫を指します。

所有元要素

「所有元要素」とは、要素のDOM祖先、またはその要素のIDを参照するaria-owns属性を持つ要素です。

知覚可能(Perceivable)

ユーザーが感知できる方法で提示されること。本書の記述はWCAG 2.1 原則1:コンテンツは知覚可能でなければならない [WCAG21]に関連します。

プロパティ

属性のうち、対象のオブジェクトにとって本質的であるもの、またはオブジェクトに関連付けられたデータ値を表すもの。プロパティの変更は、オブジェクトの意味や表示に大きく影響する場合があります。例えば、aria-multilineのように変更頻度が低いものもあれば、aria-activedescendantaria-valuenowaria-valuetextのように頻繁に変更されるものもあります。状態とプロパティの区別も参照。

関係性

2つの異なるもの間の接続。ラベル付け、制御など、種類によって関係のタイプが異なります。

ロール

タイプの主な指標。このセマンティクス的関連付けにより、ツールはそのタイプの他のオブジェクトに対するユーザーの期待に沿った方法でオブジェクトの表示や操作をサポートできます。

ルートWAI-ARIAノード

主となる非メタデータコンテンツを含む要素。多くの言語ではドキュメント要素ですが、HTMLでは<body>要素です。

セマンティクス

人間が理解する意味を、コンピューターがオブジェクト要素属性など)の表現として処理できるように定義したもの。これにより、さまざまな人がオブジェクトを一貫して理解できます。

状態

状態は、ユーザー操作や自動処理によって変化し得る動的プロパティです。状態はオブジェクトの本質を変えるものではなく、オブジェクトやユーザーのインタラクション可能性に関連するデータを表します。状態とプロパティの区別も参照。

サブドキュメント

<frame><iframe>などで作成された文書。サブドキュメントには文書、アプリケーション、他サーバーから取得したカレンダー等ウィジェットも含まれます。アクセシビリティツリーではこの状況に2つのアクセシブルオブジェクトが存在します。1つは親文書内の<frame>/<iframe>要素を表し、もう1つは生成された文書コンテンツを表す子オブジェクトです。

ターゲット要素

WAI-ARIAの関係で指定された要素。例: <div aria-controls=”elem1”>で、“elem1”がターゲット要素のID。

タクソノミー

様々なクラスの特徴が階層的にどう関係するかの定義。クラスは階層内のスーパー クラスのプロパティを継承します。タクソノミーはオントロジーの形式的定義の一部となり得ます。

テキストノード

DOMのノード型の一つで、属性要素のテキスト内容を表します。テキストノードは子ノードを持ちません。

ツールチップ属性

デスクトップユーザーエージェントでマウスホバーなどの応答によりツールチップを生成するホスト言語属性。

理解可能(Understandable)

ユーザーが適切な意味を構築できる方法で提示されること。本書の記述はWCAG 2.1 原則3:情報およびUIの操作は理解可能でなければならない [WCAG21]に関連します。

Unicode点字パターン

Unicodeでは、点字はBraille Patterns(U+2800..U+28FF)ブロックで表されます。このブロックには8点点字セルの全256パターンが含まれ、6点セル範囲はU+2800..U+283Fで表現されます。すべての点字システムで、点字パターンdots-0(U+2800)は空白または内容の欠如を表すために使われ、ブランク点字パターンとも呼ばれます。WikipediaのBraille Patterns参照。

ユーザーエージェント

Webコンテンツを取得・表示し、エンドユーザーの操作を支援するすべてのソフトウェア。他文書で使われている定義とは異なる場合があります。

有効なIDREF

同一文書内で一致するIDを持つターゲット要素への参照。

ウィジェット

ユーザーが操作できる個別のUIオブジェクト。ウィジェットは、値や操作が1つだけの単純なもの(例:チェックボックス、メニュー項目)から、多数の管理されたサブオブジェクトを含む複雑なもの(例:ツリー、グリッド)まで様々です。

3. 適合性

アクセシブル・リッチ・インターネット・アプリケーションの主な内容は規範であり、適合性主張に影響する要件を定義しています。導入部、付録、「非規範的」と記されたセクションやその下位セクション、図、例、注記は参考(非規範的)です。非規範的な内容はガイドライン解釈の補助情報を提供しますが、適合性主張に影響する要件を作成しません。

規範的セクションは、実装が本仕様に適合するためにユーザーエージェントが従わなければならない要件を提供します。本文書におけるキーワードMUSTMUST NOTREQUIREDSHALLSHALL NOTSHOULDRECOMMENDEDMAY、および OPTIONALは、RFCにおける要求レベルを示すキーワード [RFC2119]で説明される通りに解釈されます。RFC-2119キーワードは大文字で書かれ、class="rfc2119"要素内に含まれます。上記キーワードがこの形式で使われていない場合、RFC 2119の意味で正式な情報を伝えるものではなく、説明のため、すなわち参考情報です。こうした使い方は本仕様では可能な限り避けています。

規範的セクションは、著者・ユーザーエージェント・支援技術が実装を本仕様に適合させるためにMUST従うべき要件を提供します。

非規範的(参考)セクションは、仕様理解に役立つ情報を提供します。これらのセクションには推奨される実践例が含まれることがありますが、これらの推奨を遵守しなくても本仕様への適合性は維持されます。

3.1 ホスト言語との非干渉

WAI-ARIAの処理はユーザーエージェントによって、ホスト言語の組み込み機能の通常動作をMUST NOT妨害してはなりません。

CSSセレクターがWAI-ARIA属性(例:input[aria-invalid="true"])を含む場合、ユーザーエージェントはMUST属性がDOMに追加・変更・削除されるたび、そのセレクターに一致(または一致しなくなった)する要素の表示を更新しなければなりません。ユーザーエージェントはMAYホスト言語機能のアクセシビリティAPIへのマッピングを変更してもよいですが、WAI-ARIAマークアップをホスト言語機能に再マッピングするためにDOMを変更することはMUST NOTです。

3.2 すべてのWAI-ARIADOM

W3C DOM仕様に準拠しないドキュメントオブジェクトモデルを実装する適合ユーザーエージェントは、ロール属性とそのWAI-ARIAロール値、ならびにWAI-ARIA状態とプロパティの内容属性を著者が指定した通りDOMに含めMUSTです。処理によって要素のアクセシビリティAPIへの公開方法に影響が出る場合でも、各ロール属性とすべてのWAI-ARIA状態・プロパティ、その値は他のツール(支援技術等)がアクセスできるよう未修正のまま文書内に存在する必要があります。W3C DOMに準拠するものはこの条件を満たします。

3.3 支援技術によるウェブアプリケーションへの通知

支援技術(音声認識システムや運動障害者向け代替入力デバイスなど)は、デバイス非依存でウェブアプリケーションを操作できる必要があります。WAI-ARIA状態プロパティはリッチインターネットアプリケーション部品の現在の状態を反映します。支援技術が必要な変更をウェブアプリケーションに通知できることは、標準入力デバイスを直接操作できないユーザーでもアプリケーションを制御できるため不可欠です。

ユーザーエージェントは、システムのアクセシビリティAPIで状態やプロパティに変更があった場合、ウェブアプリケーションに通知する手段をMUST提供しなければなりません。同様に、ウェブアプリケーションの著者は、ユーザーエージェントや支援技術から変更リクエストの通知を受けた場合、アプリケーションを適切に更新することをSHOULDです。

多くの状態やプロパティは、支援技術が既存のアクセシビリティAPIを通じてデフォルトアクションイベントに応答することで変更できます。例えば、aria-selected状態は、tabpanel内のtab要素でデフォルトアクションを発生させることで変更できます。

3.4 適合性チェッカー

文書の適合性や妥当性を検証するアプリケーションやスクリプトは、すべての規範的著者要件のテストをSHOULD含めるべきです。特定の要件をテストする場合、適合性チェッカーは著者の「MUST」要件が満たされていなければエラーをMUST通知し、「SHOULD」要件が満たされていない場合は警告をMUST通知しなければなりません。

3.5 非推奨要件

技術の進化により、以前定義された機能よりも有効な新しい方法が利用可能になることがあります。しかし、既存の機能実装がある場合、古い機能を適合モデルから削除すると、以前適合していたコンテンツが非適合となってしまいます。この場合、古い機能は「非推奨」として扱われます。これは、その機能が適合モデルで許容され、ユーザーエージェントによるサポートが期待されている一方で、新しいコンテンツでは著者がその機能を使わないことが推奨されることを示します。将来の仕様バージョンで、その機能が広く使われなくなった場合は、機能が削除され、ユーザーエージェントによるサポートも期待されなくなる可能性があります。

4. WAI-ARIAの利用

複雑なウェブアプリケーションは、支援技術が文書の一部のセマンティクスを判別できない場合や、ユーザーがすべての部分へ効果的に移動できない場合にアクセシビリティを失います(WAI-ARIAオーサリング実践参照)。 WAI-ARIAは、セマンティクスをロール(UI要素のタイプ定義)と、そのロールでサポートされる状態およびプロパティに分けて定義します。

著者は、文書内の要素WAI-ARIAロールと適切な状態・プロパティ(aria-*属性)を、ライフサイクル全体で関連付ける必要があります。ただし、要素が既に状態やプロパティに対して適切な暗黙のWAI-ARIAセマンティクスを持っている場合は除きます。この場合、同等のホスト言語の状態・プロパティが優先され、ロール属性はホスト言語要素の暗黙ロールより優先されます。

4.1 WAI-ARIAロール

WAI-ARIAロールは、要素role属性として設定します。これはRole Attribute [ROLE-ATTRIBUTE]で定義されたrole属性と同様です。

<li role="menuitem">ファイルを開く…</li>

モデル内の各ロールの定義には以下の情報があります:

ロールを付与することで、支援技術に各要素の扱い方の情報を提供できます。WAI-ARIAロールがホスト言語セマンティクスを上書きする場合、DOMには変更はなく、アクセシビリティツリーのみが変化します。

ユーザーエージェントは、role属性値のトークン列のうち、非抽象WAI-ARIAロール名と一致する最初のトークンをMUST使用します。適用可能なWAI-ARIAロールを識別する手順は以下の通りです:

  1. ホスト言語の規則で、要素にロール属性があるか検出し、その属性値文字列を取得する。
  2. その属性値文字列をホワイトスペースで分割し、ホワイトスペースのない部分文字列の列にする。
  3. 部分文字列を、すべての非抽象WAI-ARIAロールの名前と比較する。比較の大文字・小文字の区別はホスト言語に従う。
  4. テキスト順で最初に非抽象WAI-ARIAロール名と一致した部分文字列を使用する。

4.2 WAI-ARIAの状態とプロパティ

WAI-ARIAは、各種OSプラットフォームのアクセシビリティAPIをサポートするために用いられるアクセシビリティ状態およびプロパティのコレクションを提供します。 支援技術は、公開されたユーザーエージェントのDOMや、プラットフォームアクセシビリティAPIへのマッピングを通じてこの情報にアクセスできます。ロールと組み合わせることで、ユーザーエージェントはUI情報を支援技術に常時伝達できます。状態やプロパティが変化すると、支援技術へ通知が送られ、ユーザーに変化があったことを知らせることができます。

以下の例では、リスト項目(html:li)をチェック可能なメニュー項目にし、JavaScriptイベントでマウスやキーボードの操作によりaria-checkedの値を切り替えます。ロールによって、この単純なウィジェットの動作をユーザーエージェントに認識させます。ユーザー操作で変化する属性(例:aria-checked)は状態とプロパティセクションで定義されています。

<li role="menuitemcheckbox" aria-checked="true">最終更新日時で並べ替え</li>

アクセシビリティ状態のうち、管理状態と呼ばれるものは、ユーザーエージェントによって制御されます。管理状態の例はキーボードフォーカスや選択です。管理状態はCSS疑似クラス(:focus::selectionなど)に対応し、スタイル変更が定義されています。一方、本仕様の状態は著者が通常制御するもので「非管理状態」と呼ばれます。ユーザーエージェントが管理する状態(例:aria-posinsetaria-setsize)もありますが、DOMが不完全でユーザーエージェントの計算が不正確になる場合は著者が上書きできます。ユーザーエージェントは管理状態・非管理状態の両方をアクセシビリティAPIにマッピングします。

多くの現代的ユーザーエージェントはCSS属性セレクター ([CSS3-SELECTORS])をサポートし、著者はWAI-ARIA属性情報に基づくUI変更を作成でき、同等機能のためのスクリプト量を削減できます。以下の例では、CSSセレクターでaria-checked属性値に応じてテキストを太字にしたり、チェックマーク画像を表示します。

[aria-checked="true"] { font-weight: bold; }
[aria-checked="true"]::before { background-image: url(checked.gif); }

チェックマークの視覚表現の切り替えにCSSを使わない場合、著者は画像切り替え用の追加マークアップやスクリプトを用意します。

<li role="menuitemcheckbox" aria-checked="true">
  <img src="checked.gif" role="presentation" alt="">
  <!-- 注: 画像切り替えには追加スクリプトが必要 -->
  最終更新日時で並べ替え
</li>

4.3 フォーカス管理とキーボードナビゲーション対応

標準のHTMLインタラクティブ要素や単純なWAI-ARIAウィジェットを使う場合、アプリケーション開発者はタブ順序やキーボードショートカットを要素に割り当てられます。

WAI-ARIAには「管理コンテナ」ウィジェット、いわゆる「複合ウィジェット」が多数含まれています。適切な場合、コンテナは最後にアクティブだった子孫要素(通常は最初の項目)を追跡します。コンテナからフォーカスが外れ再度フォーカスされた時、一貫性のある使いやすい戦略を維持することが重要です。例外はありますが、通常フォーカスを離れた後に再度フォーカスされた場合、アクティブ子孫は最後にフォーカスされた時と同じ要素であることが推奨されます。例外として、コンテナウィジェットの内容が変化した場合や、メニューバーのように常に最初の項目に戻ることが期待される場合があります。たとえば、ツリーグループの2番目の項目がアクティブ子孫のままタブでグループ外へ移動した場合、再度フォーカスすると2番目の項目がアクティブ子孫として維持されます。ユーザーはコンテナ内の子孫要素をクリックしてコンテナをアクティブにすることもできます。コンテナやそのアクティブ子孫がフォーカスを持つ場合、ユーザーは追加キー(矢印キーなど)でアクティブ子孫を変更できます。主要ナビゲーションキー(通常はTABキー)をさらに押すとコンテナ外へ移動します。

リッチインターネットアプリケーションの使いやすいキーボードナビゲーションは、静的文書のリンクやフォームコントロール間のタブ移動とは異なります。リッチアプリでは、ユーザーは複雑なウィジェット(メニューや表計算など)にタブ移動し、ウィジェット内は矢印キーで操作します。WAI-ARIAが導入するキーボードナビゲーションの変更によって、アクセシビリティが向上します。WAI-ARIAでは任意の要素がキーボードでフォーカス可能です。host言語のtabindexに加えて、aria-activedescendantはキーボード操作の新たな仕組みを提供します。他のWAI-ARIAウィジェット開発もキーボードナビゲーションが正しく機能することが前提です。

以下の通りaria-activedescendantを実装する場合、ユーザーエージェントはDOMフォーカスをコンテナ要素かその制御用input要素に維持します。 一方、ユーザーエージェントはデスクトップフォーカスイベントや状態を、aria-activedescendantで参照された要素がフォーカスされているかのように支援技術へ伝えます。 ユーザーエージェントは、アクティブ子孫がコンテナ要素の子孫かどうかを検証する必要はありません。 キーボードイベントはDOMフォーカスのある要素で処理される責任があります。 アクティブ子孫に向けたキーボードイベントは、フォーカスのあるDOM要素までバブルアップして処理されます。

4.3.1 著者向け情報

著者がフォーカスのある要素を削除する場合、論理的な要素へフォーカスを移すべきです(SHOULD)。同様に、著者はユーザーのスクロール操作がない限り、フォーカスのある要素を画面外にスクロールすべきではありません(SHOULD)。

著者は、すべてのインタラクティブ要素がフォーカス可能であり、複合ウィジェットの全部分もフォーカス可能か、または機能を達成する代替方法が文書化されていることを保証すべきです(SHOULD)。

著者は、以下のコンテナロールでフォーカス管理をMUST行う必要があります:

WAI-ARIA対応ユーザーエージェントは、tabindexfocusblurなどのホスト言語機構をすべての要素で利用できるよう拡張します。ホスト言語が対応している場合、著者はdivspanimgなど任意の要素にtabindex="0"を設定しデフォルトのタブ順に加えることができます。また、tabindexが負の整数の場合、スクリプトやマウスクリックでフォーカス可能ですが、デフォルトのタブ順には入りません。これは[HTML]と[SVG2]の両方で対応しています。

著者は、ウィジェット要素のロールがaria-activedescendantをサポートする場合、aria-activedescendantを使って、どの子孫要素がUI上でキーボードフォーカスを持つかを支援技術に伝えることができます(MAY)。 これは、listboxなどのウィジェットでは、ページのタブ順序でウィジェットが1回だけフォーカスされ、他のキー(通常は矢印キー)で内部項目にフォーカスを移す場合に便利です。

通常、著者はホスト言語のセマンティクス(例:HTMLのtabindex="0")でウィジェットをタブ順序に入れ、aria-activedescendantで現在アクティブな子孫のIDを指定します。現在アクティブな子孫のスタイリングは著者が行い、:focusではスタイルできません(実際のフォーカスはコンテナにあるため)。

フォーカス管理の詳細は、キーボードインターフェイスの開発WAI-ARIAオーサリング実践)を参照してください。

4.3.2 ユーザーエージェント向け情報

ユーザーエージェントは、aria-activedescendantを実装する際、以下をMUST行う必要があります:

  1. ホスト言語のキーボードナビゲーション方式を実装し、aria-activedescendantをサポートするウィジェットがタブ順序に含まれるようにする。
  2. プラットフォームがデスクトップフォーカスやアクセシビリティAPIのフォーカスをDOMフォーカスと別に公開する場合、DOMフォーカスがあり、かつaria-activedescendantが有効なID参照である場合は、その要素のアクセシビリティAPIでフォーカス状態を公開しない。
  3. フォーカス中の要素でaria-activedescendant属性が変化した場合、以前フォーカスされていたオブジェクトからフォーカス状態を削除し、新しい参照先要素でアクセシビリティAPIのデスクトップフォーカスイベントを発火する。aria-activedescendantがクリアされたり文書内の要素を指さなくなった場合は、属性が変化したオブジェクトでデスクトップフォーカスイベントを発火する。
  4. ID属性を持ち、aria-activedescendantで参照可能な要素には、以下のアクセシビリティAPI状態を適用する:
    1. その要素がWAI-ARIAロールを持つ場合はフォーカス可能である必要がある。ネイティブ要素でロール属性がない場合は、ネイティブセマンティクスがフォーカス状態を決定するためチェック不要。
    2. その要素がaria-activedescendantの参照先で、属性保持要素がDOMフォーカスを持つ場合、フォーカス状態を適用する。

支援技術がプラットフォームのアクセシビリティAPIでフォーカス変更を要求した場合、ユーザーエージェントは以下をMUST行う必要があります:

  1. プラットフォームのフォーカス状態を以前フォーカスされていたオブジェクトから削除する。
  2. DOMフォーカスを設定する:
    1. 現在の要素がDOMフォーカスを取得可能であれば、ユーザーエージェントはDOMフォーカスを設定するMUST
    2. そうでなく、現在の要素がIDを持ち、そのIDがaria-activedescendant属性の参照先であり、かつフォーカス可能な要素の場合は、ユーザーエージェントはaria-activedescendant属性を持つ要素にDOMフォーカスを設定するMUST

      IDを持つ要素は、aria-activedescendant属性を持つコンテナ要素に所有されている場合や、aria-activedescendant属性を持つ要素によって制御されたコンテナ要素に所有されている場合に参照可能です(例:combobox)。それ以外の参照は著者エラーです。

      コンテナ要素にDOMフォーカスを設定できない場合は著者エラーです。

    3. それ以外の場合、ユーザーエージェントは子要素自体にDOMフォーカスを設定してもよい(MAY)。
  3. 現在の要素がIDを持ち、かつ、DOMフォーカスを持つaria-activedescendant属性付きコンテナ要素、または同様の制御されたコンテナ要素に所有されている場合は、その要素にアクセシビリティAPIのフォーカス状態を設定し、aria-activedescendant値で識別される要素にアクセシビリティAPIのフォーカスイベントを発火するMUST

5. ロールモデル

このセクションでは、WAI-ARIAロールを定義し、その特徴やプロパティについて説明します。

ロール、その特徴、サポートする状態とプロパティ、マークアップでの使用方法の仕様は規範的とみなされます。

内容をDOMに反映するために、ユーザーエージェントはSHOULDロール属性を実装されたアクセシビリティAPIの適切な値にマッピングし、ロール属性が変更された場合にはSHOULDマッピングを更新すべきです。

5.1 概念間の関係性

ロールモデルは、WAI-ARIAのロール同士や、HTMLなど他の仕様の概念との関係を以下のような関係性で表現します。

5.1.1 スーパークラスロール

ロールモデルにおいて、現在のサブクラス化されたロールが拡張するロール。この拡張によって、スーパークラスロールのすべてのプロパティと制約がサブクラスロールへ伝播します。よく知られた安定した仕様以外では、継承は本仕様内で定義された項目に制限される場合があり、外部項目が変更されて継承先のクラスに影響を及ぼすことを防ぎます。

5.1.2 サブクラスロール

このロールがスーパークラスとなるロールの参考一覧。仕様の理解を助けるために提供されており、新たな情報を追加するものではありません。

他の仕様からの類似または関連するアイデアについての参考データ。関連する概念は必ずしも同一ではありません。関連概念同士はプロパティを継承しません。そのため、ある概念の定義が変更されても、関連概念のプロパティ・動作・定義には影響しません。

例えば、プログレスバーはステータスインジケータに似ています。したがって、progressbarウィジェットは、statusを含む関連概念を持ちます。しかし、statusの定義が変更された場合でも、progressbarの定義には影響しません。

5.1.4 基本概念

このロールのプロトタイプとみなされるオブジェクトについての参考データ。基本概念はタイプに似ていますが、制約やプロパティの継承はありません。基本概念は外部概念に対する継承の代替として設計されています。基本概念は関連する概念に似ていますが、基本概念はロール定義とほぼ同一です。

例えば、本書で定義されるcheckboxは、[HTML]で定義される<input[type="checkbox"]>と類似の機能や動作が期待されています。したがって、checkboxは[HTML]のcheckboxbaseConceptとして持ちます。ただし、元の[HTML]checkboxのbaseConcept定義が変更されても、本書のcheckboxの定義には影響しません。両タイプ間に実際の継承がないためです。

5.2 ロールの特性

ロールは、その特性によって定義・説明されます。特性はロールの構造的な機能、例えばロールが何であるか、背後にある概念、ロールが含むことができる、または含まなければならないインスタンスを定義します。ウィジェットの場合は、HTMLフォームへのマッピングに基づき、ユーザーエージェントとの相互作用も含まれます。ロールでサポートされるWAI-ARIAの状態とプロパティも示されます。

ロールは以下の特性を定義します。

5.2.1 抽象ロール

ブール値

抽象ロールは、すべてのWAI-ARIAロールの基礎です。コンテンツ著者はMUST NOT抽象ロールを使用してはなりません。なぜなら、抽象ロールはAPIバインディングで実装されていないためです。ユーザーエージェントはMUST NOT抽象ロールを、アクセシビリティAPIの標準ロール機構にマッピングしてはなりません。抽象ロールは以下の目的で提供されています:

  1. ロールモデルの整理と、既知の概念の文脈でロールに意味を持たせるため。
  2. 必要な機能を含むロールの追加を効率化するため。

5.2.2 必須の状態とプロパティ

状態プロパティで、特定のロールおよびサブクラスロールに必須とされるもの。コンテンツ著者は必須の状態とプロパティに空でないMUST指定しなければなりません。値にundefinedを使用することは、undefinedがその状態やプロパティの明示的にサポートされる値でない限り、MUST NOTです。

あるオブジェクトが複数の祖先から継承し、ある祖先はプロパティがサポートされるとし、別の祖先はプロパティが必須とする場合、継承オブジェクトではそのプロパティは必須となります。

適切な暗黙のWAI-ARIAセマンティクスを持つホスト言語属性はこの要件を満たします。

5.2.3 サポートされる状態とプロパティ

状態プロパティで、特定のロールや子ロールに適用可能なもの。コンテンツ著者は、デフォルト値が十分な場合以外は、サポートされる状態とプロパティにMAY指定できます。ユーザーエージェントは、ロールでサポートされるすべての状態とプロパティをアクセシビリティAPIにMUSTマッピングしなければなりません。状態やプロパティが未定義でロールにデフォルト値がある場合、ユーザーエージェントはデフォルト値をSHOULD公開すべきです。

適切な暗黙のWAI-ARIAセマンティクスを持つホスト言語属性はこの要件を満たします。

5.2.4 継承される状態とプロパティ

スーパークラスロールからロールが継承するプロパティの参考一覧。状態プロパティは、ロールモデルのスーパークラスロールから継承されるものであり、DOMツリー内の祖先要素から継承されるものではありません。これらのプロパティはロール上で明示的に定義されていませんが、継承は自動で行われます。この情報は仕様の読みやすさのために提供されています。サポートされる状態とプロパティの集合と継承された状態・プロパティの集合の合計が、そのロールでサポートされる状態とプロパティの全体となります。

5.2.5 禁止されている状態とプロパティ

ロールで禁止されている状態とプロパティの一覧。著者はMUST NOT禁止されている状態やプロパティを指定してはなりません。

適切な暗黙のWAI-ARIAセマンティクスを持つホスト言語属性も、このセクションで禁止されている状態やプロパティを禁止します。

5.2.6 必須の所有要素

このロールを持つ要素が所有することになる要素。例えば、listロールを持つ要素は、少なくとも1つ以上listitemロールを持つ要素を所有します。

ロールに複数の必須の所有要素が指定されている場合、少なくとも1つ以上の必須所有要素のインスタンスが必要です。本仕様は、一覧の各所有ロールのインスタンスを必須とするものではありません。例えば、menuにはmenuitemmenuitemcheckboxまたはmenuitemradioのいずれかが1つ以上必要です。menuロールはそれぞれのインスタンスを必須とはしません。

編集中やデータセットのロード中など、必須所有要素が不足する場合があります。ウィジェットがスクリプト実行やロード中で必須の所有要素が不足する場合、著者はコンテナ要素にaria-busytrueで設定しなければなりません(MUST)。たとえば、ページの初期化や完了まで文書要素をbusyとすることができます。

「必須の所有要素」を持つロールは、逆の関係性を意味しません。指定されたロールの子孫が存在しないと処理が不完全になる場合でも、一覧にあるロールの要素は必ずしも指定されたロールの要素内に存在しなければならないわけではありません。指定された子孫の存在が必要な要素については必須のコンテキストロールを参照してください。

「必須の所有要素」のsubclass roleを持つ要素では、この要件は満たされません。例として、listboxロールは、optionまたはgroupロールの要素を所有する必要があります。groupロールがrowのスーパークラスであっても、rowロールの所有要素を追加しても、listboxoptionまたはgroupを所有するという要件を満たしません。

適切な暗黙のWAI-ARIAセマンティクスを持つ要素はこの要件を満たします。

5.2.7 必須のコンテキストロール

必須のコンテキストロールは、このロールが許可される所有コンテナを定義します。ロールに必須コンテキストがある場合、著者はそのロールを持つ要素が、必須コンテキストロールを持つ要素内(または所有されている)に含まれていることをMUST保証しなければなりません。例えば、listitemロールの要素は、listロールの要素内(または所有されている)でのみ意味を持ちます。

「必須のコンテキストロール」を持つロールは、逆の関係性を意味しません。指定されたロールの要素が、一覧にあるロールの要素内に現れる必要がありますが、一覧のロールの要素は、指定されたロールの子孫要素が常に必要なわけではありません。指定された子孫の存在が必要な要素については必須の所有要素を参照してください。

適切な暗黙のWAI-ARIAセマンティクスを持つ要素はこの要件を満たします。

5.2.8 アクセシブル・ネーム計算

次のいずれかの値:
  1. author: nameは著者が明示的なマークアップ機能(aria-label属性、aria-labelledby属性、ホスト言語のラベリング機構、HTMLのalttitle属性など)で提供する値から取得されます(HTMLのtitle属性はテキスト代替指定の優先度が最も低い)。
  2. contents: nameは要素ノードのテキスト値から取得されます。これは一部のロールでは「author」と併用が許可されていますが、より優先度の高い「author」機能が指定されていない場合のみコンテンツが使われます。優先度はアクセシブル・ネームと説明計算アルゴリズム [ACCNAME-1.2] で定義されています。
  3. prohibited: 要素は著者による命名をサポートしていません。著者はMUST NOTaria-labelaria-labelledby属性で要素を命名してはなりません。
5.2.8.1 ネーム計算

ネーム計算はアクセシブル・ネームと説明仕様で定義されています。

5.2.8.2 説明計算

説明計算はアクセシブル・ネームと説明仕様で定義されています。

5.2.8.3 アクセシブル・ネームと説明の計算

アクセシブル・ネームと説明の計算はアクセシブル・ネームと説明仕様で定義されています。

5.2.8.4 著者によるネーム指定をサポートするロール
5.2.8.5 コンテンツからネーム指定をサポートするロール
5.2.8.6 ネーム指定不可のロール(ネーム禁止)

5.2.9 提示用の子要素

ブール値(true | false

DOMの子孫要素は提示用です。ユーザーエージェントは、この要素の子孫をプラットフォームのアクセシビリティAPIを通じてSHOULD NOT公開すべきではありません。ユーザーエージェントが子孫ノードを非表示にしない場合、情報が二重に読み上げられることがあります。

5.2.10 ロールの暗黙的な値

多くの状態やプロパティにはデフォルト値がありますが、特定のロールで使われる場合は通常のデフォルト値と異なることがあります。ロールが状態やプロパティに標準外のデフォルト値を要求する場合、「Implicit Value for Role」として示されます。「Default for state or property name is new default value」の形式で表現されます。著者が明示的な値を指定していない場合、そのロールで定義された新しいデフォルト値が適用されます。

5.3 ロールの分類

現行のユーザーシナリオをサポートするために、本仕様ではユーザーインターフェイスウィジェット(スライダー、ツリーコントロール等)を定義するロールと、ページ構造(セクション、ナビゲーション等)を定義するロールを分類しています。なお、支援技術によっては、role applicationdocumentでマークされた領域に対して特別な操作モードを提供するものもあります。

ロール間の関係を視覚的に示した図は、ARIA 1.2 クラス図で参照できます。

ロールの分類は以下の通りです:

  1. 抽象ロール
  2. ウィジェットロール
  3. 文書構造ロール
  4. ランドマークロール
  5. ライブリージョンロール
  6. ウィンドウロール

5.3.1 抽象ロール

以下のロールは、一般的なロール概念を定義するためにWAI-ARIAロールモデルをサポートします。

抽象ロールはオントロジー構築に用いられます。著者はMUST NOT抽象ロールをコンテンツで使用してはなりません。

5.3.2 ウィジェットロール

以下のロールは、単独のユーザーインターフェイスウィジェット、またはより大きな複合ウィジェットの一部として機能します。

以下のロールは複合ユーザーインターフェイスウィジェットとして機能します。これらのロールは、他のウィジェットを管理するコンテナとして動作することが一般的です。

5.3.3 文書構造ロール

以下のロールは、ページ内のコンテンツを構成する構造を表します。文書構造は通常インタラクティブではありません。

5.3.4 ランドマークロール

以下のロールは、ページ内のナビゲーションランドマーク領域です。これらのロールはすべてlandmarkベースタイプから継承され、すべてRole Attribute [ROLE-ATTRIBUTE]からインポートされています。ロールはWAI-ARIAロールモデルの一部であることを明確にするためにここに含められています。

5.3.5 ライブリージョンロール

以下のロールライブリージョンであり、ライブリージョン属性で変更される場合があります。

5.3.6 ウィンドウロール

以下のロールは、ブラウザまたはアプリケーション内のウィンドウとして動作します。

5.4 ロールの定義

以下に、著者が使用するWAI-ARIAロールのアルファベット順一覧を示します。

抽象ロールはオントロジーで使用されます。著者はMUST NOT抽象ロールをコンテンツで使用してはなりません。

alert
重要で通常は時間的制約のある情報を持つライブリージョンの一種です。関連:alertdialogstatus
alertdialog
アラートメッセージを含み、初期フォーカスがダイアログ内の要素に移るダイアログの一種。関連:alertdialog
application
1つ以上のフォーカス可能な要素を含み、widgetロールでサポートされる標準的な操作パターンに従わない、キーボードやジェスチャーイベントなどのユーザー入力を必要とするstructure
article
文書、ページ、サイトの独立した一部となる構成から成るページのセクション。
banner
主にサイト指向のコンテンツを含み、ページ固有のコンテンツではないlandmark
blockquote
他の情報源から引用されたコンテンツのセクション。
button
クリックまたは押下でユーザー操作を実行する入力要素。関連:link
caption
可視コンテンツで、figuretablegridtreegridを命名・説明します。
cell
表形式コンテナ内のセル。関連:gridcell
checkbox
3つのtruefalsemixed)を持つチェック可能な入力。
code
コンピューターコード断片を表す内容のセクション。
columnheader
列のヘッダー情報を含むセル。
combobox
他の要素(listboxgridなど)を制御し、inputの値設定を支援するダイナミックなポップアップを持つinput
command
入力データを受け取らず、アクションを実行するウィジェットの一種。
complementary
主コンテンツと同じ階層に配置されるが、主コンテンツから分離されても意味を持つlandmark
composite
ナビゲーション可能な子孫や所有する子要素を含むウィジェット
contentinfo
親文書に関する情報を含むlandmark
definition
用語や概念の定義。関連:term
deletion
削除された、または削除が提案されている内容を含む削除要素。関連:insertion
dialog
ウェブアプリケーションの主要ウィンドウの子ウィンドウとなるダイアログ。HTMLページの場合、主要アプリケーションウィンドウは文書全体(body要素)。
directory
[ARIA 1.2で非推奨] グループのメンバー参照の一覧(例:静的な目次)。
document
コンテンツを含む要素で、支援技術利用者が読みモードで閲覧したい場合がある。
emphasis
強調された文字。関連:strong
feed
スクロール可能なlistで、スクロールによりarticleが両端に追加・削除され得る。
figure
知覚可能なsectionで、一般にグラフィカルドキュメント、画像、コード断片、サンプルテキストを含みます。figureの各部はユーザーがナビゲートできるMAY場合があります。
form
アイテムやオブジェクトの集合を含むlandmark領域で、全体でフォームを構成します。関連:search
generic
自身にはセマンティックな意味がない、名前のないコンテナ要素
grid
1つ以上の行と複数のセルから構成され、2次元ナビゲーション(矢印キーなど)でセルの一部または全部にフォーカスできる複合widget
gridcell
gridまたはtreegrid内のcell
group
ページの要約や目次に含める意図のない、ユーザーインターフェイスオブジェクトの集合。
heading
ページセクションの見出し。
img
画像を構成する要素のコレクションのコンテナ。
input
ユーザー入力を受け付ける汎用ウィジェット型。
insertion
追加された、または追加が提案されている内容を含む挿入要素。関連:deletion
landmark
著者が指定した目的に関連し、ユーザーが容易に移動でき、ページ要約に載るほど重要な知覚可能なsection。ページ要約はユーザーエージェントや支援技術が動的に生成する場合も。
link
内部・外部リソースへのインタラクティブな参照で、アクティブ化するとユーザーエージェントがそのリソースへ移動します。関連:button
list
listitem要素を含むsection。関連:listbox
listbox
選択肢リストから1つ以上のアイテムを選択できるウィジェット。関連:comboboxlist
listitem
リストやディレクトリの単一アイテム。
log
新情報が意味順で追加され、古情報が消えるライブリージョン。関連:marquee
main
文書の主要コンテンツを含むlandmark
marquee
重要でない情報が頻繁に変化するライブリージョン。関連:log
math
数学式を表すコンテンツ。
meter
既知範囲内のスカラー測定や分数値を表す要素。関連:progressbar
menu
ユーザーに選択肢リストを提示するウィジェット
menubar
通常は横並びで常に表示されるmenuの提示。
menuitem
menumenubarが含む選択肢の一つ。
menuitemcheckbox
チェック可能な状態(truefalsemixed)を持つmenuitem
menuitemradio
同じロールを持つ要素群の中で、同時に1つだけチェックできるチェック可能なmenuitem
navigation
文書や関連文書をナビゲートするためのリンクなどのナビゲーション要素群を含むlandmark
none
暗黙のネイティブロールセマンティクスがアクセシビリティAPIにマッピングされない要素。同義語:presentation
note
リソースの主コンテンツに付随する、または補足的な内容のセクション。
option
listbox内で選択可能なアイテム。
paragraph
コンテンツの段落。
presentation
暗黙のネイティブロールセマンティクスがアクセシビリティAPIにマッピングされない要素。同義語:none
progressbar
処理が長時間かかるタスクの進捗状況を表示する要素
radio
同じロールを持つ要素群の中で、同時に1つだけチェックできるチェック可能な入力。
radiogroup
radioボタンのグループ。
range
値の範囲を表す要素。
region
著者指定の目的に関連し、ユーザーが容易に移動でき、ページ要約に載るほど重要なlandmarkコンテンツ。ページ要約はユーザーエージェントや支援技術が動的に生成する場合も。
roletype
すべてのロールが継承する基本ロール
row
表形式コンテナ内のセルの行。
rowgroup
表形式コンテナ内で1つ以上の行要素を含む構造。
rowheader
行のヘッダー情報を含むセル。
scrollbar
コンテンツの表示領域内のスクロールを制御するグラフィカルオブジェクト。内容が表示領域に完全に表示されているかどうかに関わらず。
search
アイテムやオブジェクトの集合を含み、全体で検索機能を構成するlandmark領域。関連:formsearchbox
searchbox
検索条件指定用のテキストボックス型。関連:textboxsearch
section
文書やアプリケーション内の描画可能な構造的コンテナ単位。
sectionhead
関連するセクションのトピックをラベル付けまたは要約する構造。
select
ユーザーが選択肢から選択できるフォームウィジェット。
separator
コンテンツやメニュー項目グループを区切り、識別する区分要素。
slider
ユーザーが指定した範囲内から値を選択する入力。
spinbutton
ユーザーが離散的な選択肢から選択することを想定したrange型のフォーム。
status
ユーザーへの助言情報を含み、alertほど重要ではないライブリージョン(多くはステータスバーとして表示)。
strong
重要、深刻、緊急な内容。関連:emphasis
structure
文書構造要素
subscript
下付き文字。関連:superscript
superscript
上付き文字。関連:superscript
switch
チェック/未チェック値ではなくオン/オフ値を表すチェックボックス型。関連:checkbox
tab
ラベルグループで、ユーザーに表示するタブコンテンツ選択メカニズムを提供。
table
行と列で構成されたデータを含むsection。関連:grid
tablist
tab要素のリストで、tabpanel要素への参照となります。
tabpanel
tabtablist内に含まれ、タブに関連するリソースを格納するコンテナ。
term
対応する定義を持つ単語または句。関連:definition
textbox
自由形式テキスト値を受け付ける入力型。
time
特定の時点を表す要素。
timer
開始点からの経過時間や終了点までの残り時間を示す数値カウンターを含むライブリージョンの一種。
toolbar
一般的な機能ボタンやコントロールをコンパクトな視覚形式で集約したもの。
tooltip
要素の説明を表示するコンテキストポップアップ。
tree
階層的に構成されたコレクションから1つ以上のアイテムを選択できるwidget
treegrid
gridで、treeと同様に行の展開・折り畳みが可能。
treeitem
treeの選択肢アイテム。サブグループを持つ場合は展開・折り畳み可能な要素
widget
グラフィカルユーザーインターフェース(GUI)のインタラクティブコンポーネント。
window
ブラウザまたはアプリケーションのウィンドウ。

alert role

重要で、通常は時間的制約がある情報を含むライブリージョンの一種です。関連:alertdialogstatus

alertは、ユーザーにとって即座に重要となるメッセージを伝えるために使用されます。音声警告の場合、alertは聴覚障害者にとってアクセシブルな代替手段となります。alertロールは、アラートメッセージを含む要素に適用します。alertは、statusロールの特殊な形式であり、atomicなライブリージョンとして処理されます。

alertは「アサーティブ」なライブリージョンであり、支援技術利用者に即時通知を引き起こします。オペレーティングシステムが許可する場合、ユーザーエージェントは、WAI-ARIAアラートが作成された際、アクセシビリティAPI経由でシステムアラートイベントSHOULD発火するべきです。

著者もユーザーエージェントも、alertが処理されるためにフォーカスを設定・管理する必要はありません。alertはフォーカスを受ける必要がないため、著者はユーザーにalertを閉じることをSHOULD NOT要求すべきではありません。著者がメッセージ表示時にフォーカスを移動したい場合は、alertdialogを使用するべきです(SHOULD)。

alertロールを持つ要素は、暗黙のaria-live値がassertive、暗黙のaria-atomic値がtrueとなります。

特性:
特性
スーパークラスロール: section
サブクラスロール:
継承される状態とプロパティ:
名前の取得元: author
ロールの暗黙値: aria-liveのデフォルトはassertive
aria-atomicのデフォルトはtrue

alertdialog role

アラートメッセージを含み、初期フォーカスがダイアログ内の要素に移るダイアログの一種。関連:alertdialog

alertdialogはユーザーに警告メッセージを伝えるために使用されます。alertdialogロールは、アラートメッセージおよびダイアログ全体を含むノードに設定します。コンテンツ著者は、alertdialog表示時にキーボード・マウス操作がダイアログ内だけで動作するようにして、モーダルにするべきです(SHOULD)。aria-modal参照。

alertと異なり、alertdialogはユーザーからの応答を受け付けることができます(例:ユーザーが警告内容を理解したかを確認)。alertdialog表示時、著者はダイアログ内のアクティブ要素(フォームコントロールや確認ボタンなど)にフォーカスを移すべきです(SHOULD)。ユーザーエージェントは、アラート作成時に意図したアクセシビリティAPIが指定されていれば、アクセシビリティAPI経由でシステムアラートイベントSHOULD発火するべきです。

著者はalertdialogaria-describedbyを使って、ダイアログ内のアラートメッセージ要素を参照するべきです(SHOULD)。指定しない場合は、支援技術が内部回復機構によってアラートメッセージ内容を決定することになります。

特性:
特性
スーパークラスロール:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True

application role

structureであり、1つ以上のフォーカス可能な要素を含み、widgetロールでサポートされる標準的なインタラクションパターンに従わない、キーボードやジェスチャーなどのユーザー入力を必要とします。

一部のユーザーエージェント支援技術にはブラウズモードがあり、標準の入力イベント(上下矢印キーなど)を捕捉してリーディングカーソルの制御に使います。このブラウズモード動作は、widgetロールを持たない要素がそうしたキーボードやジェスチャーイベントを受け取ってインタラクティブな機能を提供することを妨げます。

既存のWAI-ARIAwidgetロールでは対応できないインタラクションモデルの要素を作成する場合、著者はその要素にapplicationロールをMAY付与できます。そして、ユーザーがapplicationロールを持つ要素に入った際、標準入力イベントを捕捉する支援技術は、そのほとんどまたはすべての標準入力イベントをウェブアプリケーションにパススルーするモードにSHOULD切り替えるべきです。

例:プレゼンテーションスライドエディタでは、矢印キーでスライド上のテキストボックスや画像要素の位置を変更します。WAI-ARIAwidgetロールに対応するインタラクションモデルがないため、著者はスライドコンテナにapplicationロール、aria-roledescriptionを「Slide Editor」に設定し、aria-describedbyで操作方法を記述できます。

application要素内のフォーカス可能な要素のみが一部支援技術利用者にとってアクセス可能となるため、著者はアプリケーション内の装飾的でない静的テキストや画像コンテンツを必ずアクセシブルにするため、以下のいずれかの方法をMUST用いる必要があります:

  1. aria-labelledbyaria-describedbyでコンテンツをフォーカス可能な要素に関連付ける。
  2. コンテンツを、documentまたはarticleロールのフォーカス可能な要素内に置く。
  3. フォーカス管理で説明したように、所有要素のフォーカスを管理し、aria-activedescendant値をフォーカスされた要素に更新する。
特性:
特性
スーパークラスロール: structure
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True

article role

文書・ページ・サイトの独立した一部となる構成から成るページのセクション。

articleはナビゲーション用ランドマークではありませんが、入れ子にして議論を形成する場合、支援技術が入れ子構造を認識しユーザーが議論を追いやすくすることがあります。articleはフォーラム投稿、雑誌・新聞記事、ブログエントリー、ユーザー投稿コメント、その他独立したコンテンツ項目となり得ます。内容が独立しているとは、例えばシンジケーションでも単体で成立することを意味します。ただし、要素は祖先との関連は維持されます(例:親body要素の連絡先情報はarticleにも適用)。articleを入れ子にする場合、子articleは親articleの内容に関連したコンテンツを表します。例えば、ブログエントリーのコメントを親articleの下に入れ子のarticleとして表現できます。著者・見出し・日付などarticleに紐づく情報は、入れ子のarticleには適用されません。

ユーザーがarticleロールを持つ要素に移動した際、標準キーボードイベントを捕捉する支援技術は、キーボードイベントをウェブアプリケーションにパススルーするのではなく、ドキュメント閲覧モードにSHOULD切り替えるべきです。支援技術は、入れ子article要素階層をユーザーがナビゲートできる機能をMAY提供できます。

articlefeed文脈にある場合、著者はaria-posinsetaria-setsize値をMAY指定できます。

特性:
特性
スーパークラスロール: document
関連概念:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author

blockquote role

他の情報源から引用されたコンテンツのセクションです。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
名前の取得元: author

button role

クリックや押下でユーザーの操作をトリガーする入力要素です。関連:link

ボタンは主に個別のアクションで使われます。ボタンの見た目を標準化することで、ユーザーがウィジェットをボタンとして認識しやすくなり、ツールバーなどでコンパクトな表示も可能となります。

ボタンはオプション属性attributearia-pressedをサポートします。aria-pressed属性が空でない場合、そのボタンはトグルボタンです。aria-pressedtrueなら「押下」状態、falseなら非押下状態です。属性がなければ単なるコマンドボタンとなります。

特性:
特性
スーパークラスロール: command
基本概念: <button>([HTML])
関連概念:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル・ネーム必須: True
子要素は提示用: True

caption role

可視コンテンツで、figuretablegridtreegridを命名し、説明も可能です。

captionを使用する際、著者は以下をSHOULD確実にすべきです:

  • captionfiguretablegrid、またはtreegridの直下の子要素であること。
  • captiontablegridtreegridの最初の子要素であること。
  • captionfigureの最初または最後の子要素であること。

著者は、親要素のfiguretablegridtreegridaria-labelledbyを設定し、captionロールを持つ要素を参照するべきです(SHOULD)。ただし、captionの中に親の名前と説明が含まれる場合は、著者はaria-labelledbycaption内の簡潔な名前要素を参照し、aria-describedbyで説明内容要素を参照してもMAYです。

<div role="table" aria-labelledby="name" aria-describedby="desc">
   <div role="caption">
     <div id="name">コンテスト参加者</div>
     <div id="desc">
       この表は過去4週間でコンテストが受け付けた参加者総数(500人)を示します。
     </div>
   </div>
   <!-- ... -->
特性:
特性
スーパークラスロール: section
関連概念:
必須のコンテキストロール:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

cell role

表形式コンテナ内のセル。関連:gridcell

roleがcellの要素は、rowロールを持つ要素内または所有されている必要があります(MUST)。

特性:
特性
スーパークラスロール: section
サブクラスロール:
基本概念: <td>([HTML])
必須のコンテキストロール: row
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author

checkbox role

3つのtruefalsemixed)を持つチェック可能な入力です。

checkboxaria-checked属性は、入力がチェックされている(true)、未チェック(false)、またはグループ内にチェックと未チェックが混在している(mixed)かを示します。多くのチェックボックスはmixed値を使わず、事実上ブール型チェックボックスとなります。

特性:
特性
スーパークラスロール: input
サブクラスロール:
関連概念:
必須の状態とプロパティ:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル・ネーム必須: True
子要素は提示用: True

code role

内容がコンピューターコード断片を表すセクションです。

codeロールの主な目的は、支援技術に対して内容がコンピューターコードであることを知らせ、特に合成音声による提示方法に特別な配慮が必要である場合があることを伝えることです。特に、スクリーンリーダーやテキスト読み上げツールは、一般記号(例:「-」など)が確実に読み上げられるよう、句読点の詳細な読み上げをSHOULD優先するべきです。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

columnheader role

列のヘッダー情報を含むセルです。

columnheaderは、テーブルやグリッドで列ヘッダーとして使用できます。円グラフなどでデータの関係を示す用途でも使えます。

columnheaderは対応する列内のすべてのセルとの関係を確立します。これはHTML th要素(列スコープ)と構造的に同等です。

roleがcolumnheaderの要素は、rowロールの要素内または所有されている必要があります(MUST)。

aria-selected状態をcolumnheaderに適用しても、ユーザーエージェントが対応する列内のすべてのセルにaria-selected状態を自動的に伝搬してはなりません(MUST NOT)。著者が必要に応じてこの伝搬を行うことはMAYです。

columnheaderロールはインタラクティブなグリッドにも非インタラクティブなテーブルにも使えますが、aria-readonlyaria-requiredはインタラクティブ要素にのみ適用されます。したがって、table下位のcolumnheaderには、aria-requiredaria-readonlyを使うべきではありません(SHOULD NOT)。ユーザーエージェントも、columnheadergridtreegrid下にある場合を除き、これらのプロパティを支援技術に公開すべきではありません(SHOULD NOT)。

セルは行ごとに構成されるため、列自体に専用のコンテナ要素はありません。列とは、各行内の特定位置にあるgridcell要素の集合です。

: aria-disabledの利用について

aria-disabledは現時点でcolumnheaderでサポートされていますが、将来のバージョンでは、columnheadergridtreegridのコンテキストにある場合以外は利用禁止となる予定です。

特性:
特性
スーパークラスロール:
基本概念: <th[scope="col"]>([HTML])
必須のコンテキストロール: row
サポートされる状態とプロパティ: aria-sort
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル・ネーム必須: True

combobox role

inputであり、listboxgridなどを制御し、inputの値設定を補助するためにダイナミックにポップアップすることができる要素です。

編集者注: ARIA 1.2でのcomboboxロールの大幅な変更

comboboxのガイダンスは、以前のパターンの実装問題によりARIA 1.2で大きく変更されました。 著者・ユーザーエージェント・支援技術・適合性チェッカーの開発者は、このセクションをよく確認し変更点を理解することが推奨されます。 変更点詳細はARIAリポジトリのwikiにあります。

comboboxは、名前付き入力欄と補助ポップアップ要素による値選択補助を機能的に組み合わせたものです。 comboboxの入力フィールドは編集や入力可能な単一行テキスト欄でもよいし、現在値のみ表示する要素でもかまいません。 comboboxがテキスト入力をサポートし、aria-autocompleteで定義されたオートコンプリート挙動を提供する場合、著者はcombobox要素に提供する挙動に応じたaria-autocomplete値をMUST設定する必要があります。

通常、comboboxの初期状態は折りたたみ(collapsed)です。 折りたたみ状態では、combobox要素と独立した(任意の)ポップアップコントロールbuttonのみが表示されます。 comboboxが展開(expanded)状態の場合、現在値を表示するcombobox要素と関連ポップアップ要素が両方表示されます。 著者は、comboboxが展開時はaria-expandedtrueに、折りたたみ時はfalseMUST設定する必要があります。

著者は、comboboxと関連付けるポップアップ要素にlistboxtreegriddialogのいずれかのロールをMUST設定する必要があります。 combobox要素には、ポップアップ要素を参照する値をaria-controlsMUST設定する必要があります。

comboboxロールを持つ要素は、暗黙のaria-haspopup値がlistboxとなります。 もしポップアップ要素のロールがlistbox以外の場合は、そのポップアップのロールに対応したaria-haspopup値を著者がMUST指定する必要があります。

UIにポインターやタッチ操作でポップアップの表示可否を制御する専用アイコンが含まれる場合、その要素にはbuttonロールを付与し、フォーカス可能だがTab順には含めず、combobox要素の子孫にしないことがSHOULD推奨されます。 また、キーボードでもcombobox要素とポップアップ内の要素間を移動できる仕組みをSHOULD著者が提供すべきです。 例えば、一般的な慣例としてDown Arrowで入力欄からポップアップ内の最初のフォーカス可能要素に移動できます。 ポップアップ要素がaria-activedescendantをサポートする場合は、フォーカス移動の代わりにcombobox要素のaria-activedescendant値を制御することもできます。 ポップアップ内の子孫がアクティブな場合、著者はcombobox要素のaria-activedescendant値をポップアップ内のアクティブ要素参照値に設定してもMAYです(フォーカスはcombobox要素上に保持)。

ユーザーエージェントは、comboboxロールを持つ要素の値を支援技術MUST公開する必要があります。 comboboxの値は以下のいずれかで表されます:

  • combobox要素が、値を持つhost言語要素(HTML inputなど)の場合は、その要素の値。
  • それ以外の場合は、descendant要素の内容で表され、buttonの名前計算方法と同様に決定されます。
    <label for="tag_combo">タグ</label>
  <input type="text" id="tag_combo"
      role="combobox" aria-autocomplete="list"
      aria-haspopup="listbox" aria-expanded="true"
      aria-controls="popup_listbox" aria-activedescendant="selected_option">
<ul role="listbox" id="popup_listbox">
   <li role="option">ゼブラ</li>
   <li role="option" id="selected_option">ズーム</li>
</ul>
編集者注: ARIA 1.2でのcomboboxの適合性変更

この変更により、ARIA 1.1 combobox仕様に従ったコンボボックスは、ARIA仕様に適合しなくなりますので十分ご注意ください。

本仕様で定義されるcomboboxの構造要件は、ARIA 1.0やARIA 1.1で定義された要件と異なります:

  • ARIA 1.0仕様では、comboboxロール付きinput要素は単一行テキストフィールドで、ポップアップ要素はaria-ownsで参照していました(aria-controlsではなく)。
  • ARIA 1.1仕様(支援技術で広くサポートされなかった)は、comboboxを非フォーカス要素とし、2つの必須所有要素(フォーカス可能なtextboxと、textboxが制御するポップアップ要素)を要求していました。
  • ARIA 1.2で導入された変更により、支援技術との相互運用性が向上し、著者はよりHTMLの標準select要素に近いcomboboxの見た目を作成できるようになりました。

comboboxの実装は機能・動作が多岐にわたるため、著者には多くの重要な考慮事項があります。詳細はWAI-ARIAオーサリング実践でcomboboxデザインパターンの実装詳細を参照してください。

特性:
特性
スーパークラスロール: input
関連概念:
必須の状態とプロパティ:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True
ロールの暗黙値: aria-haspopupのデフォルトはlistbox

command role

アクションを実行するが、入力データは受け取らないウィジェットの一種です。

commandはオントロジー用の抽象ロールです。著者はコンテンツでこのロールを使用すべきではありません。

特性:
特性
抽象ロールか: True
スーパークラスロール: widget
サブクラスロール:
継承される状態とプロパティ:
名前の取得元: author

complementary role

landmarkであり、DOM階層上で主コンテンツと同じ階層に配置されつつ、主コンテンツから分離されても意味が成立するように設計されています。

このロールに適したコンテンツは様々です。例としてポータルサイトでは、上映時間、現在の天気、関連記事、注目株などが該当します。complementaryロールは、含まれる内容が主コンテンツに関連していることを示します。もしcomplementary内容が主コンテンツから完全に分離可能なら、より一般的なロールを使うことが適切かもしれません。

ユーザーエージェントは、complementaryロールを持つ要素をナビゲーション用ランドマークとしてSHOULD扱うべきです。

特性:
特性
スーパークラスロール: landmark
継承される状態とプロパティ:
名前の取得元: author

composite role

ウィジェットであり、ナビゲーション可能な子孫や所有する子要素を含むことができます。

著者は、複合ウィジェットがウェブページ全体のナビゲーションシステム内で単一のナビゲーションストップとなるようSHOULD配慮すべきです。複合ウィジェットにフォーカスが当たった後は、著者はその子孫や所有子要素へ個別にナビゲーションできる仕組みをSHOULD用意すべきです。

compositeはオントロジー用の抽象ロールです。著者はコンテンツでこのロールを使用すべきではありません。

特性:
特性
抽象ロールか: True
スーパークラスロール: widget
サブクラスロール:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author

contentinfo role

親文書に関する情報を含むlandmarkです。

この領域には、著作権情報やプライバシー声明へのリンクなどの情報が含まれることが一般的です。

ユーザーエージェントは、contentinfoロールを持つ要素をナビゲーション用ランドマークとしてSHOULD扱うべきです。

どのdocumentapplication内でも、著者はcontentinfoロールを持つ要素を1つだけSHOULDマークすべきです。

documentapplication要素はDOM内で入れ子にできるため、それぞれ異なる文書ノードに紐づいている場合は、複数のcontentinfo要素がDOM子孫として存在することもあります。これはDOMの入れ子(例:documentの中のdocument)や、aria-owns属性を使った場合に当てはまります。

特性:
特性
スーパークラスロール: landmark
継承される状態とプロパティ:
名前の取得元: author

definition role

用語や概念の定義です。関連:term

著者は、定義する要素termロールを付与し、aria-labelledby属性で参照するか、termロールの要素をdefinitionロールの要素の子孫にすることで定義対象を示すべきです(SHOULD)。

特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の取得元: author

deletion role

削除には、削除された内容や削除が提案されている内容が含まれます。関連:insertion

deletionは通常、2つのバージョン間の差分をマークしたり、複数人でコンテンツを修正する場面で削除提案を示すために使われます。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

dialog role

ダイアログはウェブアプリケーションの主要ウィンドウの子ウィンドウです。HTMLページの場合、主要アプリケーションウィンドウは文書全体(body要素)となります。

ダイアログはユーザーに情報の入力や応答を促すためによく使われます。ワークフローを中断する目的で設計されたダイアログは通常モーダルです。関連:alertdialog

著者は、ダイアログにアクセシブル・ネームをMUST提供する必要があります。これはaria-labelaria-labelledby属性で行えます。

著者は、すべてのダイアログ(モーダル・非モーダル)に少なくとも1つのフォーカス可能な子孫要素があることをSHOULD確保すべきです。モーダルダイアログが表示された際は要素にフォーカスを移し、モーダルダイアログのフォーカス管理もSHOULD行うべきです。

このロールの説明で使われる「ウェブアプリケーション」という用語は、特定の支援技術の挙動を規定するapplicationロールを指すものではありません。

特性:
特性
スーパークラスロール: window
サブクラスロール:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True

directory role

[ARIA 1.2で非推奨] グループメンバー参照の一覧(例:静的な目次)。

アクセシビリティAPIで公開される場合、directoryロールは本質的にlistロールと同等です。そのため、directoryの利用は支援技術ユーザーに追加的な利点はありません。著者はdirectoryを非推奨とし、listやホスト言語の同等セマンティクスを使うべきです。

directoryはリンク付き/無しの静的な目次です。これはリストで構成された目次(ネストされたリストも含む)を指します。動的な目次は、代わりにtreeロールを使う場合もあります。

特性:
特性
スーパークラスロール: list
継承される状態とプロパティ:
名前の取得元: author

document role

要素で、支援技術利用者がリーディングモードで閲覧したいコンテンツを含みます。

ユーザーエージェントのフォーカスがdocumentロールを持つ要素に移動した際、静的コンテンツのリーディングモードを持つ支援技術は、そのリーディングモードにMAY切り替え、標準入力イベント(上下矢印キーなど)をリーディングカーソル制御に使うことがあります。

リーディングモードを持つ支援技術は、widgetapplicationロール以外のすべての要素に対してデフォルトでそのモードを適用します。そのため、documentロールが支援技術の挙動を変えるのは、documentロールを持つ要素がwidgetapplicationのフォーカス可能な子要素である場合のみ有用です。例:application要素内に静的なリッチテキストが含まれる場合、テキストを含む要素にdocumentロールとtabindex0を付与します。スクリーンリーダーユーザーがTabキーでdocument要素にフォーカスすると、そのテキストをリーディングカーソルで読むことができます。

特性:
特性
スーパークラスロール: structure
サブクラスロール:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: False

emphasis role

1文字以上の強調された文字。関連:strong

emphasisロールの目的は、内容を強調またはストレスを与えることです。意味に影響しないタイポグラフィの変更を伝えるためのものではありません。著者は、emphasisロールが無い場合に意味が変わる場合のみSHOULDこのロールを使用すべきです。

emphasisロールは重要性を伝えるものではありません。重要性にはstrongロールを使う方が適切です。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

feed role

スクロール可能なlistで、articleが含まれます。スクロール操作によりarticleがリストの両端に追加・削除されることがあります。

feedは、ドキュメント閲覧モードを備えた支援技術(スクリーンリーダー等)が、リッチなコンテンツのストリームをリーディングカーソルで読み・スクロールできるようにします。コンテンツが無限に読み込まれ続ける場合もあり、ユーザーが読むにつれて新しいコンテンツが追加されます。feed内で、支援技術はユーザーのリーディングカーソル移動をウェブアプリケーションに通知するため、ユーザーエージェントのフォーカスを移動します。その結果、アプリケーションは新しいコンテンツの追加や表示位置の調整ができます。また、feedは著者が追加・削除を通知できるため、支援技術がリーディングビューを妨げずパフォーマンスも維持しやすくなります。

例:feedはニュース記事ストリーム表示に使えます。各articleには本文、リンク、画像、コメントおよびシェア・コメント用ウィジェットなどが含まれます。スクリーンリーダーユーザーが記事間を移動しながら読むと、各記事が表示され、必要に応じて新しい記事が読み込まれます。

feedは、子要素がarticleロールを持つコンテナ要素です。feedの両端でarticleが追加・削除される場合、著者は変更前にfeed要素のaria-busytrueに、変更後にfalseSHOULD設定すべきです。また、feedの中央でarticleを追加・削除するのは避けるべきです(SHOULD)。これにより、支援技術は、ユーザーのリーディングカーソル操作と同時に発生するfeed変更にもスムーズに対応できます。

著者は、feed内の各articleをフォーカス可能にし、ユーザーエージェントのフォーカスがarticleまたはその子孫要素に移動した際、アプリケーションがそのarticleを表示領域にスクロールすることをSHOULD確保すべきです。例:HTMLでは、各article要素のtabindex値を-1または0にします。

支援技術のリーディングカーソルがあるarticleから別のarticleに移動した場合、支援技術はリーディングカーソルがあるarticleにユーザーエージェントのフォーカスをSHOULD移動させます。リーディングカーソルがarticle内のフォーカス可能要素に着地した場合、支援技術はその要素へのフォーカス移動をMAY選択できます。

支援技術のリーディングカーソルで他のarticleにスクロールできるかは、ページ内に別のarticleが存在するかに依存します。著者は、フォーカスがリスト両端のarticleに到達する前に追加読み込みをSHOULD試みるべきです。あるいは、リスト両端に追加読み込み用のbutton等を含めてもMAYです。

ラベルの他に、著者はaria-describedbyfeed内のarticle要素にMAY設定し、スクリーンリーダーでラベルの後に読み上げる要素を示唆できます。スクリーンリーダーは、ラベルとアクセシブル記述を組み合わせて素早く内容を把握できる機能をMAY提供します。これにより、著者が記述から除外した繰り返しや重要度の低い要素(埋め込みウィジェット等)をユーザーが無視できます。

著者は、feed内のarticle間でキーボード操作によるフォーカス移動コマンドをSHOULD提供すべきです。これにより、支援技術による記事ナビゲーション機能を使わないユーザーもキーボードでfeedを操作できます。

供給される記事数が固定の場合、著者はfeed内のarticle要素にaria-setsizeMAY指定できます。全体数が極めて多い・不定・頻繁に変動する場合は、aria-setsize-1を指定し、不明な集合サイズを伝えても構いません(MAY)。

詳細はWAI-ARIAオーサリング実践でfeedデザインパターンの実装を参照してください。

特性:
特性
スーパークラスロール: list
必須の所有要素: article
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: False

figure role

知覚可能なsectionであり、通常はグラフィカルドキュメント、画像、コード断片、サンプルテキストなどを含みます。figureの各部分はユーザーがナビゲートできるMAY場合があります。

著者は、figureを主文から参照することをSHOULD推奨しますが、figureは参照要素と同じ場所に表示する必要はありません。キャプションとして機能するテキストをaria-describedbyで参照してもMAYです。ラベルはaria-labelで設定したり、ラベルとして機能するテキストをaria-labelledbyで参照してもMAYです。

支援技術はユーザーがfigureに素早く移動できるようにするべきです(SHOULD)。主流のユーザーエージェントも素早くfigureに移動できるようにしてもMAYです。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: False

form role

landmark領域であり、アイテムやオブジェクトの集合を含み、それらが全体としてフォームを構成します。関連:search

フォームには、ホスト言語のフォームコントロール、スクリプト制御、ハイパーリンクなどが混在する場合があります。フォームコントロールは可能な限りホスト言語のネイティブセマンティクスを使うことが推奨されます。フォームの目的が検索条件の送信なら、汎用formロールではなくsearchロールをSHOULD使うべきです。

著者は、formロールを持つ各要素に、フォームの目的を簡潔に説明するラベルをMUST付与する必要があります。可視ラベルがある場合は、aria-labelledbyで参照することをSHOULD推奨します。ラベルは可能な限り見出し内に含めることをSHOULD推奨します。見出しはホスト言語の標準要素でも、headingロールの要素でもMAYです。

著者がスクリプトでフォーム送信を行い、通常onsubmitイベントが発火しないユーザー操作(例:フォーム要素値変更で送信)を使う場合は、事前にユーザーに挙動を通知することをSHOULD推奨します。

ユーザーエージェントは、formロールを持つ要素をナビゲーション用ランドマークとしてSHOULD扱うべきです。

特性:
特性
スーパークラスロール: landmark
基本概念: <form>([HTML])
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: true

generic role

自身にはセマンティックな意味がない、名前のないコンテナ要素

genericロールは、ホスト言語(HTML divspanなど)の汎用要素の暗黙ロールとして使われることを意図しており、主にユーザーエージェント実装者向けです。著者はコンテンツでこのロールをSHOULD NOT使用すべきです。代わりに、暗黙のアクセシビリティセマンティクスを除去したい場合はpresentationnone、子孫を名前付きコンテナで意味的にグループ化したい場合はgroupなどをMAY使えます。

presentationロールを持つ要素と同様に、generic要素もaria-live属性など子孫に対して限定的なアクセシブル状態・プロパティを提供できます。しかし、presentationと異なり、generic要素はアクセシビリティAPIに公開されるため、支援技術はレイアウトや境界などの情報を取得できます。

特性:
特性
スーパークラスロール: structure
関連概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

grid role

複合型widgetであり、1つ以上の行と1つ以上のセルを含み、グリッド内の一部またはすべてのセルが方向キーなどの二次元ナビゲーションによってフォーカス可能です。

gridロールは特定の視覚的(例:表形式)な表示を意味しません。これは要素間の関係を記述します。チェックボックスのグループやナビゲーションリンクのグループなど簡単な用途から、本格的な表計算アプリのような複雑な用途まで使えます。

gridのセル要素はgridcellロールを持ちます。著者はセルを行・列ヘッダーとしてrowheadercolumnheaderロールにしてもMAYです。著者はgridcellcolumnheaderrowheaderロールを持つ要素が必ずrowロールを持つ要素に所有され、その行要素がrowgroupまたはgridに所有されるようMUST保証してください。

キーボードアクセシブルにするため、著者はフォーカス管理に従いgrid子孫のフォーカスをSHOULD管理すべきです。キーボードでグリッドを操作する際、著者は以下の通りフォーカスを設定すべきです:

  • gridcellが、フォーカス時に方向キーを消費しない単一のインタラクティブwidget(例:checkboxbuttonlink)を含む場合、著者はそのインタラクティブ要素に直接フォーカスしてもMAYです。これによりウィジェットを直接操作できます。
  • それ以外の場合、フォーカスを受ける要素はgridcellrowheadercolumnheader要素であることをSHOULD保証してください。

フォーカス可能セル内に下記が含まれる場合、著者はインタラクションや編集モードへの切り替え手段をSHOULD提供すべきです:

  • 方向キー操作が必要なウィジェット(例:comboboxradiogroup
  • 複数のインタラクティブ要素
  • 編集可能な内容

例:スプレッドシートのセルにcomboboxや編集可能テキストがある場合、セルにフォーカス時にEnterキーで編集/インタラクションモードに入り、方向キーで内包ウィジェットを操作できるようにします。実装によっては、再度EnterTabEscape等でグリッドナビゲーションモードに戻すことができます。

著者はgridcellで計算式の結果を表示し、ユーザーが編集可能にしてもMAYです。例えば、表計算アプリでgridcellに計算値を表示し、編集時はtextboxが現れるようにできます。

gridロール要素にaria-readonly属性を設定した場合、ユーザーエージェントはMUSTその値を所有するすべてのgridcell要素に伝播し、アクセシビリティAPIで値を公開します。著者は個別のgridcell要素で伝播値を上書きしてもMAYです。

グリッドがセル内容の編集機能を持つ場合、フォーカス可能なgridcellが編集不可なら、そのgridcell要素にaria-readonlytrueで設定してもMAYです。なお、aria-readonly値はセル内容が編集可能かのみを示し、グリッド自体の操作可否は示しません。

aria-readonly値が未指定でも、グリッドやgridcellが編集可能な内容を持つとは限りません。例:グリッドが編集不可の日付リンク一覧を表示する場合、aria-readonly値を指定する必要はありません。

著者はフォーカス可能なgridcellをアクション対象として選択可能にする場合、aria-selected属性で示してもMAYです。複数選択可能な場合は、grid要素にaria-multiselectabletrueSHOULD設定してください。

WAI-ARIAはホスト言語要素の機能を拡張できるので、グリッドはネイティブのテーブル要素(例:HTML table)を再利用できます。例えば、HTML table要素にgridロールを付与すれば、trtd要素にrowgridcellロールを個別付与する必要はありません。ネイティブテーブル要素でセルの行・列跨ぎ指定が必要な場合は、WAI-ARIAのaria-rowspanaria-colspanではなく、ホスト言語の属性を使うべきです(SHOULD)。

詳細はWAI-ARIAオーサリング実践でグリッドデザインパターンの実装を参照してください。

特性:
特性
スーパークラスロール:
サブクラスロール:
基本概念: <table>([HTML])
必須の所有要素:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True

gridcell role

gridまたはtreegrid内のcellです。

gridcellはフォーカス可能・編集可能・選択可能です。gridcellaria-controlsなどの関係属性を持ち、機能的な関連付けができます。

行ヘッダー・列ヘッダーを持たせたい場合、DOM構造から該当ヘッダーが判別できない場合は、著者はgridcellaria-describedbyを用い、rowheadercolumnheaderロールの要素を参照するべきです(SHOULD)。

treegrid内では、著者はgridcellaria-expanded属性を付与し展開可能にしてもMAYです。aria-expanded属性は個々のセルにのみ適用され、行コンテナの展開制御にはなりません。主な用途はピボットテーブル動作です。

gridcellロールの要素は、rowロールの要素内または所有されている必要があります(MUST)。

特性:
特性
スーパークラスロール:
サブクラスロール:
基本概念: <td>([HTML])
必須のコンテキストロール: row
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author

group role

ページ要約や目次(支援技術による)に含める意図のないUIオブジェクトの集合。

regionは、目次に含めるUIオブジェクトのグループです。groupはこれと対照的です。

著者は、groupを使ってウィジェット内で論理的なアイテム集団をSHOULD形成すべきです(例:ツリーウィジェットで兄弟ノードの集団)。ただし、grouplistbox内にある場合は、子要素をoptionに限定することをMUSTです。そのため、groupの適切な扱いは文脈依存です。

著者はgroup要素を入れ子にしてもMAYです。もしその区分がページ目次に含めるほど重要なら、regionロールや標準ランドマークロールをSHOULD指定してください。

特性:
特性
スーパークラスロール: section
サブクラスロール:
関連概念:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author

heading role

ページ内セクションの見出し。

headingロールの要素が論理的なアウトラインになるよう、著者はaria-level属性で適切な階層レベルをMUST指定する必要があります。

特性:
特性
スーパークラスロール: sectionhead
関連概念:
必須の状態とプロパティ: aria-level
継承される状態とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル・ネーム必須: True

img role

画像を構成する要素の集まりを収容するコンテナ。

imgはキャプションや説明文、複数の画像ファイルも含み、全体で1つの画像として知覚されます。imgは、複数の描画オブジェクトで構成される場合も、文書内の単一グラフィックを表します。imgロール要素が知覚可能となるためには、著者がaria-labelまたはaria-labelledby属性でラベルをMUST提供する必要があります。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True
子要素は提示用: True

input role

ユーザー入力を受け付ける汎用タイプのウィジェット

特性:
特性
抽象ロールか: True
スーパークラスロール: widget
サブクラスロール:
サポートされる状態とプロパティ: aria-disabled
継承される状態とプロパティ:
名前の取得元: author

insertion role

挿入には、追加された内容や追加が提案されている内容が含まれます。関連:deletion

insertionは通常、2つのバージョン間の差分をマークしたり、複数人でコンテンツを修正する場面で追加提案を示すために使われます。

特性:
特性
スーパークラスロール: section
関連概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の取得元: prohibited

landmark role

特定の著者指定の目的に関連し、知覚可能なsectionであり、ユーザーが容易にそのセクションに移動したり、ページ要約に表示されることが望まれるほど重要な内容を含みます。こうしたページ要約は、ユーザーエージェントや支援技術により動的に生成される場合があります。

著者はlandmarkロールのサブクラスロールを割り当て、必要に応じて簡潔な説明ラベルを付与することでコンテンツの目的を指定します。

landmarkロールのサブクラスロールを持つ要素はランドマーク領域またはナビゲーションランドマーク領域と呼ばれます。 支援技術は、ユーザーがランドマーク領域に素早く移動できるようにするべきです(SHOULD)。主流のユーザーエージェントもランドマーク領域への素早い移動を可能にしてもMAYです。

landmarkはオントロジー用の抽象ロールです。著者はコンテンツでこのロールを使用すべきではありません。

特性:
特性
抽象ロールか: True
スーパークラスロール: section
サブクラスロール:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: False

list role

listitem要素を含むsectionです。関連:listbox

リストは、子要素のrolelistitemである要素を含みます。

特性:
特性
スーパークラスロール: section
サブクラスロール:
基本概念:
必須の所有要素: listitem
継承される状態とプロパティ:
名前の取得元: author

listbox role

ユーザーが選択肢リストから1つ以上の項目を選択できるウィジェットです。関連:comboboxlist

リスト内の項目は静的で、通常のHTML select要素と異なり画像も含めることができます。リストボックスは、子要素のroleoption、またはgroupロールを持ち、その中にoptionロールを持つ子要素がある場合も含みます。

キーボードアクセシブルにするには、著者はすべてのlistboxインスタンスでoption子孫のフォーカス管理をSHOULD行うべきです。詳細はフォーカス管理参照。

listboxロールを持つ要素は、暗黙のaria-orientation値がverticalとなります。

特性:
特性
スーパークラスロール:
関連概念:
必須の所有要素:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True
ロールの暗黙値: aria-orientationのデフォルト値はvertical

listitem role

リストまたはディレクトリ内の単一項目です。

著者は、rolelistitemである要素が、listロールを持つ要素内またはその所有であることをMUST確保してください。

特性:
特性
スーパークラスロール: section
サブクラスロール:
基本概念: <li>([HTML])
必須のコンテキストロール:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の取得元: author

log role

新しい情報が意味のある順序で追加され、古い情報が消えることもあるライブリージョンの一種です。関連:marquee

例:チャットログ、メッセージ履歴、ゲームログ、エラーログなど。他のライブリージョンと異なり、このロールでは、新しい項目の到着順と読み上げ順との関係があります。ログは意味のある連続性を持ち、新しい情報は必ずログの末尾に追加され、任意の位置には追加されません。

logロールを持つ要素は、暗黙のaria-live値がpoliteとなります。

特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の取得元: author
ロールの暗黙値: aria-liveのデフォルト値はpolite

main role

文書の主内容を含むlandmarkです。

これは文書の中心となる話題に直接関連する、またはそれを展開する内容を示します。mainロールは「主内容へスキップ」リンクの非侵入的な代替手段であり、ユーザーエージェントや支援技術がダイアログ等で主内容などのランドマークへの移動オプションを提供します。

ユーザーエージェントは、mainロール要素をナビゲーションランドマークとしてSHOULD扱うべきです。

どのdocumentapplication内でも、著者はmainロールを持つ要素を1つだけSHOULDマークすべきです。

documentapplication要素はDOM内で入れ子にできるため、それぞれ異なる文書ノードに紐づいている場合は、複数のmain要素がDOM子孫として存在することもあります。これはDOMの入れ子(例:documentの中のdocument)や、aria-owns属性を使った場合に当てはまります。

特性:
特性
スーパークラスロール: landmark
継承される状態とプロパティ:
名前の取得元: author

marquee role

重要でない情報が頻繁に変更されるライブリージョンの一種です。関連:log

よく使われる例:株価ティッカー、広告バナーなど。marqueelogの主な違いは、ログには重要な内容変化の意味のある順序や連続性がある点です。

marqueeロールを持つ要素は、暗黙のaria-live値がoffとなります。

特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True

math role

数学的な式を表す内容です。

mathロールの内容は、MathML [MathML3]のようなアクセシブルなフォーマット、またはTeXやLaTeXなどの他のテキスト表現でマークアップすることを意図しています。これらはブラウザのネイティブ実装やポリフィルライブラリによってアクセシブルなフォーマットに変換できます。

数学式の画像利用は理想的ではありませんが、過去のコンテンツには画像で式を表現しているものも多く存在します。著者は、数学画像にはその式を音声で読み上げた時の内容を記述するテキストラベルをSHOULD付与すべきです。

MathMLをネイティブ実装するブラウザは、プレーンテキスト近似よりも堅牢でアクセシブルな数式体験が可能です。一部レンダリングエンジンはスクリーンリーダーと密接に連携して、数式の空間的なタッチ探索やネメス点字形式の点字ディスプレイ出力を提供できます。この統合は数式画像ではサポートされず、プレーンテキスト近似を付与しても実現できません。

現時点では、一部主流ブラウザがMathMLをネイティブサポートしておらず、JavaScriptポリフィルライブラリによる補完が必要です。数式コンテンツ作成時は、可能な限りネイティブMathMLを使い、十分なテストを行ってください。必要に応じてポリフィルライブラリやテキスト代替付きの画像によるフォールバックを利用してください。

MathML埋め込みTeX注釈付き例

<!-- 注: MathML非対応ユーザーエージェント向けにJavaScriptポリフィルライブラリ使用推奨 -->
<!-- math要素には暗黙のrole="math"がある -->
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow>
    <mi>x</mi>
    <mo>=</mo>
    <mfrac>
      <mrow>
        <mo form="prefix"></mo>
        <mi>b</mi>
        <mo>±</mo>
        <msqrt>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo></mo>
          <mn>4</mn>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>a</mi>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>c</mi>
        </msqrt>
      </mrow>
      <mrow>
        <mn>2</mn>
        <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
        <mi>a</mi>
      </mrow>
    </mfrac>
  </mrow>
  <annotation encoding="TeX">
    x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
  </annotation>
</math>

プレーンHTMLまたはポリフィルDOMによるMathML二次方程式の結果

レンダリングエンジンがMathMLなどのネイティブ数式フォーマット非対応の場合、著者はJavaScriptで表示可能なフォーマット(例:データURI画像+テキスト代替)にダウングレードしてもMAYです。

<img role="math" src="..." alt="x=⟮−b±√⟮b²−4ac⟯⟯÷2a">
特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の取得元: author
子要素は提示用: False

meter role

既知の範囲内のスカラー測定値、または分数値を表す要素です。関連:progressbar

著者は、meterの最小値・最大値を示すためにaria-valueminaria-valuemaxMAY設定できます。未設定時の暗黙値はHTML <input[type="range"]>要素と同じ規則です:

  • aria-valueminが無いか数値でない場合は0。
  • aria-valuemaxが無いか数値でない場合は100。

aria-valuenowの値は、aria-valuemin未満またはaria-valuemax超になってはMUST NOTいけません。

meterロールは進捗表示にはSHOULD NOT使わず、progressbarロールを使ってください。

現在、ARIAにはHTMLの<meter>要素が持つlowoptimumhigh属性に対応するプロパティはありません。これらの追加はARIA 1.3で検討される予定です。

特性:
特性
スーパークラスロール: range
関連概念:
必須の状態とプロパティ: aria-valuenow
継承される状態とプロパティ:
名前の取得元: author
アクセシブル・ネーム必須: True
子要素は提示用: True
ロールの暗黙値: aria-valueminのデフォルト値は0
aria-valuemaxのデフォルト値は100

none role

要素の暗黙的なネイティブロールセマンティクスが、アクセシビリティAPIにマッピングされなくなります。同義語はpresentationです。

注記

ARIA 1.1 noneロールについての注記

ARIA 1.1では、ワーキンググループはnonepresentationロールの同義語として導入しました。これは「presentation」や「presentational」という言葉の意味に関する著者の混乱が理由です。多くの人がrole="presentation"aria-hidden="true"と同義だと誤って考えており、role="none"の方が実際の意味をより明確に伝えると考えています。

note role

リソースの主な内容に対して補足的または付随的な内容のセクションです。

特性:
特性
スーパークラスロール: section
継承される状態およびプロパティ:
名前の取得元: author

option role

listbox内で選択可能な項目です。

著者は必須として、要素role optionである場合、それがlistboxまたはgroup(listbox内)に含まれている、または所有されていることを保証しなければなりません。listboxに関連付けられていないoptionは、アクセシビリティAPIに正しくマッピングされない場合があります。

optionロールを持つ要素は、aria-selectedの暗黙的な値がfalseとなります。

特性:
特性
スーパークラスロール: input
サブクラスロール:
基本概念: <option>([HTML]にて)
関連する概念:
必要なコンテキストロール:
必須状態およびプロパティ:
対応する状態およびプロパティ:
継承される状態およびプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル名が必要: True
子要素のプレゼンテーション: True
ロールの暗黙的値: aria-selectedのデフォルトはfalseです。

paragraph role

コンテンツの段落です。

特性:
特性
スーパークラスロール: section
関連する概念:
継承される状態およびプロパティ:
禁止される状態およびプロパティ:
名前の取得元: prohibited

presentation role

要素の暗黙的なネイティブロールセマンティクスが、アクセシビリティAPIにマッピングされなくなります。同義語はnoneです。

注記

ARIA 1.1 noneロールについての注記

ARIA 1.1では、ワーキンググループはnonepresentationロールの同義語として導入しました。これは「presentation」や「presentational」という言葉の意味に関する著者の混乱が理由です。多くの人がrole="presentation"aria-hidden="true"と同義だと誤って考えており、role="none"の方が実際の意味をより明確に伝えると考えています。

実装がrole="none"の十分なサポートを含むまで、Web著者はpresentationロール単独(role="presentation")や冗長にnoneロールのフォールバックとしてrole="none presentation"を使用することが推奨されます。

主な用途は、ページの外観変更のために使われるが、要素型が暗示する機能的・インタラクティブ・構造的な意味を持たない場合や、WAI-ARIAをサポートしない古いブラウザでアクセシブルなフォールバックを提供する場合です。

使用例:

  • 内容が完全に装飾的な要素(スペーサ画像、装飾グラフィック、クリアリング要素など)
  • テキスト代替が完全に提供され、aria-labelledbyや(必要なら)aria-describedbyでマークアップされているimgロールのコンテナ内の画像
  • 追加のマークアップ「フック」として使われる要素(CSS用など)
  • レイアウトテーブルや、それに付随する行・セル等

presentationロールかつフォーカス可能でない要素について、ユーザーエージェントは必須として、その要素の暗黙的なネイティブセマンティクス(ロールと状態・プロパティ)をアクセシビリティAPIへ公開してはなりません。ただし、明示的または継承されたpresentationロールを持たない子孫要素や内容は公開されます。つまり、presentationロールは対象要素自体をロール無しまたはアクセシビリティツリーから除外しますが、要素内の内容は除外しません。

例として、アクセシビリティAPIによれば、次のマークアップ要素は同一のロールセマンティクス(ロール無し)と同一の内容として扱われます。

<!-- 1. [role="presentation"]は暗黙の'heading'ロールセマンティクスを打ち消しますが、内容には影響しません。 -->
<h1 role="presentation"> Sample Content </h1>

<!-- 2. spanには暗黙のロールが無いため、内容のみが公開されます。 -->
<span> Sample Content </span>

<!-- 3. スタイリング等により、このロール宣言は一部実装で冗長になる場合があります。 -->
<span role="presentation"> Sample Content </span>

<!-- 4. いずれの場合も、要素内容はアクセシビリティAPIにロール無しで公開されます。 -->
<!-- <> --> Sample Content <!-- </> -->

presentation ロールは暗黙のネイティブ意味論、すなわち要素にデフォルトのアクセシビリティ API ロールが存在する要素に使用される。いくつかの要素は追加の子孫要素が提供されて初めて完全となる。例えば HTML では、table 要素(table ロールに一致)は tr 子孫(row ロール)を必要とし、それらは th または td 子(cellcolumnheaderrowheader ロール)を必要とする。同様にリストは list item 子要素を必要とする。要素の意味論を完成させる子孫要素は WAI-ARIA では required owned elements として記述される。

暗黙に WAI-ARIA ロールの意味論を持ち、そのロールが required owned elements を持つ要素に明示または継承された presentation が適用された場合、明示的に presentation ロールを持つ要素に加え、ユーザエージェントは明示的ロールが定義されていないあらゆる所有要素に継承された presentation ロールを適用 しなければならない。また、ホスト言語仕様で定義される必須子を持つホスト言語要素に明示または継承された presentation ロールが適用される場合、明示的ロールを持つ要素に加え、ユーザエージェントは明示的ロールが定義されていない任意の必須子に継承された presentation ロールを適用 しなければならない

HTML では、<img> 要素は画像ファイルの種類に関わらず単一の実体として扱われる。その結果、HTML imgrole="presentation" または role="none" を使用することは aria-hidden="true" を使用することと同等である。画像コンテンツをアクセシブルにするために、著者は <object> または <iframe> 要素を用いてオブジェクトを埋め込むか、インライン SVG コードを使用し、画像コンテンツのアクセシビリティガイドラインに従うことができる。

明示または継承された presentation ロールを持ちフォーカス可能でない任意の要素について、ユーザエージェントはその要素のロール特有の WAI-ARIA 状態とプロパティを無視 しなければならない。例えば HTML では、ul または ol 要素が presentation ロールを持つと、ulol が対応する list ロールが required owned element として listitem を持つため、その li 要素の暗黙ネイティブ意味論は除去される。同様に、HTML table 要素の thead/tbody/tfoot/tr/th/td 子孫の暗黙ネイティブ意味論も、これらが table 要素の必須構造的子孫であると HTML 仕様が示しているため除去される。

Note

除去されるのは WAI-ARIArequired owned elements に対応する要素の暗黙ネイティブ意味論のみである。他のすべてのコンテンツ(入れ子のテーブルやリストを含む)は、それらの要素にも明示的な presentation ロールが適用されない限りそのまま残る。

例えば、アクセシビリティ API によれば、以下のマークアップ要素は同一のロール意味論(ロール無し)かつ同一のコンテンツを持つように現れる。

<!-- 1. [role="presentation"]は暗黙の'list'および'listitem'ロールセマンティクスを打ち消しますが、内容には影響しません。 -->
<ul role="presentation">
  <li> Sample Content </li>
  <li> More Sample Content </li>
</ul>

<!-- 2. "foo"には暗黙のロールがないので、内容のみが公開されます。 -->
<foo>
  <foo> Sample Content </foo>
  <foo> More Sample Content </foo>
</foo>
注記

この状況が該当するWAI-ARIAの必須子要素を持つ他のロール(例:radiogroupやlistbox等)もありますが、テーブルとリストが最も一般的な継承適用例です。

明示的または継承されたpresentationロールを持つ任意の要素について、ユーザーエージェントは、その要素のホスト言語固有のラベル要素にもpresentationロールを継承して適用しなければなりません。たとえば、presentationロールの table要素は、caption要素の暗黙セマンティクスも除外されます(captionは単なるラベルです)。

著者は、画像にpresentationロールを適用する場合、意味のある代替テキスト(例:HTMLではalt="")を提供しないよう非推奨です。

以下のコード例では、コンテナがimgロールであり、キャプション段落で適切にラベル付けされています。この場合、img要素はpresentationとしてマークアップできます。

<div role="img" aria-labelledby="caption">
  <img src="example.png" role="presentation" alt="">
  <p id="caption">A visible text caption labeling the image.</p>
</div>

次のコード例では、アンカー(HTMLのa要素)がtreeitemとして機能し、リスト項目(HTMLの li要素)はリストアイテムの暗黙セマンティクスを打ち消すために明示的にpresentationロールが付与されています。

<ul role="tree">
  <li role="presentation">
	<a role="treeitem" aria-expanded="true">An expanded tree node</a>
  </li></ul>

プレゼンテーションロールの競合解決

プレゼンテーションロールの競合を解決する方法はいくつかあります。

ユーザーエージェントは、以下の例外を除き、明示的または継承されたプレゼンテーションロールを持つ要素をアクセシビリティツリーで公開してはなりません。

  • 要素がフォーカス可能またはインタラクティブな場合、ユーザーエージェントはpresentationロールを無視し、暗黙のロールで公開しなければなりません(要素が操作可能であることを保証するため)。
  • 必須所有要素に明示的な非プレゼンテーションロールがある場合、ユーザーエージェントは継承されたプレゼンテーションロールを無視し、明示的なロールで公開しなければなりません。公開によりアクセシビリティツリーが不正な構造になる場合、その結果は未定義です。
  • 要素がグローバルARIA状態・プロパティを持つ場合、ユーザーエージェントはpresentationロールを無視し、暗黙のロールで公開しなければなりません。ただし、非グローバルでロール固有のARIA状態・プロパティのみの場合、明示的な非プレゼンテーションロールが継承されない限り、その要素は公開されません。

例えば、aria-describedbyはグローバル属性のため常に適用されます。一方aria-levelはグローバル属性ではないため、その要素がプレゼンテーション状態でなければ適用されます。

<!-- 1. グローバルaria-describedby属性のため、[role="presentation"]は無視されます。 -->
<h1 role="presentation" aria-describedby="comment-1"> Sample Content </h1>
<!-- 2. [role="presentation"]は暗黙の'heading'および非グローバルaria-levelを打ち消します。 -->
<h1 role="presentation" aria-level="2"> Sample Content </h1>
特性:
特性
スーパークラスロール: structure
継承される状態およびプロパティ:
禁止される状態およびプロパティ:
名前の取得元: prohibited

progressbar role

時間がかかるタスクの進行状況を表示する要素です。

progressbarは、ユーザーのリクエストが受理され、アプリケーションが要求されたアクションの完了に向けて進行していることを示します。

著者は任意で、進行状況インジケーターの最小値・最大値を示すためにaria-valueminおよびaria-valuemaxを設定できます。設定しない場合、暗黙的な値は[HTML]の<input[type="range"]>と同じ規則に従います:

  • aria-valueminが省略または数値でない場合、デフォルトは0(ゼロ)です。
  • aria-valuemaxが省略または数値でない場合、デフォルトは100です。

著者は、値が不定でない限り推奨としてaria-valuenowを指定してください。不定の場合はaria-valuenow属性を省略することが推奨されます。著者は、進行状況インジケーターの視覚的な更新に合わせてこの値も更新することが推奨されます。もしprogressbarがページの特定領域の読み込み進捗を表す場合、著者はaria-describedbyでステータスを指し示し、読み込み完了までその領域にaria-busy属性をtrueに設定することが推奨されます。progressbarの値は常に読み取り専用であり、ユーザーが値を変更することはできません。

注記

支援技術は通常、aria-valuenowの値をaria-valueminaria-valuemaxの範囲のパーセンテージとして表示します。ただしaria-valuetextが指定されている場合はその値が用いられます。

特性:
特性
スーパークラスロール:
関連する概念:
継承される状態およびプロパティ:
名前の取得元: author
アクセシブル名が必要: True
子要素のプレゼンテーション: True
ロールの暗黙値: aria-valueminのデフォルトは0です。
aria-valuemaxのデフォルトは100です。

radio role

同じロールを持つ要素グループ内で、同時に一つだけ選択できるチェック可能な入力です。

著者は推奨として、radioロールの要素がどれが同じ値に影響するかを示すために明示的にグループ化するべきです。これはradio要素をradiogroupロールを持つ要素で囲むことで実現されます。もしradioボタンをradiogroupのDOM子要素にできない場合、著者は推奨としてaria-owns属性をradiogroup要素に使って子要素との関係を示してください。

特性:
特性
スーパークラスロール:
関連する概念:
必須状態およびプロパティ:
対応する状態およびプロパティ:
継承される状態およびプロパティ:
名前の取得元:
  • contents
  • author
アクセシブル名が必要: True
子要素のプレゼンテーション: True

radiogroup role

radioボタンのグループです。

radiogroupは、一度に一つだけ選択できるselectリストの一種です。著者は、グループ内で同時に一つだけradioボタンが選択されることを推奨として徹底してください。グループ内の一つの項目が選択されると、以前選択されていた項目は解除され(そのaria-checked属性がfalseとなります)。

特性:
特性
スーパークラスロール: select
関連する概念: list
必須所有要素: radio
対応する状態およびプロパティ:
継承される状態およびプロパティ:
名前の取得元: author
アクセシブル名が必要: True

range role

値の範囲を表す要素。

Note

range はオントロジーのための抽象ロールであり、著者はコンテンツでこのロールを使用すべきではない。

特性:
特性
抽象ロールか: True
スーパークラスのロール: structure
サブクラスロール:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来: author

region role

landmark の一種で、特定の著者指定の目的に関連し、ユーザがそのセクションへ容易にナビゲートしたりページの要約に一覧表示されることを望むほど十分に重要なコンテンツを含むもの。そうしたページ要約はユーザエージェントまたは支援技術によって動的に生成され得る。

著者は SHOULDlandmark ロール(maincomplementarynavigation など)他のいずれかによって正確には記述されない目的を持つコンテンツを含むセクションに対してのみ region ロールの使用を限定するべきである。

著者は、role region を持つ各要素に、その領域内コンテンツの目的を簡潔に記述するラベルを付与 MUST である。可視ラベルが存在する場合、著者は aria-labelledby で可視ラベルを参照 SHOULD である。著者は可能な限りそのラベルを見出し内に含める SHOULD。その見出しは標準ホスト言語の見出し要素、または heading ロールを持つ要素のインスタンス MAY である。

支援技術 は、role region を持つ要素へユーザが迅速にナビゲートできるようにする SHOULD。一般的な ユーザエージェント は、role region を持つ要素へユーザが迅速にナビゲートできるようにする MAY

特性:
特性
スーパークラスのロール: landmark
関連する概念:
継承される状態とプロパティ:
名前の由来: author
アクセシブルネーム必須: True

roletype role

他のすべてのロールが継承する基本 ロール

このロールのプロパティは、このロールを割り当てられた オブジェクト の構造的および機能的目的を記述する。ロールはインスタンスを理解し操作するために使用され得る概念である。

Note

roletype はオントロジーのための抽象ロールであり、著者はコンテンツでこのロールを使用すべきではない。

特性:
特性
抽象ロールか: True
サブクラスロール:
サポートされる状態とプロパティ:
名前の由来:
  • n/a

row ロール

表形式コンテナ内のセルの行。

行はcellまたはgridcell 要素を含み、tablegrid、またはtreegrid を整理する役割を持ちます。

rowロールはtablegrid、またはtreegridで使用できますが、aria-expandedaria-posinsetaria-setsize、およびaria-levelのセマンティクスは、インタラクティブなツリーグリッドの階層構造にのみ適用されます。 したがって、作者はrowtableまたはgridの子孫である場合、これら4つのプロパティを適用してはなりません。 また、ユーザーエージェントはrowtreegridの子孫でない限り、これらのプロパティを支援技術に公開すべきではありません

作者は要素role row を指定する場合、必ずtablegridrowgroup、または treegridを親または所有者とする必要があります。

: aria-disabledの利用について

現在aria-disabledrowでサポートされていますが、 将来のバージョンでは、gridまたは treegridの文脈以外で rowに対する使用が禁止される予定です。

特性:
特性
上位ロール:
ベース概念: <tr> ([HTML])
必要なコンテキストロール:
必要な所有要素:
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来:
  • 内容
  • 作者

rowgroup ロール

表形式コンテナ内で1つ以上のrow要素を含む構造。

rowgroupロールは、所有するrow要素との関係を確立します。これはHTMLのtheadtfoottbody要素の構造的同等物です。

作者は要素rowgroupロールを指定する場合、必ず gridtable、 またはtreegridを親または所有者とする必要があります。

rowgroupロールは、HTMLでのロール対称性をサポートするために存在し、明示的なpresentationロールが適用された HTML table要素でプレゼンテーション継承の伝播を可能にします。

このロールはrowグループの種類(例:theadtbody)を区別しませんが、 WAI-ARIA 2.0で課題として提起されています。

特性:
特性
上位ロール: structure
ベース概念: <tbody><tfoot><thead> ([HTML])
必要なコンテキストロール:
必要な所有要素: row
継承される状態・プロパティ:
名前の由来: 作者

rowheader ロール

行のヘッダー情報を含むセル。

rowheaderロールは、 tablegrid、 またはtreegridにおいて、 セルを行のヘッダーとして識別するために使用されます。 rowheaderは対応する行内のすべてのセルとの関係を確立します。 これはHTMLのth要素にscope="row"を設定した場合と構造的に同等です。

作者は要素rowheaderロールを指定する場合、必ず rowを親または所有者とする必要があります。

aria-selected状態をrowheaderに適用しても、 ユーザーエージェントがその行のすべてのセルに自動的にaria-selected状態を伝播することはありません。 作者はアプリケーション固有の要件に応じて選択状態の伝播を選択してもよいです。

rowheaderロールは、インタラクティブなグリッドにも非インタラクティブなテーブルにも使用できますが、 aria-expandedaria-readonlyaria-requiredの利用はインタラクティブ要素にのみ適用されます。 したがって、作者はrowheadertableの子孫である場合、 これらのプロパティを使用すべきではありません。 また、ユーザーエージェントはrowheadergrid またはtreegridの子孫でない限り、 これらのプロパティを支援技術に公開すべきではありません

: aria-disabledの利用について

現在aria-disabledrowheaderでサポートされていますが、 将来のバージョンでは、gridまたは treegridの文脈以外で rowheaderに対する使用が禁止される予定です。

特性:
特性
上位ロール:
ベース概念: <th[scope="row"]> ([HTML])
必要なコンテキストロール: row
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来:
  • 内容
  • 作者
アクセシブル名必須: True

scrollbar ロール

表示領域内のコンテンツのスクロールを制御するグラフィカルオブジェクト。コンテンツが表示領域に完全に表示されているかどうかに関わらず使用されます。

スクロールバーは、スクロールバーのサイズや、サム(つまみ)の位置で現在値や可能な値の範囲を表現します。その向きはスクロールバーの向きおよび対象となる表示領域のスクロール効果を示します。通常、矢印キーなどの方向キーで現在値を増減することができます。

作者はスクロールバー要素にaria-controls属性を設定し、制御対象のスクロール可能領域を参照しなければなりません

作者はaria-valueminおよびaria-valuemaxを設定して、サム位置の最小・最大値を示してもよいです。未設定の場合、値は[HTML]の <input[type="range"]>と同じ規則に従い、

  • aria-valueminが欠如または数値でない場合、デフォルトは0(ゼロ)です。
  • aria-valuemaxが欠如または数値でない場合、デフォルトは100です。

作者はスクロールバー要素にaria-valuenow属性で現在のサム位置を指定しなければなりません。 aria-valuenowが未設定または不正な値の場合、ブラウザは状態・プロパティの著者エラー処理セクションで示される修復技法を実装してもよいです。 これは[HTML]の <input[type="range"]>の修復技法と同等です。

scrollbarロール要素には暗黙的にaria-orientationverticalが設定されます。

支援技術は通常、aria-valuenowの値を aria-valueminaria-valuemax間の範囲のパーセンテージとして提示します。 aria-valuetextが指定されていない場合はこの計算が行われます。 aria-valueminaria-valuemaxaria-valuenowの値はこの計算に適した形で設定するのが望ましいです。

特性:
特性
上位ロール:
必須状態・プロパティ:
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来: 作者
アクセシブル名必須: False
子要素は表現のみ: True
ロールの暗黙値: aria-orientationのデフォルトはvertical
aria-valueminのデフォルトは0
aria-valuemaxのデフォルトは100

section ロール

文書やアプリケーション内でレンダリングされる構造的な包含単位。

sectionはオントロジー用の抽象ロールです。作者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
上位ロール: structure
下位ロール:
継承される状態・プロパティ:
名前の由来: n/a

sectionhead ロール

関連するセクションのトピックをラベル付けまたは要約する構造。

sectionheadはオントロジー用の抽象ロールです。作者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
上位ロール: structure
下位ロール:
継承される状態・プロパティ:
名前の由来:
  • 内容
  • 作者

select ロール

ユーザーが選択肢の集合から選択を行うフォームウィジェット。

selectはオントロジー用の抽象ロールです。作者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
上位ロール:
下位ロール:
サポートされる状態・プロパティ: aria-orientation
継承される状態・プロパティ:
名前の由来: 作者

separator ロール

コンテンツのセクションやメニューアイテムのグループを区切り、区別するための区切り線。

separatorには2種類あります:表示のみの静的なstructureと、フォーカス可能でインタラクティブなwidget(可動)。focus不可の場合、separatorは支援技術に静的な構造要素として提示されます。例えば、静的separatorはメニュー内の2つのアイテムグループやページの2つのセクション間で視覚的な区切りを提供するのに利用できます。

作者はseparatorをフォーカス可能にして、2つのコンテンツセクションの間に可視境界を持たせ、ユーザーがseparatorの位置を変えることでセクションの相対サイズを変更できるwidgetを作成してもよいです。可変separatorウィジェットは範囲内で連続的に移動可能ですが、固定separatorウィジェットは2つの離散位置のみをサポートします。通常、固定separatorウィジェットはセクションの拡張・折り畳みの切替に使われます。

separatorがフォーカス可能な場合、作者はaria-valuenowの値をseparatorの現在位置を反映する数値に設定し、変更時に更新しなければなりません。また、aria-valuemin0でない場合や aria-valuemax100でない場合は、その値も設定すべきです。未設定または数値でない場合の暗黙値は以下です:

  • aria-valueminの暗黙値は0です。
  • aria-valuemaxの暗黙値は100です。

アプリケーション内に複数のフォーカス可能separatorがある場合、作者はそれぞれにアクセシブル名を付与すべきです。

separatorロールの要素には暗黙的にaria-orientationhorizontalが設定されます。

特性:
特性
上位ロール:
関連概念:
必須状態・プロパティ: aria-valuenow(focus可能の場合)
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来: 作者
子要素は表現のみ: True
ロールの暗黙値: aria-orientationのデフォルトはhorizontal
aria-valueminのデフォルトは0
aria-valuemaxのデフォルトは100

slider ロール

ユーザーが指定された範囲内の値を選択する入力。

スライダーは、スライダーのサイズやサム(つまみ)の位置で現在値や可能な値の範囲を表します。通常、矢印キーなどの方向キーで値を増減できます。

作者はaria-valueminおよびaria-valuemax属性を設定してもよいです。未設定の場合、値は[現行標準]の<input[type="range"]>と同じ規則に従います:

  • aria-valueminが欠如または数値でない場合、デフォルトは0(ゼロ)です。
  • aria-valuemaxが欠如または数値でない場合、デフォルトは100です。

作者はaria-valuenow属性を必ず設定しなければなりません。aria-valuenowが未設定または予期しない値の場合、ブラウザは状態・プロパティの著者エラー処理セクションで示される修復技法を実装してもよいです。これは[現行標準]の<input[type="range"]>の修復技法と同等です。

sliderロール要素には暗黙的にaria-orientationhorizontalが設定されます。

特性:
特性
上位ロール:
必須状態・プロパティ:
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来: 作者
アクセシブル名必須: True
子要素は表現のみ: True
ロールの暗黙値: aria-orientationのデフォルトはhorizontal
aria-valueminのデフォルトは0
aria-valuemaxのデフォルトは100

spinbutton ロール

rangeの一種で、ユーザーが離散的な値から選択することを想定したフォーム。

spinbuttonは通常、増減ボタンを操作して許可された値のセットを順に切り替えることで表示値を変更できます。実装によっては、値がテキストフィールドで表示され、編集・入力も可能ですが、通常は無効な値の入力を防ぐための制限があります。

spinbuttonは外観上多くのselectの表現と似ていますが、選択肢がはっきりしている場合(特に範囲が広い場合)はspinbuttonの方が推奨されます。例えば、1から1,000,000までの範囲を表す場合、spinbuttonは同じ値を表すselectウィジェットよりも遥かに高いパフォーマンスを発揮します。

作者はspinbuttonに子要素または所有要素を作成してもよいですが、その要素はtextboxおよび2つのbuttonに限定しなければなりません。もしくは、テキスト入力にspinbuttonロールを適用し、増減用ボタンを兄弟要素として作成してもよいです。

キーボード操作に対応するため、すべてのインスタンスで子孫のフォーカス管理をManaging Focusで説明されているように行うべきです。spinbuttonがフォーカスを受けた際、textbox要素があればそこに、なければspinbutton自体にフォーカスを合わせるべきです。また、キーボードの矢印で増減操作ができ、増減用button要素は主なナビゲーションリング(例:HTMLのTabリング)に含めないようにすべきです。

spinbuttonに値がある場合、作者はaria-valuenow属性を設定すべきです。最小値がある場合はaria-valuemin属性を、最大値がある場合はaria-valuemax属性を設定すべきです。

特性:
特性
上位ロール:
サポートされる状態・プロパティ:
継承される状態・プロパティ:
名前の由来: 作者
アクセシブル名必須: True
ロールの暗黙値: aria-valueminのデフォルトは最小値なし。
aria-valuemaxのデフォルトは最大値なし。
aria-valuenowのデフォルトは0

status ロール

ライブリージョンの一種で、内容はユーザーへの助言的情報ですが、alertにするほど重要ではない(多くの場合ステータスバーなどで表示されるが必須ではない)ものです。

作者はstatusロールの要素がステータス変更によりフォーカスを受けないようすべきです。

statusはライブリージョンの一形態です。ページ内の他の部分がステータス内容を制御する場合、作者はaria-controls属性関係を明示すべきです。

支援技術は、点字ディスプレイの一部セルをステータス表示用に予約してもよいです。

statusロールの要素には暗黙的にaria-livepoliteと、 aria-atomictrueが設定されます。

特性:
特性
上位ロール: section
下位ロール:
継承される状態・プロパティ:
名前の由来: 作者
ロールの暗黙値: aria-liveのデフォルトはpolite
aria-atomicのデフォルトはtrue

strong ロール

重要、重大、または緊急である内容。関連ロール:emphasis

strongロールの目的は、強い重要性、重大性、または緊急性を伝達することです。単なる体裁変更(内容の意味に影響しないもの)には使用しません。作者は、strongロールがないことで内容の意味が変わる場合のみ使用すべきです。

strongロールはストレスや強調を伝えるものではありません。その目的にはemphasisロールがより適切です。

特性:
特性
上位ロール: section
関連概念:
継承される状態・プロパティ:
禁止される状態・プロパティ:
名前の由来: 禁止

structure ロール

文書構造の要素

文書構造のロールは、動的ウェブコンテンツのアクセシビリティをサポートし、支援技術がアクティブコンテンツと静的文書コンテンツを判別するのを助けます。構造ロール自体はすべてがアクセシビリティAPIにマップされるわけではありませんが、ウィジェットロールや支援技術向けコンテンツ適応のために利用されます。

structureはオントロジー用の抽象ロールです。作者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
上位ロール: roletype
下位ロール:
継承される状態・プロパティ:
名前の由来:
  • n/a

subscript ロール

下付き文字(一つ以上)。関連ロール:superscript

subscriptロールは、特定の意味を持つ組版規則をマークアップする目的のみで使用します。単なる体裁(見た目)目的には利用しません。一般的に、subscriptがないことで内容の意味が変わる場合のみ作者は使用すべきです。

特性:
特性
上位ロール: section
関連概念:
継承される状態・プロパティ:
禁止される状態・プロパティ:
名前の由来: 禁止

superscript ロール

1つ以上の上付き文字。関連する superscript を参照してください。

superscript ロールは、特定の意味を持つ書式慣例のみをマークアップするために使用することを意図しています。プレゼンテーションのためだけに書式を適用する目的では使用しません。一般的に、著者は 使用すべきである(SHOULD)、上付きがないとコンテンツの意味が変わる場合のみ、このロールを使用してください。

特性:
特性
スーパークラスロール: section
関連する概念:
継承される状態とプロパティ:
禁止されている状態とプロパティ:
名前の由来: 禁止

switch ロール

チェックボックスの一種で、チェック済み/未チェックではなくオン/オフの値を表します。関連する checkbox を参照してください。

aria-checked 属性は、switchがオン(true)かオフ(false)かを示します。mixed値は無効であり、ユーザーエージェントは 必ず(MUST) mixed値を falseと同等として扱わなければなりません。

switchは、checkboxやトグルbuttonとほぼ同じ機能を提供しますが、支援技術が画面上の外観に一貫した形でウィジェットを提示できるようにします。

特性:
特性
スーパークラスロール: checkbox
関連する概念:
必須状態とプロパティ:
継承される状態とプロパティ:
名前の由来:
  • 内容
  • 著者
アクセシブル名必須: True
子要素のプレゼンテーション: True

tab ロール

グループラベルであり、ユーザーに表示するタブコンテンツを選択するためのメカニズムを提供します。

tabpanel または tabpanel内の項目にフォーカスがある場合、関連するtabtablist内で現在アクティブなタブです。tablist要素は、関連するtab要素のセットを含み、通常tabpanel要素の近く、たいていはその前に配置されます。タブセットのデザインパターンの実装については、WAI-ARIA 作成者の実践を参照してください。

著者は 必須(MUST) 要素role tab を設定する場合は、tablist ロールを持つ要素内、またはその所有する要素に含まれるようにしてください。

著者は 使用すべきである(SHOULD)、現在アクティブなタブに関連する tabpanelがユーザーに 知覚可能であることを保証してください。

単一選択可能なtablistの場合、著者は 使用すべきである(SHOULD)、ユーザーがそのタブに関連付けられたtabpanelを選択するまで、他の tabpanel 要素をユーザーから隠してください。複数選択可能なtablistの場合、著者は 使用すべきである(SHOULD)、各表示中のtabpanelに対応するtabaria-expanded属性をtrueに設定し、その他の隠されたtabpanelに対応するtabsにはaria-expanded属性をfalseに設定してください。

いずれの場合も、著者は 使用すべきである(SHOULD)、選択されたタブにはaria-selected属性をtrueに、非アクティブなタブ要素にはaria-selected属性をfalseに設定し、現在選択されているタブは選択状態が視覚的に示されるようにしてください。現在のタブにaria-selected属性がない場合、ユーザーエージェント使用すべきである(SHOULD)、プラットフォームアクセシビリティAPIを通じて、現在フォーカスのあるタブが選択されていることを支援技術に通知します。

特性:
特性
スーパークラスロール:
必要なコンテキストロール: tablist
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来:
  • 内容
  • 著者
子要素のプレゼンテーション: True
ロールの暗黙値: aria-selected のデフォルトは false です。

table ロール

行と列に配置されたデータを含む section です。関連する grid を参照してください。

table ロールは、インタラクティブでない表形式コンテナを対象としています。もし表形式コンテナが選択状態を保持したり、独自の2次元ナビゲーションを提供したり、ユーザーが内容や表示を並べ替えたり操作できる場合、著者は 使用すべきである(SHOULD)grid または treegrid を代わりに使用してください。

著者は 使用すべきである(SHOULD)、可能ならば <table> 要素([HTML]の現行標準)など、ホスト言語のテーブルのセマンティクスを優先して使用してください。

特性:
特性
スーパークラスロール: section
サブクラスロール:
基本概念: <table>([HTML]の現行標準)
必須所有要素:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来: 著者
アクセシブル名必須: True

tablist ロール

tab 要素のリストであり、それぞれが tabpanel 要素への参照です。

キーボード操作に対応させるために、著者は 使用すべきである(SHOULD)、この ロールのすべてのインスタンスで子孫のフォーカスを管理してください(フォーカス管理参照)。

単一選択可能な tablist の場合、著者は 使用すべきである(SHOULD)、ユーザーがそのタブに関連付けられた tabpanel を選択するまで、他の tabpanel 要素をユーザーから隠してください。複数選択可能な tablist の場合、著者は 使用すべきである(SHOULD)、各表示されている tabpanelaria-expanded 属性true に、残りの非表示の tabpanelaria-expanded 属性を false に設定してください。

tablist 要素は、通常 tabpanel 要素の近く、たいていはその前に配置されます。タブセットのデザインパターンの実装については WAI-ARIA 作成者の実践 を参照してください。

tablist ロールを持つ要素は、暗黙的に aria-orientation の値が horizontal となります。

特性:
特性
スーパークラスロール:
必須所有要素: tab
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来: 著者
ロールの暗黙値: aria-orientation のデフォルトは horizontal です。

tabpanel ロール

tab に関連付けられたリソースのコンテナであり、各 tabtablist に含まれます。

著者は 使用すべきである(SHOULD)tabpanel 要素をその tabと関連付けてください。例えば、タブに aria-controls 属性を使って tabpanel を参照するか、tabpanel に aria-labelledby 属性を使ってタブを参照してください。

tablist 要素は、通常 tabpanel 要素の近く、たいていはその前に配置されます。タブセットのデザインパターンの実装については WAI-ARIA 作成者の実践 を参照してください。

特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の由来: 著者
アクセシブル名必須: True

term ロール

対応する定義を持つ語や句です。関連する definition を参照してください。

term ロールは、著者が定義を提供した、またはユーザーが定義を提供することが期待される語や句を明示的に識別するために使用します。

著者は 使用すべきではない(SHOULD NOT)、リンクなどのインタラクティブ要素に term ロールを使用しないでください。そうすると、支援技術の利用者がそれら要素と操作できなくなる可能性があります。

特性:
特性
スーパークラスロール: section
関連する概念:
継承される状態とプロパティ:
名前の由来: 著者

textbox ロール

値として自由形式のテキストを許容する入力タイプです。

aria-multiline 属性true の場合、ウィジェットは入力内で改行を受け付けます(HTMLのtextareaのように)。それ以外の場合は単純なテキストボックスです。主にテキスト入力要素がない言語や、他のセマンティクスを持つ要素をテキストフィールドとして再利用する場合に使用します。

ほとんどのユーザーエージェント実装では、HTMLにおける単一行と複数行のテキスト入力フィールドで、ENTER または RETURNキーのデフォルト動作が異なります。ユーザーが単一行の<input type="text">要素にフォーカスしている場合、このキー操作は通常フォームを送信します。複数行の<textarea>要素にフォーカスがある場合は、改行を挿入します。WAI-ARIAのtextboxロールはaria-multiline属性でこれらのボックスの型を区別するため、フィールド設計時にこの違いに注意してください。

特性:
特性
スーパークラスロール: input
サブクラスロール:
関連する概念:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来: 著者
アクセシブル名必須: True

time ロール

特定の時点を表す要素です。

現時点では、[WAI-ARIA]において、[<time>]のdatetime属性に対応するプロパティはありません。今後のARIA 1.3でこのプロパティの追加が検討されます。

著者は 使用すべきである(SHOULD)、テキスト内容を有効な日付または時刻関連文字列に限定するか、将来的にこのdatetime同等プロパティをtimeロールを持つ要素に適用してください。

timeロールの要素のテキスト内容として有効な日付や時刻文字列の例:

  • 有効な月文字列: 2019-11
  • 有効な日付文字列: 2019-11-18
  • 年なし日付文字列: 11-18
  • 有効な時刻文字列: 09:54:39
  • 浮動日付と時刻文字列: 2019-11-18T14:54
  • 有効なタイムゾーンオフセット文字列: -08:00
  • 有効なグローバルな日付と時刻文字列: 2019-11-18T14:54Z
  • 有効な週文字列: 2019-W47
  • 4桁以上のASCII数字(少なくとも1つはU+0030 0以外): 0001
  • 有効な継続時間文字列: 4h 18m 3s
特性:
特性
スーパークラスロール: section
関連する概念:
継承される状態とプロパティ:
名前の由来: 著者

timer ロール

開始点から経過した時間、または終了点までの残り時間を示す数値カウンタを含む ライブリージョン の一種です。

timer オブジェクトのテキスト内容は現在の時間計測値を示し、その値が変化するごとに更新されます。タイマー値は必ずしも機械可読ではありませんが、著者は 使用すべきである(SHOULD)、タイマーが一時停止中または終端に到達していない限り、一定間隔でテキスト内容を更新してください。

timer ロールを持つ要素は、暗黙的に aria-live の値が off となります。

特性:
特性
スーパークラスロール: status
継承される状態とプロパティ:
名前の由来: 著者

toolbar ロール

一般的によく使われる機能ボタンやコントロールをコンパクトな視覚形式でまとめたものです。

ツールバーは、menubar に含まれる機能のサブセットであることが多く、これらの機能の利用時のユーザーの負担を軽減するよう設計されています。アプリケーションに複数のツールバーが存在する場合、著者は 必須(MUST)、各ツールバーにラベルを付与してください。

著者は 許可(MAY)、この ロールのすべてのインスタンスで子孫のフォーカスを管理しても構いません(フォーカス管理参照)。

toolbar ロールの要素は、暗黙的に aria-orientation の値が horizontal となります。

特性:
特性
スーパークラスロール: group
関連する概念:
サポートされる状態とプロパティ: aria-orientation
継承される状態とプロパティ:
名前の由来: 著者
ロールの暗黙値: aria-orientation のデフォルトは horizontal です。

tooltip ロール

要素の説明を表示するコンテキストポップアップです。

tooltipは通常、短い遅延の後にマウスホバーや所有要素へのキーボードフォーカスによって表示されます。WAI-ARIAのツールチップは、ユーザーエージェントの通常のツールチップ動作を補完するものです。

一般的なツールチップの遅延は1秒から5秒です。

著者は 使用すべきである(SHOULD)role tooltip を持つ要素が、ツールチップが表示される前または表示時に aria-describedby で参照されていることを保証してください。

特性:
特性
スーパークラスロール: section
継承される状態とプロパティ:
名前の由来:
  • 内容
  • 著者
アクセシブル名必須: True

tree ロール

ユーザーが階層的に編成されたコレクションから1つ以上の項目を選択できるwidgetです。

キーボード操作に対応させるために、著者は 使用すべきである(SHOULD)、この ロールのすべてのインスタンスで子孫のフォーカスを管理してください(フォーカス管理参照)。

tree ロールを持つ要素は、暗黙的に aria-orientation の値が vertical となります。

特性:
特性
スーパークラスロール: select
サブクラスロール:
必須所有要素:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来: 著者
アクセシブル名必須: True
ロールの暗黙値: aria-orientation のデフォルトは vertical です。

treegrid ロール

grid の各行が tree と同様に展開・折りたたみできるものです。

role treegrid を持つ 要素aria-readonly が設定されている場合、ユーザーエージェント必須(MUST)、その値を treegrid が所有するすべての gridcell 要素に伝播し、アクセシビリティAPIに値を公開しなければなりません。著者は 許可(MAY)、個々の gridcell 要素で伝播された aria-readonly の値を上書きできます。

フォーカス可能な gridcellaria-readonly 属性が適用されている場合、その gridcell 内のコンテンツが編集可能かどうかを示します。aria-readonly 属性は treegrid 自体のナビゲーションや操作機能の可用性を示すものではありません。

編集機能を持つ treegrid で、フォーカス可能な gridcell 要素の内容が編集不可の場合、著者は 許可(MAY)、その gridcell 要素に aria-readonlytrue に設定できます。ただし treegridaria-readonly をサポートしない要素(例:link 要素のコレクション)を表示する場合、著者が aria-readonly の値を指定する必要はありません。

キーボード操作に対応させるために、著者は 使用すべきである(SHOULD)、この ロールのすべてのインスタンスで子孫のフォーカスを管理してください(フォーカス管理参照)。

特性:
特性
スーパークラスロール:
必須所有要素:
継承される状態とプロパティ:
名前の由来: 著者
アクセシブル名必須: True

treeitem ロール

tree の選択肢項目です。これは、ツリー内の 要素であり、サブレベルの treeitem グループを含む場合は展開または折りたたみができます。

展開・折りたたみ可能な treeitem 要素のコレクションは group ロールを持つ要素に囲まれます。

著者は 必須(MUST)role treeitem を持つ 要素group または tree ロールを持つ要素の中に含まれるか、それらに所有されていることを保証してください。

特性:
特性
スーパークラスロール:
必要なコンテキストロール:
サポートされる状態とプロパティ:
継承される状態とプロパティ:
名前の由来:
  • 内容
  • 著者
アクセシブル名必須: True

widget ロール

グラフィカルユーザーインターフェース(GUI)のインタラクティブなコンポーネントです。

ウィジェットはユーザーが操作できる個別のユーザーインターフェースオブジェクトです。ウィジェットのロールは、アクセシビリティAPIの標準機能にマッピングされます。ユーザーがwidgetの非抽象サブクラスロールが割り当てられた要素を操作する場合、通常標準のキーボードイベントを傍受する支援技術使用すべきである(SHOULD)、アプリケーション閲覧モードに切り替え、キーボードイベントをウェブアプリケーションに渡すべきです。これは、通常の閲覧モードからウェブアプリケーション操作により適したモードに切り替えるよう一部の支援技術に示唆する意図です。いくつかのユーザーエージェントにはブラウズナビゲーションモードがあり、上下矢印キーなどで文書を閲覧しますが、このネイティブ動作がウェブアプリケーションによるキー利用を妨げます。

widgetはオントロジーのための抽象ロールです。著者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
スーパークラスロール: roletype
サブクラスロール:
継承される状態とプロパティ:
名前の由来:
  • n/a

window ロール

ブラウザまたはアプリケーションウィンドウです。

このロールを持つ要素は、グラフィカルユーザーインターフェース(GUI)の文脈でウィンドウ的な振る舞いをします。これはOSのネイティブウィンドウとして実装されている場合も、単にウィンドウ風にスタイルされた文書のセクションである場合も含みます。

このロールの説明における「アプリケーション」という用語は、特定の支援技術動作を指定するapplicationロールを指すものではありません。

windowはオントロジーのための抽象ロールです。著者はコンテンツでこのロールを使用しないでください。

特性:
特性
抽象ロールか: True
スーパークラスロール: roletype
サブクラスロール:
サポートされる状態とプロパティ: aria-modal
継承される状態とプロパティ:
名前の由来: 著者

6. 対応する状態とプロパティ

6.1 状態とプロパティの区別

「状態」と「プロパティ」という用語は、類似した機能を指します。どちらも オブジェクト に関する特定の情報を提供し、どちらも ロールの性質の定義の一部です。本仕様書では、状態もプロパティも aria で始まるマークアップ 属性として扱います。しかし、その意味の微妙な違いを明確にするため、概念的には区別しています。主な違いの一つは、プロパティ(例:aria-labelledby)の値はアプリケーションのライフサイクル全体であまり変化しないのに対し、状態(例:aria-checked)の値はユーザー操作などで頻繁に変化することが多い点です。ただし、変更頻度の違いはルールではありません。aria-valuetext など、頻繁に変化することが想定されているプロパティもあります。状態とプロパティの区別はほとんどのウェブコンテンツ著者にとって重要ではないため、本仕様では可能な限り「状態」と「プロパティ」を単に「属性」と呼びます。詳細は 状態 および プロパティ の定義を参照してください。

6.2 状態とプロパティの特性

状態とプロパティには、次のセクションで説明する特性があります。

本仕様や他言語において、この 状態 または プロパティに対応する機能に関する参考情報です。完全に一致するとは限りませんが、その状態やプロパティの意図を理解するのに役立ちます。

6.2.2 使用されるロール

この 状態プロパティを使用する ロール に関する参考情報です。この情報は、状態やプロパティの適切な利用方法の理解に役立ちます。記載されていないロールで使った場合の定義はありません。

6.2.3 ロールへの継承

親のロールから 状態プロパティを継承する ロールに関する参考情報です。

6.2.4

状態プロパティの値の型です。値の型は次のいずれかとなります:

true/false
true または false のどちらかを表します。この型のデフォルト値は特に指定がない限り false です。
tristate
truefalsemixedundefined の値を表します。この型のデフォルト値は特に指定がない限り undefined です。
true/false/undefined
truefalse、または undefined(非該当)を表します。この型のデフォルト値は特に指定がない限り undefined です。例えば、aria-expandedfalse の場合、その要素は現在展開されていません。aria-expandedundefined の場合、その要素は展開可能ではありません。
ID参照
同じ文書内の他の 要素 の ID への参照です。
ID参照リスト
1つ以上のID参照のリストです。
整数
小数部分がない数値です。
数値
任意の実数値です。
文字列
制約のない値の型です。
トークン
許可された値の限定的なセットのいずれかです。デフォルト値は各属性の値テーブルにて、属性値セクションで指定されています。
トークンリスト
1つ以上のトークンのリストです。

これらは状態やプロパティの汎用型ですが、具体的な表現方法は定義していません。これらの値がホスト言語でどのように表現・処理されるかの詳細は 状態とプロパティ属性の処理 を参照してください。

6.3 ARIA属性

6.3.1 複数値属性値

ARIA属性定義に、その属性で許可されるの表が含まれている場合、その属性は複数値・null可能属性です。 表に記載されている各値は、属性のキーワードであり、同名の状態にマッピングされます。

6.3.2 ARIA属性のIDL反映

すべてのARIA属性はIDLではnull可能DOMString属性として反映されます。 これは真偽値型 true/false 型や、他のすべてのARIA属性も含みます。

ARIA値テーブルで指定されているデフォルト値は、IDLで値が欠落している場合のデフォルト無効値デフォルトとして反映されてはなりません(MUST NOT)。 取得時、ARIA属性が存在しない場合はnullを返します。ARIA属性は取得時に値検証されません。 無効なARIA値が設定されている場合、取得時には設定された値がリテラル文字列としてそのまま返され、無効値デフォルトは返されません。

6.3.3 OSアクセシビリティAPIによる複数値ARIA属性のマッピング

IDLの反映とは異なり、OSのアクセシビリティAPIによるARIA属性のマッピングにはデフォルト値が存在する場合があります。 ARIA値テーブルで指定されているデフォルト値は、5.2.3 対応する状態とプロパティおよびCore Accessibility API Mappings 1.1に記載されている通り、OSのアクセシビリティAPIに公開されます。

6.3.4 ARIAのnull可能DOMString属性

A. WAI-ARIA値型の各言語へのマッピングで述べられている通り、属性はホスト言語に含まれ、WAI-ARIA型の表記構文はホスト言語によって決定されます。

以下のアルゴリズムは、HTML内のARIA null可能DOMString属性に使用されます:

取得時、対応するコンテンツ属性が存在しない場合、IDL属性はnullを返します。 存在する場合は値を透過的に、大文字小文字を保持したまま取得します。 設定時、新しい値がnullならコンテンツ属性を削除し、それ以外の場合は指定した新しい値を透過的に大文字小文字を保持したままコンテンツ属性に設定します。

注:ARIA 1.2時点で、IDL経由で公開されるすべてのARIA属性はnull可能DOMStringsとして定義されています。これは現行標準の主要レンダリングエンジンの実装と一致します。本仕様変更によって実装変更は不要であり、単にウェブエンジンの現状を反映するものです。 ただし、今後のドラフトではARIAワーキンググループが複数のARIA属性を非null可能DOMString化し、実装を求める予定です。この変更提案はARIAをHTML列挙属性の利用に合わせるものです。

6.3.4.1 属性利用例

このセクションは参考情報です。

6.4 翻訳可能な状態とプロパティ

HTML仕様では、他の仕様が翻訳可能属性を定義できるとされています。支援技術利用者が理解できるようにするため、以下の状態プロパティの値は翻訳可能属性であり、ページをローカライズする際に翻訳されるべきです:

6.5 グローバルな状態とプロパティ

一部の状態プロパティは、ロールが適用されているかどうかに関わらず、すべてのホスト言語要素に適用できます。以下のグローバルな状態とプロパティは、特に禁止されていない限り、すべてのロールおよびすべての基本マークアップ要素でサポートされます。ロールがグローバル状態やプロパティの利用を禁止する場合は、その状態やプロパティがそのロール定義セクションの特性表に禁止として記載されます。

6.6 WAI-ARIA状態とプロパティの分類

状態とプロパティは以下のように分類されます:

  1. ウィジェット属性
  2. ライブリージョン属性
  3. ドラッグ&ドロップ属性
  4. 関連属性

6.6.1 ウィジェット属性

このセクションでは、GUIシステムやリッチインターネットアプリケーションでユーザー入力を受け付けたりユーザー操作を処理する、一般的なユーザーインターフェース要素に特有の属性をまとめています。これらの属性はウィジェットロールをサポートするために使用されます。

ウィジェット属性はユーザーエージェントによってプラットフォームのアクセシビリティAPI状態にマッピングされて支援技術に提供される場合も、DOMから直接アクセスされる場合もあります。ユーザーエージェントは 必須(MUST)、状態が変化した際に、DOM属性変更イベントまたはプラットフォームアクセシビリティAPIイベントのいずれかを通じて、支援技術が通知される方法を提供しなければなりません。

6.6.2 ライブリージョン属性

このセクションでは、リッチインターネットアプリケーション内のライブリージョンに特有の属性をまとめています。これらの属性は任意の要素に適用できます。目的は、要素がフォーカスを持たなくてもコンテンツの変更が発生する可能性があることを示し、支援技術にそのコンテンツ更新の処理方法を伝えることです。一部のロールは、そのロールに特有のaria-live属性のデフォルト値を指定します。ライブリージョンの例としては、株価を表示するティッカーセクションなどがあります。

6.6.3 ドラッグ&ドロップ属性

このセクションでは、ドラッグ可能要素やドロップターゲットなどのドラッグ&ドロップインターフェース要素の情報を示す属性をまとめています。ドロップターゲット情報は著者によって視覚的に表示され、支援技術には別のモダリティで提供されます。

6.6.4 関連属性

このセクションでは、文書構造だけでは容易に判別できない要素間の関係や関連付けを示す属性をまとめています。

6.7 状態とプロパティの定義(すべての aria-* 属性)

以下は、リッチインターネットアプリケーションの著者が使用する WAI-ARIA状態プロパティのアルファベット順リストです。各 WAI-ARIA の状態とプロパティの詳細な定義は、このコンパクトリストの後に記載されています。

aria-activedescendant
DOMフォーカスがcompositeウィジェット、comboboxtextboxgroup、または applicationにある時、現在アクティブな要素を識別します。
aria-atomic
aria-relevant属性による変更通知に基づき、支援技術が変更された領域全体を提示するか、一部のみを提示するかを示します。
aria-autocomplete
入力テキストが、comboboxsearchboxtextboxで、ユーザーが意図する値の予測候補を表示できるかどうか、また予測が行われた場合の提示方法を示します。
aria-busy
要素が修正中であることを示し、支援技術は変更が完了するまでユーザーへの公開を待つことが許可されます(MAY)
aria-checked
チェックボックス、ラジオボタン、その他のウィジェットの現在の「チェック」状態を示します。関連:aria-pressedaria-selected
aria-colcount
tablegridtreegridの総列数を定義します。関連:aria-colindex
aria-colindex
tablegridtreegrid内での、要素の列インデックスまたは位置を定義します。関連:aria-colcountaria-colspan
aria-colspan
tablegridtreegrid内で、セルまたはgridcellがまたがる列数を定義します。関連:aria-colindexaria-rowspan
aria-controls
現在の要素によって内容や存在が制御される要素(複数可)を識別します。関連:aria-owns
aria-current
コンテナや関連要素セット内の現在の項目を表す要素を示します。
aria-describedby
オブジェクトを説明する要素(複数可)を識別します。関連:aria-labelledby
aria-details
オブジェクトの詳細・拡張説明を提供する要素を識別します。関連:aria-describedby
aria-disabled
要素知覚可能だが無効であり、編集やその他の操作ができないことを示します。関連:aria-hiddenaria-readonly
aria-dropeffect
[ARIA 1.1で非推奨] ドラッグされたオブジェクトがドロップターゲット上で離された時に実行可能な機能を示します。
aria-errormessage
オブジェクトのエラーメッセージを提供する要素を識別します。関連:aria-invalidaria-describedby
aria-expanded
この要素が所有・制御するグループ要素が展開されているか折りたたまれているかを示します。
aria-flowto
コンテンツの代替読み順における次の要素(複数可)を識別します。ユーザーの判断で支援技術が文書ソース順の読みを上書きできます。
aria-grabbed
[ARIA 1.1で非推奨] ドラッグ&ドロップ操作時の要素の「grabbed」状態を示します。
aria-haspopup
メニューやダイアログなど、インタラクティブなポップアップ要素の有無や種類を示します。
aria-hidden
要素がアクセシビリティAPIに公開されるかどうかを示します。関連:aria-disabled
aria-invalid
入力値がアプリケーションで期待される形式に合致していないことを示します。関連:aria-errormessage
aria-keyshortcuts
著者が要素のアクティブ化やフォーカスのために実装したキーボードショートカットを示します。
aria-label
現在の要素をラベル付けする文字列値を定義します。関連:aria-labelledby
aria-labelledby
現在の要素をラベル付けする要素(複数可)を識別します。関連:aria-describedby
aria-level
構造内での要素の階層レベルを定義します。
aria-live
要素が更新されること、そしてユーザーエージェント支援技術、ユーザーがライブリージョンからどのような更新を期待できるかを説明します。
aria-modal
表示時に要素がモーダルかどうかを示します。
aria-multiline
テキストボックスが複数行入力を許可するか、単一行のみかを示します。
aria-multiselectable
ユーザーが現在選択可能な子孫から複数項目を選択できることを示します。
aria-orientation
要素の向きが水平か垂直か、または不明/曖昧かを示します。
aria-owns
DOM階層で関係を表現できない場合に、視覚的/機能的/文脈的な親子関係を定義する要素(複数可)を識別します。関連:aria-controls
aria-placeholder
コントロールに値がない時、データ入力の補助となる短いヒント(単語または短い句)を定義します。ヒントにはサンプル値や期待される形式の簡潔な説明が含まれる場合があります。
aria-posinset
現在のリスト項目やツリー項目セット内での要素の番号または位置を定義します。セット内の全要素がDOMに存在する場合は不要です。関連:aria-setsize
aria-pressed
トグルボタンの現在の「押下」状態を示します。関連:aria-checkedaria-selected
aria-readonly
要素が編集不可だがその他の操作は可能であることを示します。関連:aria-disabled
aria-relevant
ライブリージョン内でアクセシビリティツリーが修正された際、ユーザーエージェントがどの通知を行うかを示します。関連:aria-atomic
aria-required
フォーム送信前に、要素でユーザー入力が必須であることを示します。
aria-roledescription
ロールの著者による人間可読・ローカライズ済み説明を要素に定義します。
aria-rowcount
tablegridtreegridの総行数を定義します。関連:aria-rowindex
aria-rowindex
tablegridtreegrid内での、要素の行インデックスまたは位置を定義します。関連:aria-rowcountaria-rowspan
aria-rowspan
tablegridtreegrid内で、セルまたはgridcellがまたがる行数を定義します。関連:aria-rowindexaria-colspan
aria-selected
様々なウィジェットの現在の「選択」状態を示します。関連:aria-checkedaria-pressed
aria-setsize
現在のリスト項目やツリー項目セットの総数を定義します。セット内の全要素がDOMに存在する場合は不要です。関連:aria-posinset
aria-sort
テーブルやグリッド内の項目が昇順・降順でソートされているかどうかを示します。
aria-valuemax
範囲型ウィジェットで許可される最大値を定義します。
aria-valuemin
範囲型ウィジェットで許可される最小値を定義します。
aria-valuenow
範囲型ウィジェットの現在値を定義します。関連:aria-valuetext
aria-valuetext
範囲型ウィジェットaria-valuenowの人間可読なテキスト代替を定義します。

aria-activedescendant プロパティ

DOMフォーカスがcompositeウィジェット、comboboxtextboxgroup、またはapplicationにある場合、現在アクティブな要素を識別します。

aria-activedescendantプロパティは、メニューやグリッド、ツールバーなど、複数のフォーカス可能な子孫を持つインタラクティブ要素のフォーカス管理を代替的に行う方法を提供します。著者は許可(MAY)DOMのフォーカスをaria-activedescendantをサポートするコンテナ要素に設定し、aria-activedescendantでアクティブな要素を参照することができます。

著者は必須(MUST)DOMフォーカスがある要素に対しaria-activedescendantの値を設定する場合、以下のいずれかの条件を満たす必要があります:

  1. aria-activedescendantの値が所有する要素を参照していること。所有する要素とは、DOMフォーカスを持つ要素の子孫、またはaria-owns属性で論理的な子孫と示された要素です。
  2. DOMフォーカスがcomboboxtextboxsearchboxであり、aria-controlsaria-activedescendantをサポートする要素を参照し、aria-activedescendantの値が制御要素の所有要素を参照していること。例えば、combobox内では、フォーカスはcomboboxに残りつつ、aria-activedescendantの値がポップアップするlistboxの子孫を指す場合があります。

著者は使用すべきである(SHOULD)、現在アクティブな子孫がフォーカス時に表示・ビュー内(またはスクロールして表示)されていることを保証してください。

特性:
特性
関連する概念:
使用されるロール:
継承先ロール:
値: ID参照

aria-atomic プロパティ

aria-relevant属性で定義された変更通知に基づき、支援技術が変更された領域全体を提示するか、一部のみを提示するかを示します。

アクセシビリティAPIおよびDocument Object Model [DOM]は、支援技術が文書の変更領域を判断できるようイベントを提供します。

ライブリージョンの内容が変更された場合、ユーザーエージェントは使用すべきである(SHOULD)、変更された要素から祖先をたどり、最初にaria-atomicが設定された要素を探し、以下のケースに応じて適切な動作を適用します。

  1. 祖先にaria-atomicが明示的に設定されていない場合、デフォルトはfalseであり、支援技術は変更されたノードのみをユーザーに提示します。
  2. aria-atomicが明示的にfalseに設定されている場合、支援技術は祖先探索を停止し、変更されたノードのみを提示します。
  3. aria-atomicが明示的にtrueに設定されている場合、支援技術は要素全体の内容(著者定義のライブリージョンラベルを含む場合はそれも)を提示します。

aria-atomictrueの場合、支援技術は許可(MAY)、複数の変更をまとめて領域全体を一度に提示することができます。

特性:
特性
使用されるロール: 基本マークアップのすべての要素
値: true/false
値:
説明
false (デフォルト) 支援技術は変更されたノードのみを提示します。
true 支援技術は変更された領域全体(著者定義のラベルがあればそれも)をまとめて提示します。

aria-autocomplete プロパティ

入力テキストが、comboboxsearchboxtextboxで、ユーザーが意図する値の予測候補を表示できるかどうか、および予測が行われた場合の提示方法を示します。

aria-autocompleteプロパティは、textboxsearchboxcomboboxが動的にユーザーのテキスト入力補助を行う際のインタラクションモデルの種別を表します。インラインモデル(aria-autocomplete="inline")は、テキスト入力内に補完予測値を表示し、リストモデル(aria-autocomplete="list")はテキスト入力の隣に候補値集合をポップアップで表示します。両方を同時に提供することも可能です(aria-autocomplete="both")。

aria-autocompleteプロパティは、入力要素の予測動作のみを記述するためのものです。著者は使用すべきである(SHOULD)、ユーザー入力と無関係な候補のみを提供する場合は値を指定しないか、aria-autocompletenoneにしてください。例として、検索フィールドで最近使った検索語をリストするだけでユーザー入力による絞り込みをしない場合はaria-autocompletenoneとなります。aria-autocompleteをサポートするロールのデフォルト値はnoneです。

入力中にインライン予測が行われる場合、フィールド内のカーソルの後に予測補完テキストが動的に表示され、フォーカスが外れるとその値が入力値として確定します。aria-autocompleteinlineまたはbothの場合、著者は使用すべきである(SHOULD)、自動提案部分のテキストが選択状態で表示されるようにしてください。これにより、支援技術がユーザー入力と自動提案を区別でき、提案が不要な場合もユーザーが簡単に削除や上書きできるようになります。

aria-autocompletelistまたはbothの場合、著者は必須(MUST)、以下の2条件を両方満たす必要があります:

  1. aria-controlsに候補値集合を含む要素を参照する値が指定されていること。
  2. aria-haspopupの値が、候補値集合を含む要素のロールと一致していること。

リストモデル実装の一部は、下矢印で候補にフォーカスを移すか、候補をクリックして選択するなどの操作をユーザーに要求します。こうした場合、著者は許可(MAY)、候補コンテナがaria-activedescendantをサポートしていればそれを使うか、DOMフォーカスを候補に移動しても構いません。他の実装では、候補表示時に自動的に1つの候補が選択され、フォーカスが外れる(Tabキーや他フィールドクリック等)とその値が確定します。aria-autocompletelistまたはbothで、入力中に自動選択が行われる場合、著者は必須(MUST)、以下のすべての条件を満たす必要があります:

  1. 候補集合がaria-activedescendantをサポートするロールの要素で表示されていること。
  2. 入力フィールドに設定されたaria-activedescendantの値が選択された候補要素を動的に参照すること(aria-activedescendantの定義参照)。
  3. 候補表示中もDOMフォーカスはテキスト入力に留まること。

aria-autocompleteプロパティは補完候補の有無を示すものではなく、著者は使用すべきではない(SHOULD NOT)、候補の有無を伝えるために値を動的に変更しないでください。aria-autocompletelistまたはbothの場合、著者は使用すべきである(SHOULD)、候補集合を表示しているかはaria-expanded状態で伝えてください。

特性:
特性
使用されるロール:
継承先ロール:
値: トークン
値:
説明
inline 入力中、入力値を補完するテキストがキャレット(カーソル)の直後に動的に挿入される可能性があります。
list 入力中、入力値を補完できる値の集合を含む要素が表示される可能性があります。
both 入力中、入力値を補完できる値の集合を含む要素が表示されます。表示された場合、集合内の1つの値が自動選択され、その値を補完するテキストが入力フィールドのキャレット直後に表示されます。
none (デフォルト) 入力中、入力値の補完予測を表示しません。

aria-busy 状態

要素が更新中であり、支援技術は許可(MAY)、変更が完了するまでユーザーへの公開を待つことができます。

aria-busyのデフォルト値はすべての要素でfalseです。要素にaria-busytrueの場合、支援技術は許可(MAY)、その要素が所有する内容への変更を無視し、ビジー期間中のすべての変更をaria-busyfalseに戻った時に一括で処理することができます。

すでに部分的または完全にレンダリングされたコンテナ要素内で複数の追加・修正・削除が必要な場合、著者は許可(MAY)、最初の変更前にコンテナ要素にaria-busytrueで設定し、最後の変更が完了したらfalseに戻すことができます。例えば、ライブリージョンに複数の変更を一つの発話単位として読み上げたい場合、著者は変更中にaria-busytrueにして、変更が完了し発話可能になった時にfalseに戻せます。

ロールfeedを持つ要素がビジーに設定された場合、支援技術は許可(MAY)feed内の変更の描画を遅延できます。ただし、ユーザーがビジー期間中に読んでいるarticle内のユーザー操作による変更は例外です。

レンダリング済みwidgetへの変更が、スクリプト実行中にwidget必須所有要素を欠如した状態を作る場合、著者は必須(MUST)、更新処理中はwidgetaria-busytrueで設定する必要があります。例えば、ツリーグリッドの複数の非連続枝に同時更新が必要な場合、全ツリー要素を一度に置換する代わりに、枝の更新中はツリーをビジーに設定できます。

特性:
特性
使用されるロール: 基本マークアップのすべての要素
値: true/false
値:
説明
false (デフォルト): 要素への更新は期待されていません。
true 要素が更新中です。

aria-checked 状態

チェックボックス、ラジオボタン、その他のウィジェットの現在の「チェック」状態を示します。関連:aria-pressedaria-selected

aria-checked 属性は、要素がチェックされている(true)、未チェック(false)、または他の要素群がチェックと未チェックが混在している(mixed)ことを示します。多くの入力はtruefalseのみですが、mixedcheckboxmenuitemcheckboxなど一部の三状態入力でサポートされます。

mixed値は、radiomenuitemradioswitchやそれらを継承する要素ではサポートされません。ユーザーエージェント必須(MUST)、これらのロールではmixed値をfalseと同等に扱います。

三状態入力のmixed値の例はWAI-ARIA作成者の実践で解説されています。

特性:
特性
使用されるロール:
継承先ロール:
値: 三状態
値:
説明
false 要素はチェック可能ですが、現在はチェックされていません。
mixed 三状態チェックボックスやmenuitemcheckboxの混合モード値を示します。
true 要素がチェックされています。
undefined (デフォルト) 要素はチェック機能を持ちません。

aria-colcount プロパティ

tablegridtreegridの総列数を定義します。関連:aria-colindex

すべての列がDOMに存在する場合、ユーザーエージェントが総列数を自動計算できるため、この属性を設定する必要はありません。ただし、一部の列のみがDOM上に存在している場合は、全テーブルの列数を明示するためこの属性が必要です。

著者は必須(MUST)aria-colcountの値を完全なテーブルの列数と同じ整数に設定しなければなりません。総列数が不明な場合、著者は必須(MUST)、値を-1にしてユーザーエージェントが計算しないよう示します。

以下の例は、16列のグリッドのうち、2, 3, 4, 9列のみが表示されている場合です。

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="9">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1234</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1235</span>
    </div></div>
</div>
特性:
特性
使用されるロール:
継承先ロール:
値: 整数

aria-colindex プロパティ

tablegridtreegrid内で、要素の列インデックスまたは位置を定義します。関連:aria-colcountaria-colspan

すべての列がDOMに存在する場合、ユーザーエージェントが各セルやgridcellの列インデックスを自動計算できるため、この属性を設定する必要はありません。ただし、一部の列のみがDOMに存在している場合は、完全なテーブルに対する各セルやgridcellの列を明示するためこの属性が必要です。

著者は必須(MUST)aria-colindexを1以上、同じ行内の前の要素のaria-colindex値より大きく、完全なテーブルの列数以下の整数に設定してください。複数列にまたがるセルやgridcellの場合、必須(MUST)aria-colindexの値はスパン開始位置にしてください。

DOM上に存在する列セットが連続していて、かつそのセット内で複数行・複数列にまたがるセルがない場合、著者は許可(MAY)、各行にaria-colindexを設定し、セットの最初の列のインデックスを値にしてください。それ以外の場合は使用すべきである(SHOULD)、各行のすべての子要素または所有要素にaria-colindexを設定してください。

次の例は、16列のグリッドで2~5列が表示されているパターンです。列セットが連続しているため、各行にaria-colindexを設定できます。

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row" aria-colindex="2">
      <span role="columnheader">First Name</span>
      <span role="columnheader">Last Name</span>
      <span role="columnheader">Company</span>
      <span role="columnheader">Address</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-colindex="2">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">123 Broad St.</span>
    </div>
    <div role="row" aria-colindex="2">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">123 Broad St.</span>
    </div></div>
</div>

次の例は、16列のグリッドで2~5列が表示されているパターンですが、一部のセルが複数行にまたがっています。そのため各行の所有要素すべてにaria-colindexが必要です。

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="5">Address</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4" aria-rowspan="2">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="5" aria-rowspan="2">123 Broad St.</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
    </div></div>
</div>

次の例は、16列のグリッドで2,3,4,9列が表示されているパターンです。列セットが非連続なので、各行の所有要素すべてにaria-colindexが必要です。

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="9">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1234</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1235</span>
    </div></div>
</div>
特性:
特性
使用されるロール:
継承先ロール:
値: 整数

aria-colspan プロパティ

tablegridtreegrid内で、セルやgridcellがまたがる列数を定義します。関連:aria-colindexaria-rowspan

この属性は、ネイティブテーブルに含まれていないセルやgridcell向けです。ネイティブテーブル内でセルやgridcellの列スパンを定義する場合、著者は使用すべきである(SHOULD)aria-colspanの代わりにホスト言語の属性を使ってください。ホスト言語で同等属性がある要素にaria-colspanを使った場合、ユーザーエージェント必須(MUST)aria-colspanの値を無視し、ホスト言語の値を支援技術に公開してください。

著者は必須(MUST)aria-colspanを1以上、同じ行内の次のセルやgridcellと重ならない整数に設定してください。

特性:
特性
使用されるロール:
継承先ロール:
値: 整数

aria-controls プロパティ

現在の要素によって内容や存在が制御される要素(複数可)を識別します。関連:aria-owns

例:

  • 目次ツリービューは隣接する文書ペインの内容を制御する場合があります。
  • チェックボックス群は、テーブルやグラフでライブ追跡される商品価格を制御する場合があります。
  • タブは関連付けられたタブパネルの表示を制御します。
特性:
特性
使用されるロール: 基本マークアップのすべての要素
値: ID参照リスト

aria-current 状態

コンテナや関連要素セット内の現在の項目を表す要素を示します。

aria-current 属性はトークン型です。許可値リストに含まれない値は、使用すべきである(SHOULD)支援技術trueが指定されたものとして扱います。属性が存在しない、値が空文字列またはundefinedの場合、デフォルト値falseが適用され、aria-current 状態はユーザーエージェントや支援技術で公開してはなりません(MUST NOT)

aria-current属性は、関連する要素セット内で現在の項目として視覚的にスタイルされた要素に使用します。例:

  • pageトークン:ページネーションリンク群内で現在表示中ページとして視覚的にスタイルされたリンク
  • stepトークン:ステップインジケータ内で現在ステップとしてスタイルされたリンク
  • locationトークン:フローチャート内で現在位置として強調表示されている画像
  • dateトークン:カレンダー内で現在日付として表示されている日付
  • timeトークン:時刻表内で現在時刻として表示されている時刻

著者は使用すべきである(SHOULD)、要素セット内でaria-currentで現在にする要素は1つだけにしてください。

著者は使用すべきではない(SHOULD NOT)aria-current属性をaria-selectedの代用として使わないでください。例えばtablistでは、現在表示中のtabpanelを示すのにaria-selectedtabに使います。

一部ウィジェットでaria-selectedがサポートされる場合、「current」と「selected」が異なる意味を持ち、同じ要素群内で両方使われることがあります。例えば、ナビゲーションtree内でaria-current="page"は現在表示中ページを示し、aria-selected="true"はユーザーがtreeitemをアクティブ化した際に表示されるページを示します。同じツリーで、コンテキストメニューから「削除」「移動」などの操作で複数選択されたページ(treeitem)に操作することもできます。

特性:
特性
使用されるロール: 基本マークアップのすべての要素
値: トークン
値:
説明
page ページ群の中の現在ページを示す。
step プロセス中の現在ステップを示す。
location 環境や文脈内の現在位置を示す。
date 日付集合の中の現在日付を示す。
time 時刻集合の中の現在時刻を示す。
true 集合の中の現在項目を示す。
false (デフォルト) 集合の中の現在項目ではありません。

aria-describedby プロパティ

オブジェクトを説明する要素(複数可)を識別します。関連:aria-labelledby

aria-labelledby属性はaria-describedbyと似ていて、どちらも他要素を参照してテキスト代替を算出しますが、ラベルは簡潔で、説明はより詳細な情報のためです。

aria-describedbyで参照された要素群が説明全体になります。複数要素のID参照を含めるか、複数要素(例:段落)をID参照した要素で囲んでください。

特性:
特性
関連する概念:
使用されるロール: 基本マークアップのすべての要素
値: ID参照リスト

aria-details プロパティ

要素が、オブジェクトの詳細かつ拡張された説明を提供することを識別します。関連する aria-describedbyも参照してください。

aria-details属性は、通常aria-describedbyで提供されるよりも詳細な情報を提供する単一の要素を参照します。これにより、支援技術が拡張説明の有無をユーザーに知らせたり、そこへ移動できるようになります。著者は推奨として、aria-detailsで参照される要素がすべてのユーザーに見えることを保証するべきです。

aria-describedbyで参照される要素とは異なり、aria-detailsで参照される要素は、Accessible 名前計算やAccessible 説明計算(Accessible Name and Description仕様で定義)には使用されません。そのため、aria-detailsで参照された要素の内容は、支援技術ユーザーに提示される際に文字列化されません。これは、情報を文字列化すると情報の損失や拡張説明が理解しづらくなる場合に、aria-detailsが特に有用となる理由です。

一部のユーザーエージェントでは、説明情報の複数参照関係がアクセシビリティAPIでサポートされていません。その場合、aria-describedbyaria-detailsが両方指定されている場合は、aria-detailsが優先されます。

aria-detailsの一般的な用途は、デジタル出版分野において、書籍内で構造化マークアップや他技術の埋め込みが必要な拡張説明を伝達する場合です。以下の例はこのシナリオを示しています。

<!-- 拡張説明の提供 -->
<img src="pythagorean.jpg" alt="ピタゴラスの定理" aria-details="det">
<details id="det">
  <summary></summary>
  <p>
    ピタゴラスの定理は、ユークリッド幾何学における直角三角形の3辺の関係であり、斜辺の二乗は他の2辺の二乗の和になります。
  </p>
  <p>
    次の図は、スケートボード用のランプを作る際にピタゴラスの定理を適用した例を示しています。
  </p>
  <object data="skatebd-ramp.svg"  type="image/svg+xml"></object>
  <p>
    この例では、スケートボードのベースと垂直板の幅がランプの幅になります。ランプの長さを求めるには、ベースの長さを二乗し、ランプの高さの二乗を加算し、その和の平方根を計算します。
  </p>
</details>

また、aria-detailsは拡張説明を持つウェブページへのリンクを参照することもできます。以下の例をご覧ください。

<!-- 拡張説明の提供 -->
<img src="pythagorean.jpg" alt="ピタゴラスの定理" aria-details="det">
<p>
  <a href="http://foo.com/pt.html" id="det">ピタゴラスの定理の応用</a> を参照してください。
</p>
特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: ID参照

aria-disabled 状態

要素知覚可能であるが、無効化されているため編集やその他の操作可能ではないことを示します。関連する aria-hidden および aria-readonlyも参照してください。

例えば、ラジオグループ内で不要なオプションが無効化される場合があります。無効化された要素はタブ順序からフォーカスを受け取らない場合があります。一部の無効化された要素については、アプリケーションが子孫要素へのナビゲーションをサポートしないこともあります。aria-disabled属性を設定するだけでなく、著者は項目が無効化されたことが分かるような外観(グレーアウトなど)に変更することを推奨します。

無効状態は、現在の要素および aria-disabled 属性が適用された要素のすべてのフォーカス可能な子孫要素に適用されます。

aria-disabledと適切なスクリプトによってlinkロールの要素を正しく無効化できますが、ホスト言語の同等要素を完全に無効化することは問題になる場合があります。著者は、ホスト言語のみで無効化できない要素にaria-disabledを使用しないことを推奨します。

: columnheader, rowheader, row での利用について

aria-disabledは現在columnheaderrowheaderrowでサポートされていますが、将来のバージョンでは、gridまたはtreegridのコンテキスト以外では、これら3つのロールの要素での使用が禁止される予定です。

この状態は ARIA 1.2 でグローバル状態として廃止される予定です。今後のバージョンでは、明確にサポートされているロールでのみ使用可能となります。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) 要素は有効です。
true 要素およびすべてのフォーカス可能な子孫要素が無効化され、値はユーザーによって変更できません。

aria-dropeffect プロパティ

[ARIA 1.1で廃止] ドラッグされたオブジェクトがドロップターゲット上で解放された際に実行できる機能を示します。

aria-dropeffectプロパティは今後の現行標準バージョンで新しい機能に置き換えられる予定です。そのため、著者はaria-dropeffect廃止予定として扱うことを推奨します。

このプロパティは、支援技術がユーザーに利用可能なドラッグオプション(アプリケーションが選択肢のポップアップメニューを提供するかどうかを含む)を伝えることを可能にします。通常、ドロップ効果の機能は、ドラッグ操作のためにオブジェクトが取得された後のみ提供可能であり、利用可能なドロップ効果はドラッグされているオブジェクトによって異なります。

一つの要素で複数のドロップ効果がサポートされる場合があります。そのため、この属性の値は、利用可能な効果を示すスペース区切りのトークンセットか、サポートされる操作がない場合はnoneとなります。aria-dropeffect属性の設定に加え、著者はドロップ可能なターゲットの視覚的な表示も推奨します。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: トークンリスト
値:
説明
copy ソースオブジェクトの複製がターゲットにドロップされます。
execute ドロップターゲットがサポートする関数が実行され、ドラッグ元を入力として利用します。
link ドラッグされたオブジェクトへの参照またはショートカットがターゲットオブジェクト内に作成されます。
move ソースオブジェクトが現在の場所から削除され、ターゲットにドロップされます。
none (デフォルト) 操作は実行されません。オブジェクト上でドロップが試みられた場合、ドラッグ操作は実質的にキャンセルされます。他のトークン値と組み合わせた場合は無視されます(例: 'none copy'は'copy'と同義)。
popup ユーザーがドラッグ操作(copy, move, link, execute)やキャンセルなどのドラッグ機能を選択できるポップアップメニューまたはダイアログが表示されます。

aria-errormessage プロパティ

要素が、オブジェクトのエラーメッセージを提供することを識別します。関連する aria-invalid および aria-describedby も参照してください。

aria-errormessage属性は、エラーメッセージテキストを含む他の要素を参照します。著者は aria-invalidaria-errormessage と併用することが必須です。

オブジェクトの値が無効な場合、aria-invalidtrue に設定し、aria-errormessage で参照された要素のメッセージが関連性を持ちます。

オブジェクトが有効な状態の場合、aria-invalidfalse に設定されているか、aria-invalid 属性がありません。著者は任意で、オブジェクトが現在有効な場合でも aria-errormessage を使用できますが、aria-errormessage で参照される要素が 非表示の場合に限ります。なぜなら、そのメッセージは関連性がないためです。

aria-errormessageが関連性を持つ場合、著者は必須として、その内容が非表示でないことを保証し、ユーザーがエラーメッセージに移動して確認できるようにします。同様に、aria-errormessageが関連性を持たない場合、著者は必須として、内容を非表示にするか、aria-errormessage属性またはその値を削除します。

ユーザーエージェントは必ずaria-invalid値がfalseのオブジェクトに対してaria-errormessageを公開してはなりません。

著者は任意で、新たにレンダリングされたエラーメッセージにライブリージョンを使って注意を引くことができます。例えば aria-live プロパティや ライブリージョンロールalert などです。エラーメッセージがユーザーによる無効値の入力後に表示される場合、ライブリージョンは適切です。

一般的なメッセージは何が間違っているか、ユーザーに必要な情報を伝えます。例えば、エラーメッセージは「無効な時刻です: 時刻は午前9時から午後5時の間で入力してください」といった内容になります。以下の例は、初期の有効状態と、その後の無効状態のマークアップを示します。テキスト入力オブジェクトaria-invalid の変更、およびエラーメッセージテキストを含む要素への aria-live の変更に注目してください:

<!-- 初期の有効状態 -->
<label for="startTime"> 会議の開始時刻を入力してください: </label>
<input id="startTime" type="text" aria-errormessage="msgID" value="" aria-invalid="false">
<span id="msgID" aria-live="assertive"><span style="visibility:hidden">無効な時刻です: 時刻は午前9時から午後5時の間で入力してください</span></span>

<!-- ユーザーが無効値を入力した状態 -->
<label for="startTime"> 会議の開始時刻を入力してください: </label>
<input id="startTime" type="text" aria-errormessage="msgID" aria-invalid="true" value="11:30 PM" >
<span id="msgID" aria-live="assertive"><span style="visibility:visible">無効な時刻です: 時刻は午前9時から午後5時の間で入力してください</span></span>

この例では aria-live="assertive" を使い、支援技術がエラーメッセージを他のキュー済み通知よりも先に即座に通知することを示しています。これにより、ユーザーが入力からフォーカスを外す前にエラーメッセージに気付く可能性が高まります。

この状態は ARIA 1.2 でグローバル状態として廃止される予定です。今後のバージョンでは、明確にサポートされているロールでのみ使用可能となります。

特性:
特性
使用可能なロール:
継承されるロール:
値: ID参照

aria-expanded 状態

この要素が所有または制御するグループ化要素が展開されているか折り畳まれているかを示します。

aria-expanded属性は、他の要素のコンテンツの表示・非表示を切り替えるフォーカス可能なインタラクティブ要素に適用されます。例えば、親treeitemに適用し、その子ツリーの枝が表示されているかどうかを示します。同様に、ページコンテンツの一部の表示・非表示を制御するbuttonにも適用できます。

展開・折り畳み可能なグループ化コンテナが、aria-expanded属性を持つ要素に所有されていない場合、著者は推奨として、aria-expanded属性を持つ要素からaria-controlsプロパティでコンテナを参照し、制御関係を特定します。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false/undefined
値:
説明
false この要素が所有または制御するグループ化要素は折り畳まれています。
true この要素が所有または制御するグループ化要素は展開されています。
undefined (デフォルト) この要素は展開可能なグループ化要素を所有または制御していません。

aria-flowto プロパティ

ユーザーの裁量で、支援技術が文書のデフォルトのソース順読みを上書きできる、コンテンツの代替読順における次の要素(または複数要素)を識別します。

aria-flowto に単一のID参照がある場合、支援技術は、ユーザーの要求により通常の文書読順を省略して、ターゲットとなるオブジェクトに移動できます。ただし、aria-flowtoに複数のID参照が指定されている場合、支援技術は推奨として、参照された要素をパス選択肢として提示します。

ID参照が1つ以上ある場合、ユーザーエージェントまたは支援技術は推奨として、ユーザーが任意のターゲット要素に移動できるオプションを提供します。パス名はaria-flowto 属性のターゲット要素の名前で決定できます。アクセシビリティ APIは、名前付きパス関係を提供できます。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: ID参照リスト

aria-grabbed 状態

[ARIA 1.1で廃止] ドラッグ&ドロップ操作における要素の「grabbed」状態を示します。

aria-grabbed状態は今後の現行標準バージョンで新しい機能に置き換えられる予定です。そのため、著者はaria-grabbed廃止予定として扱うことを推奨します。

aria-grabbedtrueに設定すると、その要素がドラッグ用に選択されたことを示します。aria-grabbedfalseに設定すると、要素はドラッグ&ドロップ操作のために取得可能であるが、現在は取得されていないことを示します。aria-grabbedが未指定またはundefined(デフォルト)に設定されている場合は、要素は取得できません。

aria-grabbedtrueに設定されている場合、著者は推奨として、すべての潜在的なドロップターゲットのaria-dropeffect属性を更新すべきです。要素が取得されていない場合(値がfalseまたはundefined、もしくは属性が削除された場合)、著者は推奨として、関連するドロップターゲットのaria-dropeffect属性をnoneに戻すべきです。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: true/false/undefined
値:
説明
false 要素がドラッグ可能であることを示します。
true 要素がドラッグ用に「grabbed」されたことを示します。
undefined (デフォルト) 要素がドラッグ可能でないことを示します。

aria-haspopup プロパティ

メニューやダイアログなど、インタラクティブなポップアップ要素の可用性と種類を示します。これらは要素によってトリガーされます。

ポップアップ要素は通常、他のコンテンツの上に表示されるブロック状のコンテンツです。著者は必須として、ポップアップコンテンツのコンテナ要素のロールがmenulistboxtreegrid、またはdialogであり、aria-haspopupの値がポップアップコンテナのロールと一致することを保証しなければなりません。

ポップアップ要素をキーボードアクセス可能にするため、著者は推奨として、ポップアップをトリガーできる要素がフォーカス可能であること、ポップアップを開くキーボード操作があること、ポップアップ要素がすべての子孫のフォーカス管理をフォーカス管理で説明されている通りに行うことを保証すべきです。

aria-haspopupプロパティはトークン型です。ユーザーエージェント必須として、許可された値リストに含まれない値(空文字列を含む)に対し、falseが指定されたかのように扱います。ARIA 1.0との後方互換性のため、ユーザーエージェントはaria-haspopup値がtrueの場合、menu値と同等と扱う必須です。

支援技術非推奨として、値がfalseの場合はaria-haspopupプロパティを公開すべきではありません。

tooltipはこの文脈ではポップアップと見なされません。

aria-haspopupは、ポップアップをトリガーする要素に視覚的なインジケータがある場合に特に有用です。 例えば、下向きの三角形やシェブロン、三点リーダー(…)でスタイリングされたコントロールは、ポップアップが表示される標準的な視覚インジケータです。 何らかの機能的な違いを視覚スタイルで示す場合は、その機能的な違いも支援技術ユーザーに伝えることが通常重要です。 視覚的なインジケータがない場合は、aria-haspopupの使用が必要かどうか慎重に検討し、不要な場合は避けることが推奨されます。

このプロパティはARIA 1.2でグローバルプロパティとして廃止予定です。今後のバージョンでは、明確にサポートされたロールでのみ使用可能となります。

特性:
特性
関連する概念:
使用可能なロール:
継承されるロール:
値: トークン
値:
説明
false (デフォルト) 要素にポップアップがないことを示します。
true ポップアップがmenuであることを示します。
menu ポップアップがmenuであることを示します。
listbox ポップアップがlistboxであることを示します。
tree ポップアップがtreeであることを示します。
grid ポップアップがgridであることを示します。
dialog ポップアップがdialogであることを示します。

aria-hidden 状態

要素がアクセシビリティAPIに公開されているかどうかを示します。関連する aria-disabledも参照してください。

ユーザーエージェントは、要素がレンダリングされているかどうかに基づいて非表示状態を判断します。レンダリングは通常、CSSによって制御されます。例えば、要素のdisplayプロパティがnoneに設定されているとレンダリングされません。要素自身または祖先がレンダリングされていないか、aria-hidden属性値がtrueの場合、その要素は非表示とみなされます。

著者は任意で、冗長または不要な内容を支援技術ユーザーから除去することで体験を向上させる意図がある場合に限り、見た目上レンダリングされているコンテンツを支援技術から隠すためにaria-hiddenを慎重に使用できます。見た目のコンテンツをスクリーンリーダーから隠す場合、著者は必須として、同等または同じ意味・機能が支援技術に公開されていることを保証しなければなりません。

見た目上レンダリングされたコンテンツを支援技術から隠す際は、幅広い障害特性を考慮し極めて慎重に行うべきです。例えば、視覚的に認識できるが手先が不自由な方が音声操作の支援技術で視覚インターフェースにアクセスする場合、「Go to checkout」というリンクテキストを隠して「Check out now」という類似だが異なるテキストだけをAPIに公開すると、ユーザーは自身が認識したインターフェースに音声でアクセスできなくなります。スクリーンリーダーユーザーにも同様の問題が生じます。例えば、電話サポート担当者が「Go to checkout」リンクをクリックするよう案内しても、ユーザーがタイプアヘッド検索("Go to…")で該当リンクを見つけられない場合があります。

現時点では、 aria-hidden="false" はブラウザで一貫して機能しないことが知られています。今後の実装の改善に伴い、この方法を頼りにする際は十分に注意・検証してください。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: true/false/undefined
値:
説明
false 要素はレンダリングされている場合と同様にアクセシビリティAPIに公開されます。
true 要素はアクセシビリティAPIから隠されます。
undefined (デフォルト) 要素の非表示状態は、レンダリングされているかどうかに基づきユーザーエージェントによって決定されます。

aria-invalid 状態

入力された値がアプリケーションで想定された形式に合致していないことを示します。関連する aria-errormessage も参照してください。

値が無効または範囲外と判定された場合、アプリケーションの著者はこの属性trueに設定する推奨です。ユーザーエージェント推奨として、ユーザーにエラーを通知すべきです。アプリケーション著者は、訂正案がわかっていれば推奨として、修正方法も案内してください。

ユーザーが aria-requiredtrue のフィールドを含むデータ送信を試みる場合、著者は任意aria-invalid 属性を使ってエラーを通知できます。ただし、ユーザーがまだフォーム送信を試みていない場合、著者は非推奨として、必須ウィジェットにユーザーがデータを未入力なだけで aria-invalid 属性を設定すべきではありません。

将来の拡張のため、aria-invalid 属性はトークン型です。許可されたリストに含まれない値は、ユーザーエージェントによりtrueとして扱われる必須です。属性が存在しない場合や、値がfalseまたは空の場合は、デフォルト値falseが適用されます。

この状態は ARIA 1.2 でグローバル状態として廃止予定です。今後のバージョンでは、明確にサポートされているロールでのみ使用可能となります。

特性:
特性
使用可能なロール:
継承されるロール:
値: トークン
値:
説明
grammar 文法エラーが検出されました。
false (デフォルト) 値にエラーは検出されていません。
spelling スペルミスが検出されました。
true ユーザーが入力した値がバリデーションに失敗しました。

aria-keyshortcuts プロパティ

要素をアクティブ化したりフォーカスを与えたりするために著者が実装したキーボードショートカットを示します。

aria-keyshortcuts属性の値は、コマンドやテキストボックスウィジェットをアクティブ化するために押すことができるキーボードショートカットのスペース区切りリストです。ショートカットで定義されるキーは、生成される文字ではなく、物理的に押されるキーを表します。各キーボードショートカットは、プラス記号("+")で区切られた1つ以上のトークンからなり、同時に押す必要がある修飾キー(0個以上)と、必ず1つだけの非修飾キーから構成されます。

著者は 必須として、修飾キーをUI Events KeyboardEvent key Values仕様 [uievents-key] に正確に従って指定してください。例:"Alt", "Control", "Shift", "Meta", "AltGraph"。MetaはAppleコンピュータのCommandキー、AltはOptionキーに相当します。

非修飾キーとして有効な名前は、"A", "B", "1", "2", "$", "Plus"(プラス記号), "Space"(スペースバー)などの印字可能文字、または UI Events KeyboardEvent key Values仕様 [uievents-key]で定義された他の非修飾キーです。例:"Enter", "Tab", "ArrowRight", "PageDown", "Escape", "F1"など。"Space"(スペースバー)は仕様上例外で、spaceキーを' 'で指定すると空白文字扱いになるためです。

著者は 必須として、修飾キーがある場合は必ず先頭に記述し、必須の非修飾キーは最後に記述してください。修飾キーの順序自体は重要ではないため、"Alt+Shift+T"と"Shift+Alt+T"は同じですが、"T+Shift+Alt"は無効です(修飾キーが先頭でないため)。また、"Alt"だけでは非修飾キーがないため無効です。

アルファベットキーを指定する場合は大文字・小文字の違いは区別されません:"a" と "A" は同じです。

キーボードショートカットを実装する際は、想定するキーボードの種類や言語に応じて、予期せぬ動作を避けるよう注意してください。キーボードによって修飾キーの組み合わせや機能は大きく異なります。例えば、多くの修飾キーは記号入力や数字入力、言語切り替えなど他の機能と組み合わされます。

多くのキーボードでの衝突を避けるには、ASCII文字以外のキーを避けると良いです。数字や記号は修飾キーが必要な場合が多く、ショートカットで指定したキーが実際に生成されるキーと一致しないことがあります。例えばフランス語キーボードでは数字を入力するのにControlキーが必要なため、"Control+2"と指定すると曖昧になります。

修飾キーで生成される文字の場合、著者は 必須として、生成される文字ではなく実際に押すキーを指定してください。これにより、支援技術が正確に必要なキー操作を伝えられます。例えば、米国キーボードでパーセント記号 "%" は Shift+5 で入力できます。正しいショートカットは "Shift+5" です。"%", "Shift+%" は誤りです。ただし、国際キーボードで修飾なしで入力できる場合は "%" も正しい場合があります。

ホスト言語で指定が違法または文字列終端になる場合、著者は 必須として、ホスト言語のエスケープシーケンスを使って指定してください。例えば、ダブルクォートはHTMLでは "Shift+'" で指定できます。

有効なキーボードショートカットの例:

  • "A"
  • "Shift+Space"
  • "Control+Alt+."
  • "Control+Shift+'"
  • "Alt+Shift+P Control+F"
  • "Meta+C Meta+Shift+C"

ユーザーエージェントは必須として、aria-keyshortcuts属性に応じてキーボード動作を変更してはなりません。著者は 必須として、スクリプトでキーボードイベントを処理しaria-keyshortcutsを実装してください。この属性は、支援技術がユーザーにショートカットの存在を伝えるためのものです。

著者は 推奨として、すべてのユーザーがショートカットを発見できるようツールチップなどで明示することが望ましいです。また、無効化された要素に設定されたaria-keyshortcutsは利用不可とする必須です。

著者は 推奨として、OSやユーザーエージェント、支援技術の機能を妨げるショートカットの実装は避けるべきです。どのキーを割り当てるか、どのコンテキスト・条件で利用可能かを慎重に検討してください。詳細は WAI-ARIA作成ガイドのキーボードショートカットの章をご参照ください。

特性:
特性
関連する概念:
使用可能なロール: ベースマークアップのすべての要素
値: 文字列

aria-label プロパティ

現在の要素をラベル付けする文字列値を定義します。関連する aria-labelledby も参照してください。

aria-label の目的は aria-labelledby と同じで、ユーザーにオブジェクトの認識可能な名前を提供します。ラベルの アクセシビリティAPIへの最も一般的なマッピングは アクセス可能な名前プロパティです。

ラベルテキストが DOM内(通常は可視テキスト)に存在する場合、著者は推奨として aria-labelledby を使用し、非推奨として aria-label を使用すべきではありません。要素名が DOMからプログラム的に取得できない場合や、DOMコンテンツ参照が望ましくない場合(例:title属性はツールチップを表示する可能性がある)、著者は任意aria-label でアクセス可能な名前を設定できます。アクセシブルな名前と説明の計算で定められている通り、ユーザーエージェントは aria-labelledbyaria-label より優先してアクセス可能な名前プロパティを計算します。

特性:
特性
関連する概念:
使用可能なロール: 下記ロールを除くベースマークアップのすべての要素: caption, code, deletion, emphasis, generic, insertion, paragraph, presentation, strong, subscript, superscript
値: 文字列

aria-labelledby プロパティ

現在の要素にラベルを付ける要素(または複数要素)を識別します。関連する aria-describedby も参照してください。

aria-labelledby の目的は aria-label と同じで、ユーザーにオブジェクトの認識可能な名前を提供します。ラベルの アクセシビリティAPIへの最も一般的なマッピングは アクセス可能な名前プロパティです。

画面上に可視ラベルを表示できないインターフェースの場合、著者は推奨として aria-label を使用し、非推奨として aria-labelledby を使用すべきではありません。アクセス可能な名前と説明の計算で定められている通り、ユーザーエージェントは aria-labelledbyaria-label より優先してアクセス可能な名前プロパティを計算します。

aria-labelledby 属性は aria-describedby と同様に他の要素を参照してテキスト代替を計算しますが、ラベルは簡潔であるべきであり、説明はより詳しい情報を提供することを意図しています。

このプロパティの米国英語での期待されるスペルは "labeledby" ですが、このプロパティがマッピングされる アクセシビリティAPI の仕様では "labelledby" というスペルが定着しています。慣例に合わせて開発者の負担を減らすため、このスペルが採用されています。

特性:
特性
関連する概念:
使用可能なロール: 下記ロールを除くベースマークアップのすべての要素: caption, code, deletion, emphasis, generic, insertion, paragraph, presentation, strong, subscript, superscript
値: ID参照リスト

aria-level プロパティ

要素の構造内での階層レベルを定義します。

これはツリー内のツリーアイテムや、ドキュメント内の見出し、入れ子のグリッド、入れ子のタブリスト、またはコンテナ内や所有階層に参加する他の構造アイテムに適用できます。aria-level の値は 1 以上の整数です。

階層レベルは深さが増すごとに増加します。DOMの祖先関係が正確にレベルを表現していない場合、著者は推奨として aria-level 属性を明示的に定義してください。

この属性はセットの方向内で葉ノードとして機能する要素、つまり treeitem ロールの要素に適用され、group ロールの要素には適用されません。つまり、セット内の複数要素がこの属性に同じ値を持つ場合があります。コンテナに単一値を指定するよりも葉ノードに限定することで、支援技術がこの属性を一意に利用できるようになります。

DOMの祖先関係がレベルを正確に表現している場合、ユーザーエージェントはドキュメント構造からアイテムのレベルを計算できます。この属性は、ドキュメント構造や aria-owns 属性から計算できない場合に、明示的にレベルを示すために使用できます。ユーザーエージェントによる自動計算の対応状況は異なる場合があるため、著者は推奨として、ユーザーエージェントや支援技術でテストし、この属性が必要かどうか検討してください。ユーザーエージェントによる計算を意図する場合は、この属性を省略してください。

treegridの場合、aria-levelrow ロールの要素でサポートされており、gridcell ロールの要素ではサポートされません。一見、treeitem要素への適用と矛盾するように見えますが、rowが垂直方向での葉ノードであり、gridcellは各 row の水平方向での葉ノードだからです。レベルは行内セルの集合にはサポートされていないため、aria-level属性は row ロールの要素に適用されます。

特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-live プロパティ

要素が更新されること、およびユーザーエージェント支援技術、ユーザーがそのライブリージョンの更新タイプを期待できることを示します。

この属性は重要度の度合いで表されます。politeに指定された場合、支援技術はユーザーに更新を通知しますが、通常は現在の作業を中断せず、優先度は低くなります。assertiveに指定された場合、支援技術は直ちにユーザーに通知し、以前の更新の音声キューをクリアする可能性があります。

丁寧度(politeness level)は更新の順序付けの仕組みであり、ユーザーエージェントや支援技術への強い推奨です。値はユーザーエージェント、支援技術、またはユーザーによって上書きされる場合があります。例えば、支援技術がキー押下やマウスクリックによる変更を検出した場合、aria-live属性値に関わらず即座に通知する場合があります。

ユーザーによってニーズが異なるため、ユーザー自身が支援技術の丁寧度設定を調整できます。支援技術は、キューや割り込みの制御のために粒度を増減できるように実装することもあります。

プロパティが更新通知を必要とするオブジェクトに設定されていない場合、丁寧度は最も近い祖先のaria-live属性値になります。

aria-live属性はライブリージョンへの変更の提示順序を決定する主要な手段です。実装は、祖先チェーンに属性がない場合にロールのデフォルト丁寧度(例: logはデフォルトでpolite)も考慮します。assertive指定の項目は即座に提示され、続いてpolite項目が提示されます。ユーザーエージェントや支援技術は任意で、assertive変更発生時にキューされた変更をクリアしてもよいです(例: assertiveリージョンの変更で現在キューされている変更がすべて削除される)。

ライブリージョンがpoliteに指定されている場合、支援技術は推奨として、現在の文の読み上げ終了時や入力を中断した際など、適切なタイミングで更新を通知すべきです。assertiveの場合、支援技術は推奨として、即時にユーザーへ通知します。割り込みがユーザーの混乱や作業妨害につながる場合があるため、著者は非推奨として、割り込みが不可欠な場合以外はassertive値の使用を避けてください。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: トークン
値:
説明
assertive リージョンへの更新が最優先され、ユーザーに即座に提示されます。
off (デフォルト) リージョンへの更新は、ユーザーがそのリージョンに現在フォーカスしている場合のみ提示されます。
polite リージョンへの更新は、現在の文の読み上げ終了時や入力中断時など、適切なタイミングで提示されます。

aria-modal プロパティ

表示されたときに要素がモーダルかどうかを示します。

aria-modal属性は、"モーダル"要素の存在がページ上の他のコンテンツの利用を妨げることを示すために使用されます。例えば、モーダルダイアログが表示されている場合、ユーザーの操作はダイアログの内容に限定され、ダイアログがフォーカスを失うか表示が解除されるまで他の操作はできないことが期待されます。

モーダル要素が表示されている場合、支援技術は推奨としてその要素へナビゲートすべきです(ただし、明示的にフォーカスが他に設定されていれば除く)。支援技術は任意で、モーダル要素の内容へのナビゲーションを制限してもかまいません。フォーカスがモーダル要素外へ移動した場合、支援技術は非推奨として、モーダル要素へのナビゲーション制限をしてはなりません。

モーダル要素が表示されている場合、著者は必須としてインターフェースがモーダル要素の子孫のみで操作可能であることを保証しなければなりません。つまり、モーダルダイアログに閉じるボタンがある場合、ボタンはダイアログの子孫であるべきです。モーダル要素表示時、著者は推奨として、他のすべてのコンテンツをinert(HTMLの"inert subtree"など)にするべきです。ホスト言語でその機能があれば利用してください。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) 要素はモーダルではありません。
true 要素はモーダルです。

aria-multiline プロパティ

テキストボックスが複数行の入力を受け付けるか、単一行のみ受け付けるかを示します。

多くのユーザーエージェント実装では、ENTERRETURNキーのデフォルト動作はHTMLの単一行・複数行テキストフィールドで異なります。単一行の<input type="text">要素でフォーカス中はキー操作でフォーム送信となり、複数行の<textarea>要素でフォーカス中は改行が挿入されます。WAI-ARIAのtextboxロールでは、aria-multiline 属性でこれらの違いを区別するため、フィールド設計時にこの違いを意識することを推奨します。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) これは単一行テキストボックスです。
true これは複数行テキストボックスです。

aria-multiselectable プロパティ

ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示します。

著者は推奨として、選択された子孫にはaria-selected属性trueに、選択可能な子孫にはaria-selected属性をfalseに設定すべきです。選択不可な子孫にaria-selected属性を使うべきではありません(非推奨)。

リストやツリーは複数項目選択が可能なロールの一例です。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) 1つのみ選択可能です。
true ウィジェット内で複数項目の同時選択が可能です。

aria-orientation プロパティ

要素の向きが水平か垂直か、または不明/曖昧かを示します。

ARIA 1.1では、aria-orientationのデフォルト値がhorizontalからundefinedに変更されました。暗黙のデフォルトは一部ロールで定義されています(例:sliderは水平、scrollbarは垂直がデフォルト)が、期待されるデフォルトの向きが曖昧なロール(例:radiogroup)では未定義のままです。

特性:
特性
使用可能なロール:
継承されるロール:
値: トークン
値:
説明
horizontal 要素は水平向きです。
undefined (デフォルト) 要素の向きは不明/曖昧です。
vertical 要素は垂直向きです。

aria-owns プロパティ

要素(または複数要素)を識別し、DOM階層では表現できない視覚的・機能的・文脈的な親子関係を定義します。関連する aria-controlsも参照してください。

aria-owns属性の値は、スペース区切りのID参照リストであり、ドキュメント内の1つ以上の要素IDを参照します。aria-ownsを追加する理由は、DOMからは推論できない親子文脈関係を支援技術に公開するためです。

要素がaria-ownsDOM子要素の両方を持つ場合、親子関係の順序は、まずDOM子要素、続いてaria-ownsで参照された要素です。著者がDOM子要素を先頭以外の順にしたい場合は、希望の順でDOM子要素をaria-ownsに列挙してください。著者は非推奨として、DOM階層の代用にaria-ownsを使用すべきではありません。関係がDOMで表現されている場合はaria-ownsを使わないでください。著者は必須として、ある要素のIDが他の複数要素のaria-owns属性で同時に指定されないようにしてください。すなわち、1つの要素は明示的な所有者を1つだけ持つべきです。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: ID参照リスト

aria-placeholder プロパティ

コントロールに値がないとき、ユーザーのデータ入力を補助する短いヒント(単語または短いフレーズ)を定義します。ヒントにはサンプル値や期待されるフォーマットの簡潔な説明を含めることができます。

著者は非推奨として、aria-placeholderをラベルの代わりに使うべきではありません。ラベルはどんな情報が期待されるかを示し、プレースホルダーは期待値のヒントです。関連する aria-labelledby および aria-label も参照してください。

著者は推奨として、コントロールのが空文字列のときは常にヒントテキストを表示してください。これは、コントロールが最初にフォーカスを受けたときや、ユーザーが既存の値を消去した場合も含みます。

関連する placeholder 属性([HTML])と同様に、表示ラベルの代わりにプレースホルダーテキストを使うと、幅広いユーザー(高齢者や認知・運動・巧緻・視覚障害者など)にとってアクセシビリティや操作性が低下する場合があります。ラベルによるヒントは常に表示されますが、プレースホルダー属性の短いヒントはユーザーが値を入力する前だけ表示されます。さらに、プレースホルダーは事前入力値と誤認されることがあり、一般的な実装ではデフォルト色のコントラストが不足し、ラベルがないとフォーカス設定可能な領域が狭くなります。

以下の例では HTMLlabel 要素を使っていません。これは contenteditable 属性付きの HTML 要素にラベル付けできないためです。

次の例はユーザーが値を入力したsearchboxを示します:

<span id="label">誕生日:</span>
<div contenteditable role="searchbox" aria-labelledby="label" aria-placeholder="MM-DD-YYYY">03-14-1879</div>

次の例はユーザーがまだ値を入力していないか、以前入力した値を消去したsearchboxを示します:

<span id="label">誕生日:</span>
<div contenteditable role="searchbox" aria-labelledby="label" aria-placeholder="MM-DD-YYYY">MM-DD-YYYY</div>
特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: 文字列

aria-posinset プロパティ

現在のリスト項目やツリー項目のセット内での要素の番号や位置を定義します。セット内のすべての要素がDOMに存在する場合は不要です。関連する aria-setsize も参照してください。

セット内のすべての項目がドキュメント構造上に存在する場合は、この属性を設定する必要はありません。ユーザーエージェントが各項目のセットサイズや位置を自動計算できるためです。しかし、ある時点でセットの一部のみがドキュメント構造上に存在する場合、このプロパティで要素の位置を明示的に示す必要があります。

以下の例は、16個のセットのうち5~8番目の項目を示します。

<h2 id="label_fruit">利用可能な果物</h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="16" aria-posinset="5">りんご</li>
  <li role="option" aria-setsize="16" aria-posinset="6">バナナ</li>
  <li role="option" aria-setsize="16" aria-posinset="7">カンタロープ</li>
  <li role="option" aria-setsize="16" aria-posinset="8">デーツ</li>
</ul>

著者はaria-posinsetの値を1以上でセットサイズ以下の整数に設定必須です。著者は推奨として aria-setsize を併用してください。

aria-posinsetmenuitemmenuitemcheckboxmenuitemradioに指定する場合、著者は推奨として、aria-posinsetの値を menu内の項目数(セパレーター除く)で設定してください。

特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-pressed 状態

トグルボタンの現在の「押下」状態を示します。関連する aria-checked および aria-selected も参照してください。

トグルボタンは値変更に完全な押下・離しサイクルが必要です。1回の操作で値がtrueになり、もう一度操作するとfalseに戻ります。mixedは、ボタンで制御される複数項目の値が一致しない状態です。属性がなければ、そのボタンはトグルボタンではありません。

aria-pressed属性は aria-checked属性と似ていますが同一ではありません。OSでは button に pressed、checkbox に checked がサポートされています。

特性:
特性
使用可能なロール:
値: 三状態
値:
説明
false 要素は押下可能だが、現在は押下されていません。
mixed 三状態トグルボタンの混合状態を示します。
true 要素が押下されています。
undefined (デフォルト) 要素は押下可能ではありません。

aria-readonly プロパティ

要素が編集不可だが、その他の操作は操作可能であることを示します。関連する aria-disabled も参照してください。

これは、ユーザーがウィジェットの値を設定できず、読み取りのみ可能であることを意味します。readonly要素はユーザーにとって重要であり、アプリケーション著者は非推奨として要素やそのフォーカス可能な子孫へのナビゲーションを制限すべきではありません。値のコピーなど他の操作も可能です。これは、アプリケーションがユーザーの子孫へのナビゲーションを許可しない場合があるdisabled要素と対照的です。

例:

  • 定数を表すフォーム要素。
  • スプレッドシートグリッドの行ヘッダーや列ヘッダー。
  • ショッピングカート合計など計算結果。
特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) ユーザーは要素の値を設定できます。
true ユーザーは要素の値を変更できません。

aria-relevant プロパティ

ライブリージョン内のアクセシビリティツリーが変更された際、ユーザーエージェントがどの通知を発行するかを示します。関連する aria-atomic も参照してください。

属性は、次のからなるスペース区切りリストで表されます: additions, removals, text、またはすべてを含むall

これは、純粋な見た目の変更ではなく、意味的に重要な変更を記述するために使います。たとえば、ログの先頭からノードが削除される場合は他のエントリーのためのスペース確保であり意味はありませんが、バディリストの場合は名前が消えることでオンラインでなくなったという意味あるイベントです。この場合は aria-relevantall にします。属性が指定されていない場合、デフォルト値 additions text はテキスト変更とノード追加が関係あり、ノード削除は関係ないことを示します。

aria-relevant の値として removals や all は慎重に使うべきです。支援技術は、削除が重要な変化(例:バディがチャットルームを退出)を示す場合のみ通知すれば十分です。

テキストの削除は 'removals' または 'all' が指定されている場合のみ関係ありと見なすべきです。例えば、ライブリージョンのデフォルト値で 'foo' から 'bar' に変更された場合、追加された 'bar' は読み上げられますが、削除された 'foo' は読み上げられません。

aria-relevant はライブリージョンのオプション属性です。これは支援技術への提案であり、すべての関係する型の変更を必ず提示する義務はありません。

属性が未定義の場合、値は最も近い祖先から継承されます。ただし値はトークンリストですが、継承時は加算されず、子要素で指定された値が祖先の値を完全に上書きします。

テキスト変更が関係ありとされた場合、ユーザーエージェントはライブリージョンのアクセシブル名や説明計算に影響するすべての子孫ノード変更を監視必須です。例:含まれる画像の alt 属性が変わればテキスト変更として扱いますが、ライブリージョン外のノードがテキスト変更されても(たとえ参照されていても)変化はトリガーされません。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: トークンリスト
値:
説明
additions ライブリージョン内のアクセシビリティツリーに要素ノードが追加されます。
additions text (デフォルト) 値 "additions text" の組み合わせと同等です。
all 値 "additions removals text" の組み合わせと同等です。
removals ライブリージョン内のテキスト、テキスト代替、または要素ノードがアクセシビリティツリーから削除されます。
text ライブリージョン内のアクセシビリティツリーの任意の子孫にテキストやテキスト代替が追加されます。

aria-required プロパティ

フォーム送信前にユーザー入力が要素で必須であることを示します。

例えば、ユーザーが住所フィールドを埋める必要がある場合、著者はそのフィールドのaria-required属性をtrueに設定します。

要素が必須であることは、ウィジェットの後に記号などで視覚的に提示される場合が多いです。aria-required属性を使うことで、著者は要素が必須であることを支援技術に明示的に伝えることができます。

完全に同等なネイティブ属性がない場合、ホスト言語は推奨として、ユーザーに入力や選択を求めるフォーム要素にaria-required属性を使えるようにすべきです。

特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: true/false
値:
説明
false (デフォルト) フォーム送信にユーザー入力は不要です。
true フォーム送信前に要素へユーザー入力が必要です。

aria-roledescription プロパティ

ロールについて、著者が人間に読みやすい形でローカライズした説明を要素に定義します。

一部の支援技術(スクリーンリーダー等)は、要素のロールをユーザー体験の一部として提示します。こうした支援技術は通常ロール名をローカライズし、カスタマイズもします。支援技術のユーザーは、「region」「button」「slider」などのロール名の提示によって要素の目的やウィジェットの場合は操作方法を理解します。

aria-roledescriptionプロパティにより、著者は支援技術によるロール名のローカライズや提示方法を上書きできます。したがって、aria-roledescriptionの不適切な使用は、ユーザーが要素の理解や操作を妨げる可能性があります。著者は推奨として、aria-roledescriptionの利用は非インタラクティブなコンテナロール(groupregion)の目的を明確化したり、widgetのより具体的な説明を与える場合などに限定してください。

aria-roledescriptionを使用する場合、著者は推奨として、以下を確認してください:

  1. aria-roledescriptionが適用される要素に、有効なWAI-ARIAロールまたは暗黙的なWAI-ARIAロールセマンティクスがあること。
  2. aria-roledescriptionの値が空でない、または空白文字だけでないこと。

ユーザーエージェントは、以下のいずれかの場合必須としてaria-roledescriptionプロパティを公開してはなりません:

  1. aria-roledescriptionが適用される要素に、有効なWAI-ARIAロールや暗黙的なWAI-ARIAロールセマンティクスがない場合。
  2. aria-roledescriptionが適用される要素に、明示的または暗黙的なWAI-ARIAロールがあり、そのロールでaria-roledescription禁止されている場合。
  3. aria-roledescriptionの値が空または空白文字のみの場合。

支援技術推奨として、要素のロールを提示する際にaria-roledescriptionの値を利用すべきですが、値が指定された場合でも他の機能を変更しては非推奨です。例えば、次のregionbuttonへのナビゲーション機能は、aria-roledescriptionが設定された場合でも、そうした領域やボタンへのナビゲーションを許可すべきです。

以下の2例は、aria-roledescriptionを使って非インタラクティブなコンテナをウェブプレゼンテーションアプリの「スライド」として示す方法です。

<div role="region" aria-roledescription="slide" id="slide42" aria-labelledby="slide42heading">
<h1 id="slide42heading">四半期レポート</h1>
<!-- 残りのスライド内容 -->
</div>
<section aria-roledescription="slide" id="slide42" aria-labelledby="slide42heading">
<h1 id="slide42heading">四半期レポート</h1>
<!-- 残りのスライド内容 -->
</section>

この2つの例では、スクリーンリーダーユーザーは「四半期レポート, スライド」のように聞こえ、漠然とした「四半期レポート, 領域」や「四半期レポート, グループ」より明確です。

特性:
特性
使用可能なロール: ベースマークアップのすべての要素
値: 文字列

aria-rowcount プロパティ

tablegridtreegridにおける行の総数を定義します。関連する aria-rowindex も参照してください。

すべての行がDOMに存在する場合、この属性を設定する必要はありません。ユーザーエージェントが総行数を自動計算できるためです。しかし、ある時点で一部の行しかDOMに存在しない場合は、完全なテーブルの行数を明示するためこの属性が必要です。

著者は必須として、aria-rowcountの値を完全なテーブルの行数と等しい整数に設定してください。総行数が不明な場合は必須として、値を-1に設定し、ユーザーエージェントによる計算を禁止してください。

以下の例は、2000行あるグリッドで、1行目と100~102行目だけが表示されている状態です。

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader"></span>
      <span role="columnheader"></span>
      <span role="columnheader">会社</span>
      <span role="columnheader">電話番号</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell">Taylor</span>
      <span role="gridcell">Johnson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1236</span>
    </div>
  </div>
</div>
特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-rowindex プロパティ

tablegridtreegrid内における要素の行インデックスまたは位置を定義します。関連する aria-rowcount および aria-rowspan も参照してください。

すべての行がDOMに存在する場合、この属性を設定する必要はありません。ユーザーエージェントが各行のインデックスを自動計算できるためです。しかし、ある時点で一部の行しかDOMに存在しない場合は、完全なテーブルに対する各行の位置を明示するためこの属性が必要です。

著者は必須として、aria-rowindexの値を1以上で、前の行の値より大きく、完全なテーブルの行数以下の整数に設定してください。複数行をまたぐセルやグリッドセルの場合は、aria-rowindexの値をスパンの開始位置に設定必須です。

著者は推奨として、各行にaria-rowindexを付与してください。また、任意で各行の子要素やowned要素にも付与できます。

以下の例は、2000行あるグリッドで、1行目と100~102行目だけが表示されている状態です。

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader"></span>
      <span role="columnheader"></span>
      <span role="columnheader">会社</span>
      <span role="columnheader">電話番号</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell">Taylor</span>
      <span role="gridcell">Johnson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1236</span>
    </div>
  </div>
</div>

次の例は、前述のグリッドに対し各行のowned要素にもaria-rowindexを付与したものです。

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader" aria-rowindex="1"></span>
      <span role="columnheader" aria-rowindex="1"></span>
      <span role="columnheader" aria-rowindex="1">会社</span>
      <span role="columnheader" aria-rowindex="1">電話番号</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell" aria-rowindex="100">Fred</span>
      <span role="gridcell" aria-rowindex="100">Jackson</span>
      <span role="gridcell" aria-rowindex="100">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="100">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell" aria-rowindex="101">Sara</span>
      <span role="gridcell" aria-rowindex="101">James</span>
      <span role="gridcell" aria-rowindex="101">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="101">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell" aria-rowindex="102">Taylor</span>
      <span role="gridcell" aria-rowindex="102">Johnson</span>
      <span role="gridcell" aria-rowindex="102">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="102">555-1236</span>
    </div>
  </div>
</div>
特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-rowspan プロパティ

tablegridtreegrid内で、セルやグリッドセルが何行分にまたがっているかを定義します。関連する aria-rowindex および aria-colspan も参照してください。

この属性は、ネイティブテーブルに含まれないセルやグリッドセル向けです。ネイティブテーブルのセルやグリッドセルの行スパンは、著者は推奨としてホスト言語の属性を使い、aria-rowspanは使わないでください。ホスト言語で同等の属性がある要素にaria-rowspanが使われた場合、ユーザーエージェント必須として、aria-rowspanの値を無視し、ホスト言語の属性値のみを支援技術に公開します。

著者は必須として、aria-rowspanを0以上で、同じ列の次のセルやグリッドセルと重ならない範囲の整数に設定してください。値が0の場合、そのセルやグリッドセルは行グループ内の残りすべての行にまたがります。

特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-selected 状態

さまざまなウィジェットの現在の「選択」状態を示します。関連する aria-checked および aria-pressed も参照してください。

この属性は、単一選択・複数選択ウィジェットで使われます:

  1. 単一選択コンテナで、現在フォーカスされた項目が選択されていない場合。通常、選択状態はフォーカスに追従し、ユーザーエージェントが管理します。
  2. 複数選択コンテナ。著者は推奨として、aria-multiselectable属性がtrueのコンテナの選択可能な子孫には、aria-selected属性の値をtrueまたはfalseで明示すべきです。

aria-selectedの明示的な指定は、フォーカスによる暗黙の選択より優先されます。ウィジェット内で明示的に選択状態が設定されていない場合、支援技術は任意で、キーボードフォーカスに追従する暗黙の選択を伝えてもかまいません。ウィジェット内で明示的な選択状態が設定されている場合、ユーザーエージェントは必須として、暗黙の選択状態を伝えてはなりません。

特性:
特性
使用可能なロール:
継承されるロール:
値: true/false/undefined
値:
説明
false 選択可能な要素は選択されていません。
true 選択可能な要素が選択されています。
undefined (デフォルト) 要素は選択不可です。

aria-setsize プロパティ

現在のリスト項目やツリー項目のセット内の項目数を定義します。セット内のすべての要素がDOMに存在する場合は不要です。関連する aria-posinset も参照してください。

このプロパティはセットの各メンバーに付与し、セットのメンバーを集めるコンテナ要素には付与しません。「全Y個中X番目」のようにユーザーを案内する場合、支援技術はXをaria-posinset属性値、Yをaria-setsize属性値として使用します。

セット内のすべての項目がドキュメント構造に存在する場合は、このプロパティを設定する必要はありません。ユーザーエージェントがセットサイズと各項目の位置を自動計算できるためです。しかし、ドキュメントサイズ削減のため一部のみが構造上に存在する場合は、セットサイズを明示するためこのプロパティが必要です。

著者は必須として、aria-setsizeの値をセット内の項目数と等しい整数に設定してください。総項目数が不明な場合は推奨として、値を-1に設定してください。

aria-setsizemenuitemmenuitemcheckboxmenuitemradioに付与する場合、著者は推奨として、セパレーターを除いたmenu内の総項目数で値を設定してください。

以下の例は、16個中5~8番目の項目を示します。

<h2 id="label_fruit">利用可能な果物</h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="16" aria-posinset="5">りんご</li>
  <li role="option" aria-setsize="16" aria-posinset="6">バナナ</li>
  <li role="option" aria-setsize="16" aria-posinset="7">カンタロープ</li>
  <li role="option" aria-setsize="16" aria-posinset="8">デーツ</li>
</ul>

次の例は、総数不明のセットで5~8番目の項目を示します。

<h2 id="label_fruit">利用可能な果物</h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="-1" aria-posinset="5">りんご</li>
  <li role="option" aria-setsize="-1" aria-posinset="6">バナナ</li>
  <li role="option" aria-setsize="-1" aria-posinset="7">カンタロープ</li>
  <li role="option" aria-setsize="-1" aria-posinset="8">デーツ</li>
</ul>
特性:
特性
使用可能なロール:
継承されるロール:
値: 整数

aria-sort プロパティ

テーブルやグリッドの項目が昇順または降順で並べ替えられているかどうかを示します。

著者は推奨として、このプロパティをテーブルヘッダーやグリッドヘッダーにのみ適用してください。プロパティが指定されていない場合、並び替え順序は定義されません。各テーブルやグリッドにつき、著者は推奨として、aria-sortを一度に1つのヘッダーのみに適用してください。

特性:
特性
使用可能なロール:
値: トークン
値:
説明
ascending この列で項目が昇順に並べ替えられています。
descending この列で項目が降順に並べ替えられています。
none (デフォルト) この列には明示的な並び替えはありません。
other 昇順・降順以外の並び替えアルゴリズムが適用されています。

aria-valuemax プロパティ

範囲ウィジェットの許容される最大値を定義します。

著者は必須として、aria-valuemaxの値がaria-valueminの値以上であることを保証しなければなりません。aria-valuenowに最大値と最小値がある場合、著者は推奨としてaria-valuemaxaria-valueminプロパティを提供してください。

範囲ウィジェットは一定値から始まり、最大値(このプロパティで定義)まで増加できます。最小値・最大値を宣言することで、支援技術が範囲の大きさをユーザーに伝えることができます。

特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: 数値

aria-valuemin プロパティ

範囲ウィジェットの許容される最小値を定義します。

著者は必須として、aria-valueminの値がaria-valuemaxの値以下であることを保証しなければなりません。aria-valuenowに最大値と最小値がある場合、著者は推奨としてaria-valuemaxaria-valueminプロパティを提供してください。

範囲ウィジェットは一定値から始まり、最小値(このプロパティで定義)まで減少できます。最小値・最大値を宣言することで、支援技術が範囲の大きさをユーザーに伝えることができます。

特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: 数値

aria-valuenow プロパティ

範囲ウィジェットの現在値を定義します。関連する aria-valuetext も参照してください。

このプロパティは、スライダーやプログレスバーなどの範囲ウィジェットで使用されます。

現在値が不明な場合(例:不確定なプログレスバー)、著者は非推奨としてaria-valuenow属性を設定すべきではありません。属性がない場合、現在値について何も示されません。aria-valuenowに最大値と最小値がある場合、著者は推奨としてaria-valuemaxaria-valueminプロパティを提供してください。

aria-valuenowの値は小数値です。範囲が数値集合であれば、aria-valuenowはその集合の値のひとつです。例:範囲が[0, 1]なら有効な値は0.5です。範囲外の値(例:-2.5や1.1)は無効です。

progressbar要素やscrollbar要素では、支援技術は推奨として、値をパーセントとしてユーザーに提示すべきです。これはaria-valueminからaria-valuemaxまでの範囲で計算されます。両方定義されていなければ実値+パーセントで表示します。sliderspinbuttonロールでは、支援技術は推奨として、実値をユーザーに提示すべきです。

表示値が数値として正確に表現できない場合、著者は推奨としてaria-valuenowと併せてaria-valuetext属性を使い、ユーザー向けの表現を提供してください。例:スライダーがsmallmediumlargeという表示の場合、aria-valuetextの値はこれら文字列のいずれかになります。

aria-valuetextが指定されている場合、支援技術はaria-valuenowの値の代わりにそちらを表示します。

特性:
関連する概念
関連する概念:
使用可能なロール:
継承されるロール:
値: 数値

aria-valuetext プロパティ

範囲ウィジェットについて、aria-valuenowの人が読めるテキスト代替を定義します。

このプロパティは、スライダーやプログレスバーなどの範囲ウィジェットで使用されます。

aria-valuetext属性を設定する場合、著者は推奨としてaria-valuenow属性も設定すべきです(値が不明な場合、例:不確定なprogressbarは除く)。

著者は推奨として、表示値が数値として意味を持たない場合のみaria-valuetext属性を設定してください。例:スライダーがsmallmediumlargeという表示の場合、aria-valuenowの値は1~3(表示の順序)ですが、aria-valuetextはこれら文字列のいずれかになります。aria-valuetext属性がなければ、支援技術は現在値の判断にaria-valuenow属性のみを使います。

aria-valuetextが指定された場合、支援技術は推奨としてaria-valuenowの値の代わりにそちらを表示すべきです。

特性:
特性
使用可能なロール:
継承されるロール:
値: 文字列

7. アクセシビリティツリー

アクセシビリティツリーDOMツリーは並列構造です。アクセシビリティツリーには、ユーザーエージェントのUIオブジェクトとドキュメントのオブジェクトが含まれます。アクセシブルオブジェクトは、DOM内でアクセシビリティAPIに公開すべき要素ごとにアクセシビリティツリー内に作成されます。これは、アクセシビリティイベントを発火する可能性がある場合や、公開が必要なプロパティリレーションシップ、機能を持つ場合です。

7.1 アクセシビリティツリーから要素を除外する

以下の要素は、アクセシビリティAPIに公開されず、ユーザーエージェントは必須として、アクセシビリティツリーに含めてはなりません:

上記ルールで既に除外されていない場合、ユーザーエージェントは非推奨として、以下の要素をアクセシビリティツリーに含めてはなりません:

7.2 アクセシビリティツリーに要素を含める

アクセシビリティツリーから要素を除外するのルールにより除外・非表示とされていない場合、ユーザーエージェントは必須として、以下のいずれかの条件を満たすDOM要素に対し、アクセシブルオブジェクトをアクセシビリティツリーに提供しなければなりません:

8. ホスト言語での実装

この仕様で定義されたロール状態プロパティは、完全なウェブ言語・フォーマットを構成するものではありません。ホスト言語の文脈で使用されることを意図しています。本節では、ここで指定されたマークアップがホスト言語マークアップと円滑かつ効果的に統合されるよう、ホスト言語が現行標準を実装する方法について説明します。

マークアップ言語は見た目は似ていても、言語定義の基盤は共有していません。言語構築手法の違いに対応するため、要件は一般的かつモジュール化対応的です。仕様記述方法の違いを許容しつつ、WAI-ARIA情報の著者向け表示やDOM上でのスクリプト操作の一貫性を保つことが目的です。

WAI-ARIAのロール・状態・プロパティは属性として要素に実装されます。ロールはホスト言語のrole属性値のトークンとして記述されます。状態・プロパティは個別属性として、仕様で定義された値を持ちます。属性名はaria接頭辞付き状態・プロパティ名です。

8.1 role属性

実装するホスト言語は、以下の特性を持つ属性を提供します:

8.2 状態・プロパティ属性

実装するホスト言語は、以下の特性を持つ属性必須として許容します:

XML名前空間 [XML-NAMES]をサポートするホスト言語は、WAI-ARIA属性を名前空間付きで使用することを任意で要求できます。この場合、WAI-ARIA状態・プロパティ属性の名前空間は必須としてhttp://www.w3.org/ns/wai-aria/です。明示的な現行標準サポートを記載していないホスト言語でも、名前空間サポートがあり、ユーザーエージェントが現行標準名前空間を認識することが期待される場合は、著者は推奨としてこの名前空間を使用してください。仕様ではプレフィックスは定義されていませんが、一般的には「aria」が使われます。

WAI-ARIA状態・プロパティ属性はすべて「aria-」で始まる命名規則となっています。これは名前空間プレフィックスではなく、状態・プロパティ名の一部です。したがって、名前空間付きで使用する場合、属性名は「aria:aria-foo」のようになります。

一部のホスト言語は、WAI-ARIA状態・プロパティ属性に名前空間を使用しません。これはホスト言語が名前空間をサポートしない場合や、現行標準をコア機能として組み込む設計の場合です。こうしたホスト言語では名前空間名は無意味です。属性名にはコロン区切りのプレフィックスがなく、名前空間的には未プレフィックス属性名となります。ECMAScriptのDOMインターフェースgetAttributeNSでは空文字列("")がこれを表し、getAttribute("aria-busy")getAttributeNS("", "aria-busy")も同じ属性を取得します。

この節の要件によれば、一部のユーザーエージェントは名前空間付きWAI-ARIA属性、名前空間なし属性、その両方を認識します。著者は使用ホスト言語でどの形式がサポートされているか注意してください。ホスト言語とユーザーエージェントが明示的に名前空間必須と示さない限り、名前空間なし属性を使うことが推奨されます。名前空間をサポートするユーザーエージェントでも、現行標準状態・プロパティをアクセシビリティAPIに公開する際、名前空間付きで公開しないのが一般的です。特にHTMLやXHTMLの現行実装はこの名前空間をサポートしません。

8.3 フォーカスナビゲーション

実装するホスト言語は、著者がすべてのインタラクティブ要素をフォーカス可能にできるよう必須としてサポートする必要があります。つまり、レンダリング・イベント受信可能な要素です。実装するホスト言語は、これらフォーカス可能・インタラクティブ要素がデフォルトのタブナビゲーション順に現れるかどうかを、著者が定義できる仕組みを必須として提供する必要があります。HTMLのtabindex属性がその一例です。

8.4 暗黙的な現行標準セマンティクス

現行標準は、ホスト言語がオブジェクトのネイティブセマンティクスを持たない場合に、オブジェクトのセマンティクス情報を提供するために設計されています。ただし、多くのホスト言語に追加セマンティクスも提供します。さらに、ホスト言語は時を経て現行標準機能に対応する新しいネイティブ機能を提供することがあります。そのため、現行標準セマンティクスがホスト言語セマンティクスと重複する状況も多くあります。

こうしたホスト言語機能は「暗黙的な現行標準セマンティクス」を持つと見なせます。ユーザーエージェントによる暗黙的セマンティクスの処理は、現行標準機能と類似します。ホスト言語機能と現行標準機能に語彙的な違いはあっても、原則としてユーザーエージェントは同じ情報をアクセシビリティAPIに公開します。暗黙的な現行標準セマンティクスを持つ機能は、現行標準の構造的要件(所有要素・状態・プロパティ必須など)を満たし、明示的な現行標準セマンティクス不要で利用できます。暗黙的ロールの要素では、著者は現行標準状態・プロパティを明示的なロール指定なしで利用できます。

例えば、既存機能(チェックボックスやラジオボタン)があれば、ホスト言語のネイティブセマンティクスを使ってください。現行標準マークアップは、ネイティブセマンティクスを補強(例:aria-requiredで必須指定)する場合や、標準機能と異なる目的にセマンティクスを変える場合のみ使用します。

暗黙的な現行標準セマンティクスは、次節「ホスト言語セマンティクスとの競合」に影響します。そのため、暗黙的な現行標準セマンティクスは、ホスト言語仕様やCore Accessibility API Mappingsなど、規範的仕様で定義する必要があります。

8.5 ホスト言語セマンティクスとの競合

現行標準ロール・状態・プロパティは、同じセマンティクスを持つネイティブホスト言語要素がない場合にセマンティクス情報を追加する目的で設計されており、原則としてネイティブセマンティクスのない要素に使われます。また、類似だが同一でないセマンティクスを持つ要素(例:入れ子リストでツリー構造を表現)にも使えます。この方法は、現行標準未実装の古いブラウザへのフォールバックや、ネイティブ表示によるスタイル・スクリプト削減にも有効です。以下の例外を除き、ユーザーエージェントは必須として、要素をアクセシビリティAPIに公開する際は常に現行標準セマンティクスを使い、ホスト言語セマンティクスではなく現行標準セマンティクスを優先します。

通常は現行標準がネイティブセマンティクスを上書きしますが、現行標準による上書きが不適切な場合もあります。これは、ホスト言語が同一セマンティクスを持つ場合(現行標準不要)や、現行標準セマンティクスとホスト言語セマンティクスが直接競合する場合です。ホスト言語機能と同じロールセマンティクスと値があり、著者がホスト言語機能を使うべき理由が特にない場合、著者は推奨として、現行標準で他要素を再利用するよりホスト言語機能を使ってください。

ホスト言語には、現行標準ロールに対応する暗黙的セマンティクスを持つ機能があります。現行標準ロールが指定されている場合、ユーザーエージェントは必須として、ネイティブセマンティクスではなく現行標準ロールのセマンティクスで処理します。ただし、ロールが現行標準状態・プロパティのうち、ホスト言語で明示的に禁止されている属性を必要とする場合は除きます。ロール値は状態・プロパティ値のような競合はなく(例:HTMLの'checked'属性と'aria-checked'属性は競合し得る)、著者は通常、他要素再利用にも現行標準ロールを指定する妥当な理由があります。

現行標準状態・プロパティがホスト言語機能で同じ暗黙的セマンティクスを持つ場合は、現行標準機能の使用が特に問題となります。両方が指定され、値が同期されていない場合、ユーザーエージェントや支援技術はどちらの値を使うべきか判断できません。したがって、競合状態・プロパティの提供を防ぐため、ホスト言語は必須として、現行標準属性とネイティブ属性が直接競合する場合を明示的に宣言しなければなりません。ホスト言語が現行標準属性の競合を宣言した場合、ユーザーエージェントは必須として、現行標準属性を無視し、同じ暗黙的セマンティクスを持つホスト言語属性を優先します。

ホスト言語は、現行標準で上書きできない機能(「強いネイティブセマンティクス」)を任意で文書化できます。これは、暗黙的現行標準セマンティクスを持つ機能や、現行標準によるセマンティクス変更で処理が不確定になる機能です。検証ツールは、強いネイティブセマンティクスを持つ要素に現行標準ロールを使った場合、エラーや警告を表示しても任意ですが、ユーザーエージェントは必須として、ネイティブセマンティクスが常に表示専用でない限り、要素をアクセシビリティAPIに公開する際は現行標準ロールのセマンティクスを使います。

ホスト言語が現行標準によるネイティブ機能上書きに例外を設けるのは、著者エラーやホスト言語機能の本質的処理との競合を防ぐためです。著者エラーは、ホスト言語と現行標準で類似だが非同一機能を持ち、どちらか一方の変更がアクセシビリティAPIにどう影響するか不明な場合に起こりえます。本質的処理は、単なる表示やAPI公開を超えた変更不可の処理で、現行標準適用で予測不能となる場合です。こうした状況では、ホスト言語が現行標準の利用範囲を制限する妥当な理由があります。ただし、この規定は現行標準利用を機能ごとに文書化して一律禁止する権限をホスト言語に与えるものではありません。本質的な処理上重要な場合のみ制限するべきです。

一部の現行標準機能は、アクセシビリティAPIに完全なモデルを構築するために不可欠です。これらはネイティブセマンティクスと競合しません(補完し得ても)。したがって、ホスト言語は非推奨として、以下の現行標準機能の利用を禁止する強いネイティブセマンティクスを宣言してはなりません:

8.6 状態・プロパティ属性の処理

状態・プロパティ属性はホスト言語で定義されるため、その値型の構文はホスト言語で決まります。で定義された各値型については、ホスト言語に対応した型が使われます。現行標準値型と各種ホスト言語値型の対応例は現行標準値型と言語のマッピングで示します(非規範)。新たなホスト言語追加にも対応するためです。

リスト値型(ID参照リスト・トークンリスト)は、複数値を区切り文字(スペース、カンマ等)で列挙できます。言語によって区切り文字が固定または複数許容されます。

グローバル状態・プロパティはホスト言語の任意要素で利用できます。ただし、非グローバル状態・プロパティは、ロールでサポートされる要素(明示的現行標準ロールまたはホスト言語の暗黙的現行標準セマンティクス一致ロール)のみで使うことを著者は必須です。role属性を要素に追加すると、その要素のセマンティクス・挙動(現行標準状態・プロパティのサポートを含む)はロールの挙動で拡張・上書きされます。ユーザーエージェントは必須として、ロールでサポートされていない非グローバル状態・プロパティは無視してください。例えば、aria-valuetext属性はprogressbarで使えます。

現行標準ロールには、サポートまたは必須の状態・プロパティが指定されています。例:comboboxロールがサポートするプロパティはaria-autocompleteです。これはオートコンプリート機能がある場合とない場合があるためです。対して、comboboxロールは拡張可能性を示すaria-expanded状態が必須です。comboboxは、listbox等の制御ポップアップ要素を持ちます。listboxが開いていればcomboboxは拡張状態、閉じていれば折り畳み状態です。

現行標準ロールを使用する場合、サポート状態・プロパティがDOMにないときは、デフォルト値通りに扱われます。例:comboboxでaria-autocomplete属性がなければaria-autocomplete="none"と同じで、オートコンプリートなしとなります。

ただし、必須状態・プロパティが欠落している場合は著者エラーです。必須状態・プロパティが欠落している場合、それが存在するものとして扱われ、必ずしもデフォルト値ではない中立値(暗黙値)が適用されます。例えば、aria-expandedのデフォルト値はundefined(拡張可能・不可両方でない)ですが、comboboxの場合は該当しません。このケースでは、aria-expandedがcomboboxの拡張/折り畳み性を伝えるため必要です。したがって、comboboxロールにおけるaria-expandedの暗黙値はfalseであり、拡張可能(現在は折り畳み)を意味します。各現行標準ロールの特性テーブルには「ロールの暗黙値」項目があり、該当ロールで状態・プロパティが欠落した場合に使う値が指定されています。

暗黙的な現行標準セマンティクスを持つ要素は、対応するロールがサポートするすべての現行標準状態・プロパティをサポートします。したがって、著者は状態・プロパティを設定する際、ロールの指定を任意で省略できます。ロールは暗黙ロール以外へ変更したい場合のみ必要です。

時には、DOMに状態・プロパティ属性が存在し、値が空文字列("")の場合があります。著者はサポートされる(必須でない)状態・プロパティについて空文字列を任意で指定できます。ユーザーエージェントは、値が""の場合は属性がない場合と同じように扱う推奨です。サポート状態・プロパティではこれはデフォルト値に対応しますが、必須属性の場合は著者エラーとなり、ロールの暗黙値が使われます。

8.6.1 ID参照エラー処理

ユーザーエージェントは、同じ文書内の他の要素と一致しないID参照を推奨として無視します。

ウェブ著者はIDが一意であることを保証する責任があります。複数の要素が同じIDを持つ場合、ユーザーエージェントは推奨として、最初に見つかった要素を使います。挙動はgetElementByIdと同じです。

1つの現行標準リレーションで同じ要素が複数回指定された場合、ユーザーエージェントは推奨として、同じ要素への複数ポインタを返します。

aria-activedescendantは、単一のID参照のみを対象とするよう定義されています。既存のID参照と完全一致しないaria-activedescendant値は著者エラーであり、DOM内のいずれの要素も一致しません。

8.7 CSS セレクタ

この節は将来のバージョンで削除される可能性があります。

属性セレクタのサポートは必須として現行標準属性を含む必要があります。例:.fooMenuItem[aria-haspopup="true"]は、クラスfooMenuItemを持つすべての要素と、現行標準プロパティaria-haspopuptrueのものを選択します。WAI-ARIA属性の動的変更にも必須としてプレゼンテーションを更新する必要があります。これにより、著者は現行標準セマンティクスでスタイリングを一致させることができます。

9. 著者エラーの扱い

9.1 ロール

ユーザーエージェントはWAI-ARIAロールのバリデーションを行うことが期待されています。

ロールの定義の節で述べられているように、コンテンツで抽象ロールを使用することは著者エラーと見なされます。ユーザーエージェントは必須として、抽象ロールをアクセシビリティAPIの標準ロール機構でマッピングしてはなりません。

role属性に非抽象のWAI-ARIAロール名と一致するトークンが含まれていない場合、ユーザーエージェントは必須として、その要素にロールが指定されていないものとして扱います。例:<table role="foo"><table>と同様に、<input type="text" role="structure"><input type="text">と同じように公開されるべきです。

9.2 状態とプロパティ

一般的に、ユーザーエージェントWAI-ARIAプロパティのバリデーションをあまり行いません。ユーザーエージェントは任意で、ID参照が有効かどうかなど、軽微なバリデーション(例えば有効なIDの指定)、aria-posinsetが1からaria-setsizeまでの範囲かどうか等のチェックはできます。ユーザーエージェントは論理的なバリデーションは責任を負いません。例:

  1. リレーションによる循環参照(例:2つの要素が互いを所有している)。
  2. DOMツリー構造に関する正しい使用(例:要素が複数の要素に所有されている)。
  3. 要素が指定されたロールの挙動を正しく実装しているかどうか(例:role="checkbox"の要素が実際にチェックボックスとして挙動するかは検証しません)。
  4. 必須の子/親ロール関係を正しく守っているか、必須親以外の場所に現れていないかどうか。
  5. aria-activedescendantが実際にコンテナウィジェットのowned要素を指しているかどうか。
  6. セットの一部要素にのみaria-setsizearia-posinsetが指定された場合の暗黙値の決定。

著者が数値型(decimal, integer)値に非数値を指定した場合、ユーザーエージェントは推奨として以下の動作をします:

WAI-ARIAプロパティに不明または禁止値が含まれる場合、ユーザーエージェントは推奨として、プラットフォームアクセシビリティAPIへの公開方法は以下とします:

UIA(ユーザーインターフェースオートメーション)では、対応プロパティが"unsupported"に設定されることがあります。

ユーザーエージェントは必須として、未解決IDを参照するWAI-ARIA属性は公開してはなりません。例:

ユーザーエージェントは必須として、以下の場合aria-roledescriptionを公開してはなりません:

特定ロールで必要なWAI-ARIA属性が欠落している場合、ユーザーエージェントは推奨として、以下のテーブルの値が指定されたものとして処理します。

必須属性欠落時のフォールバック値
WAI-ARIAロール 必須属性 フォールバック値
checkbox aria-checked false
combobox aria-controls マッピングなし
combobox aria-expanded false
heading aria-level 2
menuitemcheckbox aria-checked false
menuitemradio aria-checked false
radio aria-checked false
scrollbar aria-controls マッピングなし
scrollbar aria-valuenow 欠落または数値でない場合、(aria-valuemax - aria-valuemin) / 2aria-valuemin未満ならaria-valueminaria-valuemaxより大きければaria-valuemax
separator(フォーカス可能な場合) aria-valuenow 欠落または数値でない場合、(aria-valuemax - aria-valuemin) / 2aria-valuemin未満ならaria-valueminaria-valuemaxより大きければaria-valuemax
slider aria-valuenow 欠落または数値でない場合、(aria-valuemax - aria-valuemin) / 2aria-valuemin未満ならaria-valueminaria-valuemaxより大きければaria-valuemax
switch aria-checked false
meter aria-valuenow 暗黙値または明示的なaria-valuemin値に一致する値。

必須でない状態・プロパティの暗黙値は各ロールの特性テーブルに記載されています。これらはフォールバック値ではないため、ここには含まれていません。

10. IDLインターフェース

準拠するユーザーエージェントは、以下のIDLインターフェースを必須として実装しなければなりません。

10.1 インターフェースミックスイン ARIAMixin

WebIDLinterface mixin ARIAMixin {
	attribute DOMString? role;
	
	attribute DOMString? ariaAtomic;
	attribute DOMString? ariaAutoComplete;
	attribute DOMString? ariaBusy;
	attribute DOMString? ariaChecked;
	attribute DOMString? ariaColCount;
	attribute DOMString? ariaColIndex;
	
	attribute DOMString? ariaColSpan;
	
	attribute DOMString? ariaCurrent;
	
	
	
	attribute DOMString? ariaDisabled;
	
	attribute DOMString? ariaExpanded;
	
	attribute DOMString? ariaHasPopup;
	attribute DOMString? ariaHidden;
	attribute DOMString? ariaInvalid;
	attribute DOMString? ariaKeyShortcuts;
	attribute DOMString? ariaLabel;
	
	attribute DOMString? ariaLevel;
	attribute DOMString? ariaLive;
	attribute DOMString? ariaModal;
	attribute DOMString? ariaMultiLine;
	attribute DOMString? ariaMultiSelectable;
	attribute DOMString? ariaOrientation;
	
	attribute DOMString? ariaPlaceholder;
	attribute DOMString? ariaPosInSet;
	attribute DOMString? ariaPressed;
	attribute DOMString? ariaReadOnly;
	
	attribute DOMString? ariaRequired;
	attribute DOMString? ariaRoleDescription;
	attribute DOMString? ariaRowCount;
	attribute DOMString? ariaRowIndex;
	
	attribute DOMString? ariaRowSpan;
	attribute DOMString? ariaSelected;
	attribute DOMString? ariaSetSize;
	attribute DOMString? ariaSort;
	attribute DOMString? ariaValueMax;
	attribute DOMString? ariaValueMin;
	attribute DOMString? ariaValueNow;
	attribute DOMString? ariaValueText;
};

ARIAMixinを含むインターフェースは、以下のアルゴリズムを提供しなければなりません:

ARIAMixinで定義される各IDL属性idlAttributeについて、取得時は以下の手順を実行します:

  1. contentAttributeを、ARIA属性対応表でidlAttributeから決定します。

  2. このオブジェクト、idlAttributecontentAttributeを与えてARIAMixinゲッターステップを実行し、その結果を返します。

設定時も同様に以下の手順を実行します:

  1. contentAttributeをARIA属性対応表でidlAttributeから決定します。

  2. このオブジェクト、idlAttributecontentAttribute、値を与えてARIAMixinセッターステップを実行します。

この汎用的な枠組みは、ElementElementInternalsなど、異なるホストインターフェースごとにIDL属性の挙動を変えたいという要望に基づいています。代案は各ホストインターフェースが独自にIDL属性を複製することですが、それは同期の崩れを招きやすいです。

10.2 ARIA属性対応表

以下の表は、IDL属性名とコンテンツ属性名の対応をARIAMixin用に示します。

IDL属性 対応ARIAコンテンツ属性
role role
ariaAtomic aria-atomic
ariaAutoComplete aria-autocomplete
ariaBusy aria-busy
ariaChecked aria-checked
ariaColCount aria-colcount
ariaColIndex aria-colindex
ariaColSpan aria-colspan
ariaCurrent aria-current
ariaDisabled aria-disabled
ariaExpanded aria-expanded
ariaHasPopup aria-haspopup
ariaHidden aria-hidden
ariaInvalid aria-invalid
ariaKeyShortcuts aria-keyshortcuts
ariaLabel aria-label
ariaLevel aria-level
ariaLive aria-live
ariaModal aria-modal
ariaMultiLine aria-multiline
ariaMultiSelectable aria-multiselectable
ariaOrientation aria-orientation
ariaPlaceholder aria-placeholder
ariaPosInSet aria-posinset
ariaPressed aria-pressed
ariaReadOnly aria-readonly
ariaRequired aria-required
ariaRoleDescription aria-roledescription
ariaRowCount aria-rowcount
ariaRowIndex aria-rowindex
ariaRowSpan aria-rowspan
ariaSelected aria-selected
ariaSetSize aria-setsize
ariaSort aria-sort
ariaValueMax aria-valuemax
ariaValueMin aria-valuemin
ariaValueNow aria-valuenow
ariaValueText aria-valuetext

注:aria-dropeffectaria-grabbed属性はARIA 1.1で廃止されており、対応するIDL属性はありません。

10.2.1 曖昧さ解消パターン

この節は非規範です。

仕様著者が例外を設ける場合もありますが、上記IDL属性名の曖昧さや大文字化には以下の規則を用いています:

  • 複数語の組み合わせ(例:"described by")はキャメルケースで各語頭を大文字化。例:aria-describedbyariaDescribedBy(DとBが大文字)。
  • ハイフン区切り語(例:"multi-selectable")もキャメルケースで各区切りを大文字化。例:aria-multiselectableariaMultiSelectable(MとSが大文字)。
  • 辞書でハイフン有無両方ある場合(例:"multi-line", "multiline")、ハイフンありで区切りごと大文字化。aria-multilineariaMultiLine(MとLが大文字)。
  • 辞書が1通り(スペース・ハイフンなし)の複合語なら頭文字のみ大文字。例:"placeholder" → aria-placeholderariaPlaceholder(Pのみ大文字)。
  • 現状ARIA属性に略語はありませんが、将来追加される場合はDOM慣例(例:ID→Id)に合わせます。

10.2.2 IDL属性名の注記・例外

この節は非規範です。

個別属性名に関する注記・例外はここに記載します。

  • ariaPosInSetaria-posinset属性は「セット内の位置」("in set")を指し、「inset」(先頭からのインセット)ではありません。したがってIDL名はariaPosInSet(P, I, 2番目のSが大文字)であり、ariaPosInsetではありません。

10.3 ARIAMixinElementへの混入

ユーザーエージェントは必須として、ElementARIAMixinを含めなければなりません:

WebIDLElement includes ARIAMixin;

Elementについて:

実際には、例えばElement上のroleIDL属性はroleコンテンツ属性を反映し、ariaValueMinIDL属性はaria-valueminコンテンツ属性を反映します。

10.4 IDL属性利用例

この節は非規範です。

ARIA IDL属性反映の主目的は、JavaScriptによる値操作の容易化です。以下はその利用例です。

11. プライバシーとセキュリティの考慮事項

この節は非規範です。

本仕様は新たなセキュリティ考慮事項を導入しません。

Web Platform Design Principlesに従い、本仕様は支援技術が情報を使用しているかどうかを判定するプログラムインターフェースを提供しません。ただし、本仕様は、著者が支援技術利用者に対して他のユーザーと異なる情報を提示することを可能にします。これはARIA仕様の多くの機能で可能であり、ウェブ技術スタックの他の多くの部分でも可能です。このコンテンツの差異は、支援技術利用者のアクティブフィンガープリンティングに悪用される可能性があります。

A. 現行標準値型と言語のマッピング

この節は非規範です。

下記のHTML欄は助言的です。HTMLでの現行標準状態・プロパティの利用ガイダンスは ARIAロール・状態・プロパティの許容 ([HTML-ARIA]) で提供されています。

HTMLでのtrue/false値の推奨マッピングは、キーワード・列挙属性で値としてtruefalseを許容します。HTMLのboolean値型は使用しません。

下記表は、現行標準状態・プロパティ型と、[HTML]、XMLスキーマデータ型 [XMLSCHEMA11-2]、 [SVG2]、およびSGMLの属性型との推奨マッピングを示します。

下記に記載のない言語にも適切な値型が定義されている場合があります。なければ、一般的なXML言語にはXMLスキーマデータ型を推奨します。DTDを使う文書は自動バリデーションできず、現行標準属性に追加処理が必要です。

現行標準型 HTML XMLスキーマ
true/false キーワード・列挙属性で"true"と"false"を許容 boolean
true/false/undefined キーワード・列挙属性truefalseundefinedを許容 NMTOKEN列挙制約truefalseundefinedを許容
tristate キーワード・列挙属性で"true"、"false"、"mixed"を許容 NMTOKEN列挙制約で"true"、"false"、"mixed"を許容
number 浮動小数点数 decimal
integer 非負整数 integer
token キーワード・列挙属性 NMTOKEN列挙制約で状態・プロパティ定義の値を許容
token list スペース区切りトークン NMTOKENS列挙制約で状態・プロパティ定義の値を許容
ID reference 他要素のid属性 IDREF
ID reference list 他要素のid属性値(複数)、スペース区切りトークンで表現 IDREFS
string 値制約なし string

B. WAI-ARIA 1.1勧告Recommendation以降の本質的な変更点

C. 謝辞

この節は非規範です。

本ドキュメントの開発に貢献した方々を以下に示します。

C.1 公開時点でARIA WGに参加していたメンバー

C.2 その他のARIA貢献者、コメント提供者、および以前参加していたメンバー

C.3 資金提供者

本出版物は、米国連邦教育省、National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR) の資金提供を受けています。契約番号は、初期ED-OSE-10-C-0067、次はHHSP23301500054C、現在はHHS75P00120P00168です。本出版物の内容は、米国教育省の見解または方針を必ずしも反映するものではなく、記載された商品名、商業製品、組織の記載は米国政府による支持を意味するものではありません。

D. 参考文献

D.1 規範的参考文献

[ACCNAME-1.2]
アクセシブルネームと説明の算出 1.2. Bryan Garaventa; Joanmarie Diggs; Michael Cooper. W3C. 2019年7月11日. W3C作業草案. URL: https://www.w3.org/TR/accname-1.2/
[CORE-AAM]
コアアクセシビリティAPIマッピング 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 2017年12月14日. W3C勧告. URL: https://www.w3.org/TR/core-aam-1.1/
[CORE-AAM-1.2]
コアアクセシビリティAPIマッピング 1.2. Valerie Young; Alexander Surkov; Michael Cooper. W3C. 2023年5月18日. W3C候補勧告. URL: https://www.w3.org/TR/core-aam-1.2/
[CSS3-SELECTORS]
セレクター レベル3. Tantek Çelik; Elika Etemad; Daniel Glazman; Ian Hickson; Peter Linss; John Williams. W3C. 2018年11月6日. W3C勧告. URL: https://www.w3.org/TR/selectors-3/
[DOM]
DOM現行標準. Anne van Kesteren. WHATWG. 現行標準. URL: https://dom.spec.whatwg.org/
[HTML]
HTML現行標準. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 現行標準. URL: https://html.spec.whatwg.org/multipage/
[MathML3]
数式マークアップ言語 (MathML) バージョン3.0 第2版. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 2014年4月10日. W3C勧告. URL: https://www.w3.org/TR/MathML3/
[RFC2119]
RFCで要求レベルを示すキーワード. S. Bradner. IETF. 1997年3月. ベストカレントプラクティス. URL: https://www.rfc-editor.org/rfc/rfc2119
[ROLE-ATTRIBUTE]
ロール属性 1.0. Shane McCarron et al. W3C. 2013年3月28日. W3C勧告. URL: https://www.w3.org/TR/role-attribute/
[SVG2]
スケーラブル・ベクター・グラフィックス (SVG) 2. Amelia Bellamy-Royds; Bogdan Brinza; Chris Lilley; Dirk Schulze; David Storey; Eric Willigers. W3C. 2018年10月4日. W3C候補勧告. URL: https://www.w3.org/TR/SVG2/
[uievents-key]
UIイベント KeyboardEvent key値. Travis Leithead; Gary Kacmarcik. W3C. 2023年5月30日. W3C候補勧告. URL: https://www.w3.org/TR/uievents-key/
[webidl]
Web IDL現行標準. Edgar Chen; Timothy Gu. WHATWG. 現行標準. URL: https://webidl.spec.whatwg.org/
[XML-NAMES]
XML名前空間 1.0 (第3版). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. W3C. 2009年12月8日. W3C勧告. URL: https://www.w3.org/TR/xml-names/

D.2 参考情報文献

[AT-SPI]
支援技術サービスプロバイダインターフェース. GNOME Project. URL: https://developer-old.gnome.org/libatspi/stable/
[ATK]
ATK - アクセシビリティツールキット. GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
macOS用NSAccessibilityプロトコル. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[HTML-ARIA]
HTMLにおけるARIA. Steve Faulkner; Scott O'Hara; Patrick Lauke. W3C. 2023年5月31日. W3C勧告. URL: https://www.w3.org/TR/html-aria/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[MSAA]
Microsoft Active Accessibility (MSAA). Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility
[UI-AUTOMATION]
UIオートメーション. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[UIA-EXPRESS]
IAccessibleExインターフェース. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/iaccessibleex
[wai-aria-1.1]
アクセシブル・リッチ・インターネット・アプリケーション (WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 2017年12月14日. W3C勧告. URL: https://www.w3.org/TR/wai-aria-1.1/
[WAI-ARIA-PRACTICES-1.2]
WAI-ARIA著作プラクティス 1.2. Matthew King; JaEun Jemma Ku; James Nurthen; Zoë Bijl; Michael Cooper. W3C. 2022年5月19日. W3C作業部会ノート. URL: https://www.w3.org/TR/wai-aria-practices-1.2/
[WCAG21]
ウェブコンテンツ・アクセシビリティ・ガイドライン (WCAG) 2.1. Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell; Michael Cooper. W3C. 2018年6月5日. W3C勧告. URL: https://www.w3.org/TR/WCAG21/
[XMLSCHEMA11-2]
W3C XMLスキーマ定義言語 (XSD) 1.1 Part 2: データ型. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 2012年4月5日. W3C勧告. URL: https://www.w3.org/TR/xmlschema11-2/