注意
この文書は、W3C / WAI が公開している2009年2月24日付の「Accessible Rich Internet Applications (WAI-ARIA) Version 1.0 Working Draft(原文は英語)」を、W3Cの定めた事項に従い株式会社日立製作所がボランティアとして日本語に翻訳したものです。
正式な文書は、あくまで W3C のサイト上で公開されている英語版であり、この日本語訳文書には翻訳上の間違い、あるいは不適切な表現が含まれている可能性がありますのでご注意ください。リンク先が英語の場合、あるいはダミーのページである場合もあります。ご了承ください。
その他のWAI-ARIA関連文書の日本語訳をご覧になりたい場合はWAI-ARIA(日本語訳)をご覧ください。


[目次]

W3C

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

W3Cワーキングドラフト 2009年2月24日

本バージョン:
http://www.w3.org/TR/2009/WD-wai-aria-20090224/
最新のバージョン:
http://www.w3.org/TR/wai-aria/
過去のバージョン:
http://www.w3.org/TR/2008/WD-wai-aria-20080806/
編集者:
ジェームズ・クレイグ(James Craig)(Apple, Inc.)
マイケル・クーパー(Michael Cooper)(W3C)
リサ・パパス(Lisa Pappas)(Society for Technical Communication)
リッチ・シュワードフェジャー(Rich Schwerdtfeger)(IBM)
リサ・シーマン(Lisa Seeman)(UB Access)

概要

ウェブコンテンツのアクセシビリティを達成するには、ウィジェット、構造、動作についてのセマンティクス(意味、以降セマンティクスとする)情報を盛り込むことによって、支援技術が障がいのある人に対し適切な情報を伝えられるようにする必要がある。この仕様は、アクセシブルなインタフェースの要素を定義するロール(role)、ステート(state)、プロパティのオントロジーを提供するものであり、ウェブコンテンツやウェブアプリケーションのアクセシビリティと相互運用性を向上する目的で使用することができる。これらのセマンティクスは、開発者がユーザーインタフェースの動作と文書レベルのマークアップにある構造情報を支援技術に対して適切に伝えられるようにするために、設計されている。この文書は、WAI-ARIA概要で説明されているWAI-ARIAスイートの一部と位置付けられている。

この文書のステータス

このセクションは、この文書の発行時点でのステータスを説明したものであり、この文書に取って代わる他の文書がすでに存在している可能性もある。W3Cの現行の発行物およびこの技術報告書の最新改訂版は、W3C技術報告書の索引(http://www.w3.org/TR/)で見つけることができる。

この文書は、ウェブ・アクセシビリティ・イニシアティブ(WAI)プロトコル・フォーマット・ワーキンググループ(PFWG)が作成したラストコール・ワーキングドラフトである。WAI-ARIAのこのバージョンは、前のバージョン以降に追加されたWAI-ARIAタクソノミーへのマイナーな変更を含んでいる。

WAI-ARIAに対するユーザーエージェントの応答を明確にするため、この文書の新しい付随文書としてWAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION] が加えられ、一部の内容がこの文書に移動された。また、オーサリングガイドであるWAI-ARIAベストプラクティス [ARIA-PRACTICES] も更新された。詳細は、WAI-ARIA変更履歴で参照できる。

この文書に示されたモデルセットに対するフィードバックは、ウェブコミュニティがアクセシブルなリッチ・インターネット・アプリケーションを作成していくうえで重要である。PFWGでは、以下の点を知りたいと考えている。

これらの質問に答えるフィードバックをお送りいただく際は、付随文書の文脈を考慮していただきたい。この文書に対するコメントは、public-pfwg-comments@w3.orgアーカイブ)で受け付けている。また、議論が必要なコメントの場合は、wai-xtech@w3.orgアーカイブ)にも同時に送っていただきたい。コメントは2009年3月24日まで受け付けている。この文書についての進行中の更新は、公開エディターズドラフトでご覧いただける。

ワーキングドラフトとしての公開は、W3Cメンバーによって是認されたことを意味するものではない。この文書は、ドラフト文書であって、他の文書によって随時更新、置換されるか、また旧バージョンとなる可能性がある。この文書は、未完成の文書という扱いにおいてのみ、引用すべきである。

この文書は、2004年2月5日W3C特許方針に則って活動するグループによって作成された。W3Cでは、このグループの作成物に関連する全開示特許の公開リストを作成しており、そのページには、特許開示にあたっての指示も含まれている。エッセンシャルクレイムを含んでいると思われる特許について実際の知識を持っている人は、W3C特許方針のセクション6に従ってその情報を開示しなければならない。

このグループの参加者に課される開示の義務は、グループの憲章で説明されている。

目次

  1. 1. はじめに
    1. 1.1. スコープ
    2. 1.2. 使用事例
  2. 2. WAI-ARIAの使用
    1. 2.1. WAI-ARIAのロール(role)
    2. 2.2. WAI-ARIAのステート(state)とプロパティ
    3. 2.3. フォーカスの管理
    4. 2.4. WAI-ARIAを使ったアクセシブルなアプリケーションの構築
    5. 2.5. 事例:ツリーウィジェットの構築
  3. 3. 規範要件
  4. 4. ロール(role)のモデル
    1. 4.1. 概念の間の関係
      1. 4.1.1. 親のロール(role)
      2. 4.1.2. 子のロール(role)
      3. 4.1.3. 関連する概念
      4. 4.1.4. 基本の概念
    2. 4.2. ロール(role)の特性
      1. 4.2.1. 抽象のロール(role)
      2. 4.2.2. 必須のステート(state)とプロパティ
      3. 4.2.3. サポートされたステート(state)とプロパティ
      4. 4.2.4. 継承されたステート(state)とプロパティ
      5. 4.2.5. 必須の子要素
      6. 4.2.6. 親要素
      7. 4.2.7. アクセシブルな名前の計算
      8. 4.2.8. 表現的な子
    3. 4.3. ロール(role)の分類
      1. 4.3.1. 基本タイプ
      2. 4.3.2. ユーザー入力ウィジェット
      3. 4.3.3. ユーザーインタフェース要素
      4. 4.3.4. 文書構造
      5. 4.3.5. アプリケーション構造
      6. 4.3.6. ランドマークのロール(role)
    4. 4.4. ロール(role)の定義
  5. 5. サポートされたステート(state)とプロパティ
    1. 5.1. ステート(state)とプロパティの違い
    2. 5.2. ステート(state)とプロパティの特性
      1. 5.2.1. 関連する概念
      2. 5.2.2. 使用しているロール(role)
      3. 5.2.3. 継承しているロール(role)
      4. 5.2.4.
    3. 5.3. ステート(state)とプロパティの値
    4. 5.4. グローバルなステート(state)とプロパティ
    5. 5.5. ARIAにおけるステート(state)とプロパティのタクソノミー
      1. 5.5.1. ウィジェット属性
      2. 5.5.2. ライブリージョン属性
      3. 5.5.3. ドラッグ&ドロップ属性
      4. 5.5.4. 関係属性
    6. 5.6. ステート(state)とプロパティの定義(すべての「aria-*」属性)
  6. 6. ホスト言語での実装
    1. 6.1. ホスト言語での実装に関する一般要件
      1. 6.1.1. ロール(role)属性
      2. 6.1.2. ステート(state)およびプロパティ属性
      3. 6.1.3. フォーカスのナビゲーション
      4. 6.1.4. ホスト言語との衝突の解決
    2. 6.2. モジュール化勧告を使用した実装
  7. 7. 適合
    1. 7.1. ホスト言語への干渉回避
    2. 7.2. DOM内のすべてのWAI-ARIA
    3. 7.3. DOMの変更のウェブアプリケーションへの通知
  8. 8. 品質保証
    1. 8.1. 適用可能なWAI-ARIAのロール(role)
      1. 8.1.1. 要件が機能的である
      2. 8.1.2. 概要
      3. 8.1.3. ステップ・バイ・ステップ
      4. 8.1.4. 明示的なWAI-ARIAのロール(role)の規則
    2. 8.2. アクセシビリティAPIへのマッピング
    3. 8.3. オーサリング手法
      1. 8.3.1. オーサリングツール
      2. 8.3.2. テスティング手法およびツール
    4. 8.4. 支援技術
  9. 9. 補足資料
    1. 9.1. 実装
      1. 9.1.1. ロール(role)の実装
      2. 9.1.2. ARIA属性モジュール
      3. 9.1.3. サンプルXHTMLとARIA DTD
      4. 9.1.4. XHTML+ARIAのためのSGMLオープンカタログエントリ
      5. 9.1.5. ARIA属性XMLスキーマモジュール
    2. 9.2. 用語集
    3. 9.3. 参考文献
    4. 9.4. 謝意
      1. 9.4.1. プロトコル・フォーマット・ワーキンググループの参加者(発行時点)
      2. 9.4.2. プロトコル・フォーマット・ワーキンググループの過去のアクティブな参加者およびARIA仕様への協力者
      3. 9.4.3. 資金援助

1. はじめに

このセクションは、参考情報である。

ウェブアクセシビリティという分野は、障がいのある人にとってどのようにすればウェブコンテンツが使いやすくなるかを定めるものである。障がい者のなかには、コンテンツを閲覧・操作するにあたって支援技術を使っている人もいる。支援技術とは、表現をユーザに適した形式に変換して、開発者が設計したのとは異なる様々な方法により、ユーザが閲覧・操作できるようにするものである。これを効果的に達成するには、ソフトウェアがコンテンツのセマンティクスを理解しなければならない。セマンティクスとは、ロール(role)、ステート(state)、プロパティについての情報で、人間が理解するのと同様の意味でコンテンツ要素に適用される。例えば、ある段落がセマンティクス的に段落であると認識されれば、支援技術は、その段落の正確な境界線を知ったうえで、コンテンツの他の部分から分けられる単位として扱えるようになる。やや複雑な例としては、スライダーやツリーのウィジェットが挙げられる。これらのウィジェットの様々な部分にはセマンティクスがあり、支援技術が有効なインタラクションをサポートするためには、そのセマンティクスが適切に認識されなければならない。

新しい技術は、アクセシビリティに必要なセマンティクスをしばしば見落としているうえ、新しいオーサリング手法も、これらの技術の本来意図されていたセマンティクスを誤使用していることがよくある。その言語において定義されたある意味を持った要素が、本来ユーザに理解してもらうべきものとは異なる意味で使われている。

例えば、ウェブアプリケーション開発者は、折り畳めるツリーウィジェットを作成するにあたって、HTMLには適切なセマンティクス要素がないにもかかわらず、CSSとJavaScriptを使ってHTMLでツリーウィジェットを作ることができる。障がいのないユーザーにとっては、折り畳めるツリーウィジェットのように見え、かつ動作するかもしれない。しかし、適切なセマンティクスがないと、支援技術はこれをツリーウィジェットとして認識しないため、障がいのある人にとっては知覚可能ではなかったり、操作可能ではなかったりすることがある。

WAI-ARIAの実装は、ウィジェットのアクセシビリティ、ユーザビリティ、および支援技術との相互運用性を確保するために、開発者がカスタムウィジェットに適切なセマンティクスを提供できる方法の一つである。この仕様では、コンテンツに付けられるロール(role)のオントロジーを提供することによって、アクセシビリティ製品が一般に認識するウィジェットや構造のタイプを特定していく。ロール(role)を与えられた要素は、実装技術から継承されたセマンティクスに関係なく、特定のウィジェットまたは構造タイプとして理解されるようになる。ロール(role)とは、プラットフォームのアクセシビリティAPIの一般的なプロパティだ。支援技術は、これを使って、有効な表現とインタラクションをユーザーに提供できるようになる。

このロール(role)タクソノミー(系統的な階層分類)には、文書構造を示すインタラクションウィジェットと要素が含まれている。ロール(role)タクソノミーは、継承関係と、各ロール(role)がサポートする付加的な属性の詳細を説明する。アクセシビリティAPIのロール(role)に対するマッピングについての情報は、WAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION] で提供されている。

ロール(role)は、要素タイプであるため、時間やユーザーアクションによって変化すべきではない。要素のロール(role)が当初の値から変更されると、アクセシビリティAPIイベントによって処理され、古い要素が削除されて新しいロール(role)を持った新しい要素が挿入される可能性が高い。

ステート(state)およびプロパティとは、インタラクションに影響する要素やインタラクションを説明する要素の重要な属性を宣言するのに使われるもので、これらの属性によって、ユーザーエージェントやオペレーティングシステムが適切に要素を処理し、これらの属性がクライアントサイドのスクリプトによって動的に変更されるとしても、対応できるようになる。例えば、スクリーンリーダー、音声入力ソフト、オンスクリーンキーボードといった代替入出力技術は、様々なステート(state)(無効化されている、チェックされているなど)を認識し、ユーザーに対して効果的に伝達できなければならない。

支援技術が文書オブジェクトモデル [DOM] を介してこれらのプロパティに直接アクセスすることは可能だが、ユーザーエージェントにとって好ましいのは、オペレーティングシステムのアクセシビリティAPIに対してステート(state)とプロパティをマッピングするメカニズムだ。これについては、WAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION] を参照してほしい。

図1は、典型的な文書オブジェクトモデル [DOM] のノードを示している。DOMノードおよび支援技術内に置かれているのが、ユーザーエージェントから支援技術に提供される「規約」を含んだボックスだ。このデータには、アクセシブルなGUIプラットフォームの多くに対応するアクセシビリティAPIで一般的に使われているアクセシビリティ情報(ロール(role)、ステート(state)、選択、イベント通知、関係情報、記述)が含まれている。

アクセシビリティAPIの規約のモデル

図1:アクセシビリティAPIの規約のモデル

インタラクティブなコンテンツをアクセシブルにするためのロール(role)の使用方法については、WAI-ARIA入門書 [ARIA-PRIMER] を参照してほしい。

また、文章で説明したこの文書のほかに、ロール(role)タクソノミーは、リソース記述フレームワーク [RDF] の実装であるウェブオントロジー言語 [OWL] でも提供されている。コンテンツ文書内のロール(role)の実装を検証する作業は、ツールで行うこともできる。例えば、一部のロール(role)のインスタンスは、特定の親ロール(role)に対する子となることが期待されている。また、特定のステート(state)またはプロパティをサポートするロール(role)や、反対にサポートしないロール(role)などもある。

注:将来の拡張性をサポートするために、RDFおよびOWLを正式なロール(role)の表現として使える可能性がある。標準的なRDFおよびOWLのメカニズムは、この仕様で定義されたロール(role)から継承される新しいロール(role)を定義するのに使うことができる。ただし、ロール(role)の拡張を相互運用が可能なように定義して使用するためのメカニズムは、この仕様では定義していない。将来のARIAのバージョンでは、ロール(role)拡張の方法が定義されるだろう。

1.1. スコープ

この仕様の目的としては、以下の点が挙げられる。

このドラフトでは、現在、ロール(role)の2つの側面を取り上げている。ユーザーインターフェースの機能と構造的な関係だ。インタラクティブコンテンツをアクセシブルにするためのロール(role)の使用方法については、WAI-ARIA入門書 [ARIA-PRIMER] を参照してほしい。

ロール(role)タクソノミーの目的の1つは、プラットフォームのアクセシビリティAPIで一般的に使われるロール(role)をサポートすることにある。動的なウェブコンテンツがこのタクソノミー内のロール(role)を参照することによって、支援技術との相互運用性をサポートすることができる。

この標準をサポートするスキーマは拡張可能なように作られており、基本のロール(role)を拡張することによって、カスタムロールが作成できるようになっている。この結果、ユーザーエージェントは、少なくとも基本のロール(role)をサポートし、さらにカスタムロールをサポートするユーザーエージェントは、高いレベルのアクセシビリティを実現できるようになる。これらのほとんどは、XMLスキーマ [XSD] で正式化できるだろう。しかし、baseConceptsとより記述的な定義のように、ロール(role)間の類似性を定義する機能は、XSDでは利用できない。この拡張性は可能ではあるが、この仕様の現在のバージョンでは、この拡張の達成方法を定義していない。

WAI-ARIAは、一連の情報リソースによってサポートされている。WAI-ARIAのためのロードマップ [ARIA-ROADMAP] のほかに、WAI-ARIA入門書 [ARIA-PRIMER] では、ARIAの背景にある概念や理由についての基本的な説明を提供し、またWAI-ARIAベストプラクティス [ARIA-PRACTICES] では、ウェブコンテンツ開発者向けの推奨使用パターンを説明している。さらに、WAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION] では、ユーザーエージェントがどのようにしてARIAの機能をプラットフォームのアクセシビリティAPIに開示すべきかを説明している。これらの文書は、WAI-ARIAの実践的なプラクティスを学びたいと考えている開発者のために作られている。

1.2. 使用事例

キーボードで操作可能なコンテンツは、代替入力機器を使っている人にとって有益だ。この新しいセマンティクスを、WAI-ARIAベストプラクティス [ARIA-PRACTICES] で提供されている推奨キーボードインタラクションと併せて使うことにより、代替入力ソリューションを介したコマンドやコントロールの使い勝手を向上することができる。

ARIAでは、タクソノミーとXHTMLロール(role)ランドマークの両方を通じたナビゲーションランドマークを導入する。これにより、キーボードナビゲーションが向上し、巧緻性や視覚に障害のある人に役立つだろう。ARIAはまた、認知障がい、学習障がいのある人の支援にも使える。セマンティクスを付加することによって、開発者は、必要に応じて代替コンテンツを再構成および代用できるようになる。

支援技術は、ウィジェットの現在の値を取得し設定することによって、代替入力をサポートする必要がある。支援技術はまた、どのオブジェクトが選択されているかを判断し、リストボックスやグリッドのように複数選択を許可するウィジェットを管理する必要がある。

ARIAは、ネイティブ言語のセマンティクスに取って代わるものではなく、補足するものとして使うことを意図している。ホスト言語がARIAの機能に相当する機能を提供している場合は、ホスト言語の機能を使用し、ARIAは、ホスト言語に必要なロール(role)ステート(state)、またはプロパティの指示がない場合のみ使用すべきである。まず、ARIAの機能にできるだけ近いホスト言語の機能を使用し、その後でARIAを追加してその意味を細かく指定する。例えば、複数選択が可能なグリッドは、テーブルとして実装し、その後でARIAを使って、これが単なるテーブルではなくグリッドであることを明確にする。これにより、ユーザーエージェントがARIAをサポートしていない場合でも、可能なかぎり最善の道を用意し、同時にホスト言語のセマンティクスの完全性を維持できるようになる。

2. WAI-ARIAの使用

このセクションは、参考情報である。

文書の大部分の背後に置かれているセマンティクスを支援技術が見極められない場合、あるいはユーザーが文書の全部を使えるようなかたちで有効にナビゲートできない場合、複雑なウェブアプリケーションは、アクセシブルとは言えなくなる(WAI-ARIA入門書 [ARIA-PRIMER] を参照)。ARIAでは、セマンティクスをロール(role)(ユーザーインタフェース要素を定義するタイプ)、およびロール(role)がサポートするステート(state)プロパティに分けている。

開発者は、文書のライフサイクル中に文書内の要素ARIAのロール(role)および適切なステート(state)とプロパティ(「aria-*」属性)に関連付けなければならない。

2.1. WAI-ARIAのロール(role)

ARIAロール(role)は、XHTMLRole属性モジュール [XHTML-ROLES] で定義されているrole属性に似たrole属性を使って、要素に設定される。

<li role="menuitem">Open file…</li>

この仕様で定義されているロール(role)には、一連の文書ランドマークARIAのロール(role)タクソノミーが含まれている。

このタクソノミー内のロール(role)は、各ロール(role)に期待される動作を文書化するためにRDF/OWL [OWL] を用いてモデル化されている。ロール(role)タクソノミーの機能は、各ロール(role)について、次の情報を提供している。

ロール(role)を付けることによって、支援技術は、各要素をどのように処理すべきかについての情報が得られるようになる。

2.2. WAI-ARIAのステート(state)とプロパティ

ARIAでは、様々なOSプラットフォーム上のプラットフォームのアクセシビリティAPIをサポートするのに使われる、アクセシビリティのステート(state)プロパティの一式を提供している。支援技術は、開示されたユーザーエージェントのDOMを介して、あるいはプラットフォームのアクセシビリティAPIへのマッピングを介して、この情報にアクセスできる。これをロール(role)と合わせることによって、ユーザーエージェントは、どのようなインスタンスにおいてもタイミング良くユーザーに対して情報をレンダリングするための情報を、支援技術に提供できるようになる。そして、ステート(state)またはプロパティに変化があれば、支援技術に通知し、これを受けて支援技術は、変更をユーザーに通知することができる。

以下の例では、チェック可能なメニュー項目を作るのにリスト項目(html:li)が使われていて、JavaScriptのイベントがマウスとキーボードのイベントをとらえることにより、aria-checkedが切り替わるようになっている。また、この単純なウィジェットの動作をユーザーエージェントに知らせるために、ロール(role)が使われている。ユーザーアクションを受けて変わる属性aria-checkedなど)については、ステート(state)とプロパティのセクションで定義する。

<li role="menuitemcheckbox" aria-checked="true">Sort by Last Modified</li>

アクセシビリティのステート(state)のなかには、ユーザーエージェントによって制御されるものもあり、これらは管理されたステート(state)と呼ばれている。管理されたステート(state)の例としては、キーボードフォーカスと選択がある。多くの場合、管理されたステート(state)は、対応するCSSの擬似クラス(:focus::selectionなど)があって、これが表示スタイルの変更を定義している。反対に、この仕様で説明されるステート(state)は、一般に開発者によって制御されていて、管理されていないステート(state)と呼ばれている。ステート(state)のなかには、ユーザーエージェントによって管理されているが、開発者が上書きできるものもある。例えば、aria-posinsetaria-setsizeがこれに該当する。開発者は、DOMが完全でなく、ユーザーエージェントの計算が不正確になる場合のみ、これらのステート(state)を上書きすべきである。管理されたステート(state)も管理されていないステート(state)も、ユーザーエージェントによって、プラットフォームのアクセシビリティAPIにマッピングされる。

最近のユーザーエージェントのほとんどは、CSS属性セレクタ([CSS] 、セクション5.8)をサポートしていて、ARIAの属性情報に基づいたUIの変更を開発者が作成することで、等価な機能を作るのに必要となるスクリプトの量を減らしている。以下の例では、aria-checked属性の値に基づいたCSSセレクタを用いて、チェックマークの画像が表示されているのかどうかを示している。

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

注:この文書の執筆時点で、このCSSの例は、技術的には正しいものの、一部のブラウザでは、属性の値が動的に変更されると、表示スタイルが適切に変更されない。クラス名をトグルで切り替えるか、さもなければブラウザに適切な表示スタイル変更を強制する必要があるかもしれない。

2.3. フォーカスの管理

application(role)は、その使用中には、フォーカスの置かれた要素を常に持っているべきだ。アプリケーションでは、ユーザ入力を提供する場所をユーザが保持している必要があるからである。そして、このフォーカスが置かれた要素は、破壊されたり隠されたり、スクリーン外にスクロールすべきではない。また、あらゆるインタラクティブ要素は、フォーカス可能になっているべきである。キーボードを使っているユーザーのために、見つけやすい明らかな方法、例えばタブ送り(Tabキー操作)やその他の標準的なナビゲーション方法を提供して、インタラクティブな要素すべてに移動できるようにする必要がある。詳しくは、ユーザーエージェント・アクセシビリティ・ガイドラインのガイドライン9([UAAG] 、ガイドライン9)で参照できる。

アプリケーション開発者は、標準的な(X)HTMLと基本的なWAI-ARIAウィジェットを使って、単純にタブ順序(Tabキーでフォーカスが移動する順序)を制御するか、文書内の要素に対してキーボードショートカットを作成するためのスクリプトを使用することができる。より複雑なウィジェットを使うには、開発者がそのウィジェット内でフォーカスを管理する必要がある。

WAI-ARIAには、多数の「管理コンテナ」ウィジェット(「コンポジット」ウィジェットとして知られていることもある)が含まれている。一般にコンテナとは、アクティブとされていた最後の子孫(デフォルトではたいていがコンテナ内の最初の項目となっている)を把握する責任を負うものである。以前にフォーカスの置かれていたコンテナに再びフォーカスが置かれる場合は、新しくアクティブになる子孫が、最後にそのコンテナにフォーカスが置かれていた時にアクティブだった子孫と同じ要素であるべきだ。例えば、ユーザーがTabキーを使ってツリーグループから外に出た時点で、そのツリーグループの2つ目の項目がアクティブだったのであれば、このツリーグループに再びフォーカスが置かれる際は、この2つ目の項目がアクティブな子孫となる。また、ユーザーが、コンテナ内の子孫のいずれかをクリックすることによって、そのコンテナをアクティブとすることもできる。

コンテナ内の何かにフォーカスが置かれていれば、ユーザーは、矢印キーなどの付加的なキーを押すことでコンテナをナビゲートして、現在の項目から相対的に移動できる。メインのナビゲーションキー(一般にはTabキー)をさらに押せば、コンテナの外に出て、次のウィジェットへと移動できるだろう。

例えば、gridを用いたスプレッドシートに数千というgridcell要素が含まれていて、ただしそれら全部が一度には見えないようになっているとしよう。この場合、フォーカスは、管理コンテナ要素上のaria-activedescendant属性を使ったコンテナによって管理するか、その子要素のtabindexを管理して適切な子にフォーカスを置いているコンテナによって管理しなければならなくなる。詳しくは、WAI-ARIAベストプラクティスの「キーボードフォーカスの提供」([ARIA-PRACTICES] 、セクション3.2)を参照してほしい。

この方法でフォーカスを管理するコンテナには、以下のものがある。

フォーカスの管理についての詳しい情報は、WAI-ARIAベストプラクティス [ARIA-PRACTICES] の「ウィジェット間のフォーカス管理のためのtabindexの使用」のセクションを参照してほしい。

2.4. WAI-ARIAを使ったアクセシブルなアプリケーションの構築

このセクションでは、ARIAを使ってアプリケーションをアクセシブルにする方法について、その導入部分を簡単に説明する。ロール(role)をどのように選び、使用するかは、複雑で、文脈によっても異なる可能性がある。可能性のあるARIAの使用事例すべてについて実装方法を説明するのは、この文書のスコープを超えているが、ARIAベストプラクティス [ARIA-PRACTICES] では、ARIAの実装方法に関する詳細な手引き、およびサンプルコードのリファレンスを提供している。

アプリケーションをアクセシブルにする最初のステップは次の通りである。

  1. 要素またはウィジェットのそれぞれに正しい完全なセマンティクスがあり、そのセマンティクスが(要素名とロール(role)を使用して)動作を十分に記述している。
  2. 要素とグループの間の関係が定義されている。
  3. ステート(state)プロパティ、コンテナの関係が各要素の動作に対して有効で、かつ文書オブジェクトモデル [DOM] とプラットフォームのアクセシビリティAPIを介してアクセスできるようになっている。
  4. キーボードフォーカスは、ユーザーがアプリケーションを閲覧・操作している間中、保持されるべきである。
  5. すべてのインタラクティブなコンポーネントが、キーボードで操作可能であるべきである。

ARIAでは、ウェブアプリケーションの様々な要素をセマンティクス的にリッチにする方法を、開発者に提供している。ユーザーエージェントは、ロール(role)のセマンティクスを使って、各要素をどのように扱うべきかを理解する。支援技術がアプリケーション内の要素の動作を予期するにあたって必要とする付加情報、例えば、対応するARIAのステート(state)とプロパティをどのようにユーザーに提示するかといった情報を、ロール(role)は提供する。ユーザーエージェントは、ホスト言語からのアクセシビリティ・セマンティクスとARIAのアクセシビリティ・セマンティクスを使用して(後者が前者を補足または上書きすることがある)、文書オブジェクトモデルまたはプラットフォームのアクセシビリティAPIを介して支援技術にセマンティクスを提供する。ユーザーエージェントは、ウェブページ内の各要素をアクセシブルな方法で提示し、それらの要素のセマンティクスが変更されれば、適切なアクセシビリティAPIを使って、支援技術にそれを伝える。

以下のステップは、コンテンツに対してARIAを適用する際に推奨されるステップである。

  1. 可能なかぎりネイティブのマークアップを使用する

    ホストマークアップ言語で定義されたセマンティクス要素を使用する。例えば、HTMLまたはXHTMLでは、checkboxのロール(role)が付いたdiv要素を使うよりも、ネイティブのチェックボックスを使うほうが好ましい。これらがすでに、ブラウザを介してアクセシブルになっていると予想できるためだ。また、ホスト言語にすでに存在する要素をARIAが補足できるケースもあるかもしれない。例えば、gridgridcellの要素は、テーブルにかかっていれば、その機能を再使用できる。ARIAのロール(role)、ステート(state)、およびプロパティは、マークアップ言語が必要なすべてのセマンティクスをサポートしていない場合にのみ使うのがベストだ。role属性が要素に追加されると、その要素のセマンティクスと動作は、roleの動作によって上書きされる。

  2. 適切なロール(role)を適用する

    予期可能なように要素が動作し、要素の動作がネイティブのマークアップ言語で完全に記述されていなければ、各要素のアプリケーション内での動作を正確に記述するように、ロール(role)を設定する。インタラクティブな要素のロール(role)は、その要素が使う可能性のある属性をすべてサポートしているべきである。一度設定したrole属性は、変更すべきではない。role属性を変更すれば、エンドユーザーを混乱させる可能性があるためだ。これには、role属性が設定されている要素を削除することも含まれる。要素においては、ステート(state)とプロパティ(「aria-*」の属性)のみが変更されるべきである。

  3. セマンティクスの構造を守る

    構造情報は、障がいのある人に文脈を提供するうえで非常に重要である。構造要素内およびウィジェット内ではDOMの階層構造を守り、ユーザインターフェースウィジェット内ではgroup内のtreeitem要素のような論理グループを形成する。具体的には、ページ内のグループを見つけたうえで、その利用目的を最も的確に記述するロール(role)を使って、そのグループをマークする。例えば、Ajaxアプリケーションを介して変更される可能性が高い要素のグループを含んだページのリージョンは、aria-live属性を使用してライブリージョンと指定することができる。また、文書ランドマークを使用して、キーボードナビゲーションを容易にする。フルキーボードアクセスと文書セマンティクスを提供すれば、視覚や巧緻性に障がいのあるユーザー、さらには認知障がい、学習障がいのあるユーザーも含み、すべての人に役立つ。

  4. 関係を構築する

    要素間の関係を見極めたうえで、最も適切なプロパティまたは属性を使って、その要素をマークする。例えば、あるページに検索フォームと検索結果のリージョンが両方含まれていれば、各コンテナをregionとマークしたうえで、検索フォームが検索結果を参照するように、検索フォームのaria-controls属性を設定する。詳しくは、WAI-ARIAの「関係」のセクションを参照してほしい。

    関係のなかには、ホスト言語から自動的に決定されるものもある。例えば、HTMLinput要素に関連付けられたlabel要素がこれに該当する。

  5. イベントへの応答としてプロパティを設定する

    要素のロール(role)を設定後、その要素のライフサイクル中の変化に適切なように、ステート(state)とプロパティを変化させる。これは通常、ユーザーの入力イベントへの応答として行われる。選択したロール(role)または要素にサポートされている属性だけを使用しなければならない。

    ステート(state)に変化があれば、ユーザーエージェントが支援技術に通知すべきである。一方、支援技術によるプロパティ変更の通知は、支援技術がユーザーエージェントと通信するのに使う方法によって異なってくる。例えば、aria-multiline属性(プロパティ)は頻繁に変わるものではないが、aria-checked属性(ステート(state))はユーザー入力への応答として頻繁に変更される。

  6. 使いやすい完全なキーボードナビゲーションをサポートする

    リッチ・インターネット・アプリケーションにおける使いやすいキーボードナビゲーションとは、静的な文書をタブ送り(Tabキー操作)でナビゲートすることとは異なる。リッチ・インターネット・アプリケーションは、むしろデスクトップ・アプリケーションに似た動作をし、ユーザーは、大きなウィジェットを選ぶのにTabキーを使い、メニューやスプレッドシートなど、複雑なウィジェット内をナビゲートするのには矢印キーを使う。ARIAがキーボードナビゲーションに導入する変更によって、この高度なアクセシビリティが可能となる。文書内でTabキーが押された場合は、論理ナビゲーション構造に従うべきである。矢印キーのナビゲーションを実装する開発者は、可能なかぎり、WAI-ARIAベストプラクティス [ARIA-PRACTICES] で説明されている設計パターンに従うべきである。これらの機能を使う際は、常にキーボードナビゲーションが論理的になっていることを確認することが重要である。

  7. 視覚的なインタフェースとアクセシブルなインタフェースを同期化する

    これにより、ユーザーと支援技術にとってUIのステート(state)が知覚可能となる。例えば、開発者は、フォーム要素が必須となっている(aria-requiredを使用する)場合や、グリッドセルが選択されている(aria-selectedを使用する)場合に応答する関連セレクタを持っているべきである。開発者は、これらのインタフェース要素の視覚的な同期化を達成するために、スクリプトまたはCSS属性セレクタを使うことができる。文書のアクセシブルなステート(state)にUIを同期化する適切な方法については、WAI-ARIAベストプラクティス [ARIA-PRACTICES] を参照してほしい。

2.5. 事例:ツリーウィジェットの構築

ツリービューのグラフィック例

基本的なツリービューでは、ユーザーが様々なリスト項目から選択したり、子ノードのあるリストの展開と折り畳みを行ったりすることができる。ツリーのナビゲーションには矢印キーが使われ、左矢印と右矢印を使えばサブツリーの折り畳みと展開が操作できる。また、マウスでダブルクリックしても、展開のトグル変更が可能だ。

この機能をアクセシブルにするためには、次のことをする必要である。

その手順は次の通りである。

  1. ネイティブマークアップ言語を見る

    標準的なリストのふるまいは、HTMLにネイティブのul要素およびli要素でサポートされているが、リストの展開や選択をサポートするネイティブの要素はない。このため、ロール(role)を使う必要がある。

  2. 正しいロール(role)を見つける

    HTMLにはネイティブのツリー要素がないため、このタクソノミーから必要なステート(state)とプロパティをサポートするロール(role)を追加する必要がある。ツリー動作をサポートするロール(role)には、以下のものがある。

    • tree:ツリーは、WAIが提唱するツリーを作る主なコンテナ要素である。これはselectの一種で、ツリー項目のサブレベルグループの折り畳みと展開ができる。
    • treeitem:ツリー項目は、ツリーのオプション項目である。これはツリー内の要素で、ツリー項目のサブレベルグループの折り畳みと展開ができる。
    • group:グループは、サブレベルのツリー項目のセットを囲い込む。
  3. グループを見つけ、関係を構築する

    ツリーの関係は、DOMとページの論理構造だけで作ることができる。ツリー要素は、ツリー内の他のすべての要素にかかる主なコンテナとなり、選択できるツリー内の項目は、それぞれがツリー項目となる。

    ツリー項目に子ノードのあるリストが含まれる場合は、それらがすべて1つのグループとして組み込まれる。グループは、そのツリー項目内に置かれ、ツリー項目が親項目となる。

    <h1 id="treelabel">ARIA Tree Example</h1>
    <ul role="tree" aria-labelledby="treelabel" aria-activedescendant="example_id" tabindex="0">
      <li role="treeitem" aria-expanded="true">Animals
        <ul role="group">
          <li role="treeitem">Birds</li>
          <li role="treeitem" aria-expanded="false">Cats
            <ul role="group">
              <li role="treeitem">Siamese</li>
              <li role="treeitem">Tabby</li>
            </ul>
          </li>
          <li role="treeitem" aria-expanded="true">Dogs
            <ul role="group">
              <li role="treeitem" aria-expanded="true">Small Breeds
                <ul role="group">
                  <li role="treeitem">Chihuahua</li>
                  <li role="treeitem" id="example_id">Italian Greyhound</li>
                  <li role="treeitem">Japanese Chin</li>
                </ul>
              </li>
              <li role="treeitem" aria-expanded="false">Medium Breeds
                <ul role="group">
                  <li role="treeitem">Beagle</li>
                  <li role="treeitem">Cocker Spaniel</li>
                  <li role="treeitem">Pit Bull</li>
                </ul>
              </li>
              <li role="treeitem" aria-expanded="false">Large Breeds
                <ul role="group">
                  <li role="treeitem">Afghan</li>
                  <li role="treeitem">Great Dane</li>
                  <li role="treeitem">Mastiff</li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
      </li>
      <li role="treeitem" aria-expanded="true">Minerals
        <ul role="group">
          <li role="treeitem">Zinc</li>
          <li role="treeitem" aria-expanded="false">Gold
            <ul role="group">
              <li role="treeitem">Yellow Gold</li>
              <li role="treeitem">White Gold</li>
            </ul>
          </li>
          <li role="treeitem">Silver</li>
        </ul>
      </li>
      <li role="treeitem" aria-expanded="true">Vegetables
        <ul role="group">
          <li role="treeitem">Carrot</li>
          <li role="treeitem">Tomato</li>
          <li role="treeitem">Lettuce</li>
        </ul>
      </li>
    </ul>

    aria-expandedの使用は、画面上で展開表示されているものと合致すべきである。このため、開発者は、CSS属性セレクタを使い、ARIAステート(state)またはプロパティに基づいて、項目の展開表示や表示スタイルを切り替えたいと考えることがあるかもしれない。以下の例では、折り畳まれたツリーノードのサブレベルグループは、非表示となる。

    [aria-expanded="false"] [role="group"] { display: none; }

    注:この文書の執筆時点で、このCSSの例は、技術的には正しいものの、一部のブラウザでは、属性の値が動的に変更されると、表示スタイルが適切に変更されない。クラス名をトグルで切り替えるか、さもなければブラウザに適切な表示スタイル変更を強制する必要があるかもしれない。

    ツリー構造は、DOMおよびページの論理構造で明示されていないこともある。その場合は、ステート(state)とプロパティを使って関係を明示しなければならない。以下の例では、「external_listitem」のidを持ったdivが、DOMでは子とされていないにもかかわらず、このプロパティを持ったul要素の子と見なされなければならないことを、aria-owns属性が示している。

    <h3 id="header">Vegetables</h3>
    <ul role="list" aria-labelledby="header" aria-owns="external_listitem">
      <li role="listitem">Carrot</li>
      <li role="listitem">Tomato</li>
      <li role="listitem">Lettuce</li>
    </ul><div role="listitem" id="external_listitem">Asparagus</div>

    DOM内でツリーが常時完全に表現されていない場合は、構造化の手法もaria-ownsの手法も使うべきではない。代わりに、aria-levelaria-posinsetaria-setsizeを使用する。

  4. イベントへの応答としてプロパティを設定する

    キーボードやマウスを介したユーザー入力イベントに対する応答として、要素の動作を制御する。例えば、ツリーコントロールは、展開と折り畳みのトリガ上のクリックイベントに対して、および現在アクティブとなっている子孫上のキーイベントに対して、応答する必要がある。機器に依存せずJavaScriptをサポートするイベントを使用して、ユーザーのインタラクションに対応する。

3. 規定となる要件

このセクションは、規定である。

この仕様では、各セクションが規定なのか、または参考情報なのかを明記している。

規定のセクションでは、この仕様に準拠するにあたって実装時に順守しなければならない要件を示していく。この文書で使われている「なければならない」「てはならない」「必要がある」「すること」「しないこと」「べきである」「推奨される」「てもよい」「オプション」というキーワードは、要件レベルを示すためのRFCにおけるキーワードの使用 [RFC2119] で説明されているとおりに解釈できる。

参考情報のセクションは、この仕様を理解するのに役立つ情報を提供するセクションである。推奨プラクティスの例が含まれている場合もあるが、この仕様に準拠するためにこれらの推奨に従わなければならないということではない。

4. ロール(role)のモデル

このセクションは、規定である。

このセクションでは、WAI-ARIAロール(role)タクソノミーを定義し、すべてのロール(role)の特性とプロパティを説明する。ここで提供されるすべての情報は、補足資料8.1:実装で正式なRDF/OWLとして表現されている。

4.1. 概念の間の関係

ロール(role)タクソノミーでは、ARIAのロール(role)間同士、およびHTMLやXFormsといった他の仕様で使われている概念との関係を示すため、以下の関係を使用している。

4.1.1. 親のロール(role)

RDFプロパティ
rdfs:subClassOf

タクソノミー内でこのロール(role)が拡張しているロール(role)。この拡張によって、親のロール(role)のプロパティと制約がすべて子のロール(role)に伝えられる。よく知られた安定版の仕様を除き、継承は、この仕様で定義される項目に限られる可能性がある。これは、項目の変更の結果、継承されたクラスに影響を与えることがないようにするためである。

例えば、checkboxのロール(role)は、optionのロール(role)のサブクラスまたはタイプである。この場合、optionのプロパティと期待される動作が変更されれば、checkboxのプロパティと動作も変更されることになる。

継承は、RDFスキーマのsubClassOf([RDFS] セクション3.4)プロパティを使って、RDFで表現される。

4.1.2. 子のロール(role)

RDFプロパティ
<none>

このロール(role)が親となっているロール(role)を示した参考リスト。これは、この仕様を読みやすくするために提供されているが、新しい情報を追加するものではない。

4.1.3. 関連する概念

RDFプロパティ
role:relatedConcept

他の仕様に見られる同様の概念、または関連する概念についての参考データ。関連する概念とは、必ずしも同一の概念ではなく、互いからプロパティを継承することもない。このため、タイプの定義が変更されても、そのプロパティや動作、および関連する概念の定義は影響を受けない。

例えば、プログレスバーは、ステータスインジケータのようなものである。このため、progressbarウィジェットは、statusを含んだrole:relatedConceptの値を持つ。しかし、statusの定義が変更されても、progressbarの定義には影響がない。

4.1.4. 基本の概念

RDFプロパティ
role:baseConcept

そのロール(role)のプロトタイプと見なされるオブジェクトについての参考データ。基本の概念は、タイプに似ているが、制限とプロパティの継承を伴わない。基本の概念は、外部の概念の継承に代わるものとして作られた。関連する概念と似ているが、互いにとってほぼ同一物であるという点が異なっている。

例えば、この文書で定義されるcheckboxは、HTMLで定義されるチェックボックスと似た機能および動作を持っている。

このため、checkboxは、baseConceptとしてHTMLcheckboxを有している。しかし、HTMLのチェックボックスが変更されても、この文書のcheckboxには影響がない。これは、タイプの継承がないためである。

4.2. ロール(role)の特性

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

ロール(role)タクソノミーで定義する特性は、以下のとおりである。これらの特性は、OWLクラスのプロパティとしてRDFに実装され、そのロール(role)を記述している。

4.2.1. 抽象のロール(role)

RDFプロパティ
該当なし
ブーリアン

抽象のロール(role)は、他のすべてのARIAのロール(role)が構築される基礎となる。抽象のロール(role)は、APIのバインディングに実装されないため、開発者は、抽象のロール(role)を使用すべきではない。抽象のロール(role)は、以下の目的のために提供されている。

  1. ロール(role)タクソノミーを整理し、既知の概念に即した意味をロール(role)にもたらす。
  2. 必要な機能を含んだロール(role)の追加を容易にする。

4.2.2. 必須のステート(state)とプロパティ

RDFプロパティ
role:supportedState
すべての有効なRDFオブジェクトリファレンス、例えばURIRDF IDリファレンスなど

そのロール(role)と子のロール(role)に対して必須とされているステート(state)プロパティを示す。コンテンツ開発者は、必須のステート(state)とプロパティに対してを提供すべきである

オブジェクトが複数の先祖から継承されていて、1つの先祖があるプロパティのサポートを表現し、他の先祖はそのプロパティを必須としているのであれば、そのオブジェクトではそのプロパティが必須となる。

4.2.3. サポートされたステート(state)とプロパティ

RDFプロパティ
role:supportedState
すべての有効なRDFオブジェクトリファレンス、例えばURIRDF IDリファレンスなど

そのロール(role)と子のロール(role)に対して適用可能なステート(state)プロパティを示す。ユーザーエージェントは、そのロール(role)にサポートされているステート(state)とプロパティをすべて実装しなければならない。コンテンツ開発者は、サポートされたステート(state)とプロパティに対してを提供してもよい。ただし、デフォルト値で十分なため、すべてのケースに当てはまるわけではない。

4.2.4. 継承されたステート(state)とプロパティ

そのロール(role)に対して先祖のロール(role)から継承されたプロパティを参考リストとして示す。ここで示されるステート(state)プロパティは、ロール(role)タクソノミー内の先祖のロール(role)から継承されたものであって、DOMツリーの先祖の要素から継承されたものではない。プロパティの継承は自動的に行われるため、これらのプロパティは、そのロール(role)上では明示的に定義されていない。この情報は、この仕様を読みやすくするために提供されている。継承されたステート(state)とプロパティのうち必須のものは、このフィールドで必須として示されている。サポートされたステート(state)とプロパティに、継承されたステート(state)とプロパティを合わせれば、そのロール(role)がサポートしているステート(state)とプロパティがすべて包含される。

4.2.5. 必須の子要素

RDFプロパティ
role:mustContain
すべての有効なRDFオブジェクトリファレンス、例えばURIRDF IDリファレンスなど

このロール(role)を持った要素によって所有されなければならないすべての要素を示す。例えば、listのロール(role)を持った要素は、listitemのロール(role)を持った要素を所有しなければならない。

注:あるロール(role)の「必須の子要素」として複数のロール(role)が指定されている場合は、必須の子要素のいずれか1つの少なくとも1インスタンスが必要となる。この仕様では、リストされた子要素のそれぞれにつき1インスタンスを必須としているわけではない。例えば、menuには、menuitemmenuitemcheckboxmenuitemradioいずれかの少なくとも1インスタンスがあるべきである。menuのロール(role)には、それぞれにつき1インスタンスが必要というわけではない。

注:必須の子要素は、編集中やデータセットのロード中などに、一時的に欠落することがある。

4.2.6. 親要素

RDFプロパティ
role:scope
すべての有効なRDFオブジェクトリファレンス、例えばURIRDF IDリファレンスなど

要素は、このロール(role)が許可される文脈、つまり現在のロール(role)が特定の要素内で使われるべきである場合に、その特定要素のロール(role)を定義する。

例えば、listitemのロール(role)を持った要素は、listのロール(role)を持った要素に含まれる(または所有されるべきである

4.2.7. アクセシブルな名前の計算

RDFプロパティ
role:nameFrom
以下の値のいずれかを使用する。
  1. author:開発者がマークアップ機能で明示した値から、名前が取得される。例えば、aria-label属性aria-labelledby属性、HTMLtitle属性など。
  2. contents:その要素ノードのテキスト値から、名前が取得される。ロール(role)によっては、「author」に追加するかたちでこの値を使うことが許可されている場合もあるが、この値は、「author」機能が提供されていないコンテンツでのみ使われる。
4.2.7.1. 名前の計算

アクセシブルな名前は、様々な方法で計算できるが、ここでは望ましい順に紹介する。

  1. 現在のノード上のaria-labelledbyによってポイントされたノードに対するテキスト等価物をつなげる。これは繰り返すことはなく、他のaria-labelledbyによって使われているサブツリー内のaria-labelledbyはすべて、実装によって無視されるべきである。テキスト等価物の計算については、以下の説明を参照してほしい。
  2. 現在のノードに対するテキスト等価物の計算結果を使用する。
4.2.7.2. 記述の計算

アクセシブルな記述は、現在のノード上のaria-describedby属性によってポイントされたノードに対するテキスト等価物をつなげることによって、計算できる。

4.2.7.3. テキスト等価物の計算

テキスト等価物は、上記のとおり、名前と記述の計算の両方で使われる。様々なノードのタイプとマークアップの組み合わせに対して、いくつかの規則が提供されている。テキスト等価物は、必要に応じて、要素内に含まれたすべての重要なコンテンツから構築される。これは、以下の規則2C(これは繰り返す規則である)を介して達成され、その過程では、要素自体の子からテキストを取得するための一連の規則をすべて利用する。

任意のノードに対するテキスト等価物は、以下のように計算される。

  1. 開発者がaria-labelledbyまたはaria-describedbyを使って指定していないかぎり、非表示の要素は現在の計算から除外される。支援技術のユーザーは、デフォルトでは非表示の情報を受け取らない。しかし、開発者が、それを明示的に上書きして、非表示の情報を含むことができるようになっているべきである。
  2. 計算に含まれるすべての要素に対して、以下が適用される。
    1. 要素は、DOM属性内のテキスト等価物を指定することができる。その場合は、以下の順に従って指定するのが望ましい。
      • この計算が、他のaria-labelledbyの結果としてすでに起こっているのでないかぎり、aria-labelledby属性が使用される(つまり、aria-labelledbyは繰り返すものではなく、ループを引き起こすことがない)。ポイントされたすべてのノードに対するテキスト等価物が、同じ規則のセットを使用してつなげられる。
      • aria-label属性、すわなち単なるテキスト文字列が、次に使われる。
      • 非ツールチップのすべてのネイティブマークアップ(例えば、HTMLimg要素のalt属性)、またはこの要素をポイントしているラベルのサブツリー(例えば、HTMLlabel要素のfor属性)が、そのマークアップの適切な仕様によって定義された規則に則って使用される。
    2. ユーザー入力データの付加的な使用:規則Aで取得したテキストに加え、フォームコントロールでは、ユーザー入力データが最終的な計算名の一部となる。ただしこれは、フォームコントロールが、より大きなラベルの文脈において意味のある情報を提供する立場に置かれている場合に限られる。ユーザー入力データは、そのフォームコントロールで使われている他のすべてのラベルマークアップが使われた後で付加されるべきである。例えば、ARIAslider要素でユーザーが入力した値は、aria-valuetextまたはaria-valuenowの等価な文字列となる。テキストフィールドの場合は、ユーザーが入力したデータが、そのフィールドのテキストとなる。
    3. 規則AとBに則ってDOM属性を確認したにもかかわらず結果が得られなかった場合は、現在の要素のロール(role)が名前の取得元として「contents」を許可するのであれば、子孫のコンテンツからテキストが取得される。子のノードに対するテキスト等価物が、同じ規則のセットを使用してつなげられる。この同じ規則は、子にも適用される可能性がある。つまり、計算が繰り返しになり、ノードがどれだけ深くても、すべてのサブツリーのすべてのノードにわたって、テキストが取得されることを意味する。ただし、その代わりとして、より望ましい上記AとBのマークアップから、子孫のサブツリーが自らのテキスト等価物を取得することもできる。開発者が指定するこれらの属性は、そのサブツリー全体に対して正しいテキスト等価物を提供するものと見なされている。結果的に、これらのノード規則は、子孫からテキスト等価物が取得される間中、一貫して適用される。それらの子孫の各コンテナ要素は、そのコンテンツの使用を許可する場合もあれば許可しない場合もある。
    4. 最後の手段として、ツールチップマークアップのテキストを使用する方法がある(例えば、HTMLtitle属性)。これは、サブツリーのコンテンツを含めても何も結果が得られなかった場合にのみ、使われる。
  3. テキストノードは、規則2Cを使用して子からテキストを集める要素の子となっているため、しばしば参照される。テキストノードでは、提示されるテキストが、DOMのテキストコンテンツよりも使われる。これは、オリジナルのソースから不要な空白スペースを削除し、リスト項目の個条書きのようにCSSで生成されるテキストを含むのに役立つ。

注:テキスト等価物の文字列をフラットに生成する目的は、代替表現で読めるものを作ることにある。視覚的には分離している要素が、同じ文字列に詰め込まれてしまう場合は、実装によって空白スペースの文字が挿入されるべきである。例えば、記述のなかで2つの段落が続けて書かれている場合は、その間にスペースを挿入できる。

詳しくは、WAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION] の「アクセシブルな名前の計算」を参照してほしい。

4.2.8. 表現的な子

RDFプロパティ
role:childrenArePresentational

ブーリアン(true | false)

DOMの子が、表現的であることを示す。ユーザーエージェントは、プラットフォームのアクセシビリティAPIを介してこの要素の子孫を開示すべきではないユーザーエージェントが子孫を隠さなければ、情報が二重に読まれる可能性がある。

4.3. ロール(role)の分類

現在のユーザーシナリオをサポートするため、この仕様では、ユーザーインタフェースウィジェット(スライダー、ツリーコントロールなど)を定義するロール(role)とページ構造(セクション、ナビゲーションなど)を定義するロール(role)を分類している。

ロール(role)データモデルで記述された関係のクラス図

ロール(role)データモデルで記述された関係のクラス図

クラス図を拡大して見る

ロール(role)は、以下のように分類されている。

  1. 基本タイプ
  2. ユーザー入力ウィジェット
  3. ユーザーインタフェース要素
  4. 文書構造
  5. 特別なリージョン
  6. ランドマークのロール(role)

4.3.1. 基本タイプ

以下のロール(role)は、適用されるロール(role)の基本タイプとして使われる。基本のクラスは、ロール(role)タクソノミーのクラス階層構造で最も高いレベルを記述するのに使われる。このセクションのロール(role)はすべて抽象のロール(role)だが、抽象のロール(role)がすべてこのセクションに含まれているわけではない。このセクションでは、タクソノミー内で最もレベルの高い抽象のロール(role)のみを取り上げている。

注:抽象のロール(role)は、オントロジーに使われる。開発者は、コンテンツ内で抽象のロール(role)を使用すべきではない

4.3.2. ユーザー入力ウィジェット

以下のロール(role)は、フォーム要素として、またはその他の一般的なユーザーインタフェースウィジェットとして機能し、ユーザー入力を収集、維持するのに使われる。

4.3.3. ユーザーインタフェース要素

以下のロール(role)は、グラフィカルユーザーインタフェースの一部として使われる。

4.3.4. 文書構造

以下のロール(role)は、ページ内のコンテンツを組織化する構造を記述する。文書構造は、通常、インタラクティブではない。

4.3.5. アプリケーション構造

以下のロール(role)は、アプリケーションユーザーインタフェース内の特別に囲い込まれた領域である。

4.3.6. ランドマークのロール(role)

以下のロール(role)は、ナビゲーションランドマークとして意図されたページのリージョンである。これらのロール(role)はすべて、landmarkの基本タイプを継承するが、ただしapplicationは例外となる。また、これらのロール(role)はすべて、XHTML Role属性モジュール [XHTML-ROLES 、セクション4] からインポートされている。これらのロール(role)は、明らかなかたちでARIAのロール(role)タクソノミーの一部とするために取り上げられている。

4.4. ロール(role)の定義

以下は、リッチ・インターネット・アプリケーションの開発者が用いるべきARIAロール(role)をアルファベット順に示したものである。

注:抽象のロール(role)は、オントロジーに使われる。開発者は、コンテンツ内で抽象のロール(role)を使用すべきではない

alert
重要な情報を伴ったメッセージ。通常は、タイムリーな提示が必要とされる情報を伴う。alertdialogおよびstatusも参照。
alertdialog
アラートメッセージを伴ったダイアログの一種。初期のフォーカスは、このダイアログまたはダイアログ内の要素に置かれる。alertおよびdialogも参照。
application
ウェブのdocumentではなく、ウェブアプリケーションとして宣言されたリージョン。
article
文書、ページ、またはサイト内の独立した個所を形成するページのセクション
banner
大見出し(標題)またはウェブサイトのタイトルを含むリージョン。
button
クリックされたり押されたりした際に、ユーザが起こしたアクションを可能にする入力。
checkbox
「true」「false」「mixed」の3つの値を持つ可能性があるチェック可能な入力。
columnheader
列の見出し情報を含んだセル。
combobox
selectの表現の1つ。あるいは任意のテキストをリスト内の新しい項目として入力できるtextboxに似ている。
complementary
メインのコンテンツから切り離しても意味を持つ、文書の補足的なセクション。
composite(抽象のロール(role))
ナビゲーションできる子孫または所有された子を含む可能性があるウィジェット。
contentinfo
親の文書に適用されるメタデータ。
definition
用語または概念の定義。
dialog
ダイアログはアプリケーションウィンドウで、アプリケーションが処理中にそれを中断してユーザーに情報入力または応答を促すためのもの。Alertdialogも参照。
directory
静的な目次のように、1つのグループ内の複数のメンバーに対するリファレンスのリスト。
document
関連する情報を含み、ウェブのapplicationではなく、文書コンテンツとして宣言されているリージョン。
grid
グリッドには、テーブルと同様に、行と列に配列された表形式のデータセルが含まれる。
gridcell
グリッドまたはツリーグリッド内のセル。
group
ユーザーインタフェースオブジェクトの1セットで、支援技術によってページサマリまたは目次に含まれることがないセクション。
heading
ページ内の1セクションに対する見出し。
img
1つの画像を形成する複数の要素のためのコンテナ。
input(抽象のロール(role))
ユーザー入力を許可するウィジェットの一般的なタイプ。
landmark(抽象のロール(role))
ナビゲーションランドマークとして意図されたページのリージョン。
link
内部または外部のリソースに対するインタラクティブなリファレンス。
list
非インタラクティブなリスト項目のグループ。
listbox
ユーザーが選択肢のリストから1つまたは複数の項目を選ぶのを許可するウィジェット。
listitem
リスト、リストボックス、またはディレクトリ内の1項目。
log
新しい情報が意味のある順番に追加され、また古い情報が消されることもあるライブリージョンのタイプ。marqueeも参照。
main
文書内のメインのコンテンツ。
marquee
重要でない情報が頻繁に変更されるライブリージョンのタイプ。logも参照。
math
数学表現のための要素。
menu
ユーザーに選択肢のリストを示すウィジェットのタイプ。
menubar
通常は常に表示され、また横方向に提示されるmenuの表現。
menuitem
menuまたはmenubarに収められた複数の選択肢のうちの1オプション。
menuitemcheckbox
「true」「false」「mixed」の3つの値を持つ可能性があるチェック可能なメニュー項目。
menuitemradio
menuitemradioというロール(role)のグループにあるチェック可能なメニュー項目で、一度に1項目だけがチェックできる。
navigation
文書または関連する文書をナビゲートするためのナビゲーション要素(通常はリンク)の集合。
note
そのリソースのメインのコンテンツに対して挿入的または付随的なコンテンツのセクション。
option
selectのリスト内にある選択可能な1項目。
presentation
表現的なロール(role)を持ち、アクセシビリティAPIにマッピングする必要がない要素。
progressbar
長時間かかるタスクの進行状況を表示する要素。
radio
radioというロール(role)のグループにあるチェック可能な入力で、一度に1つだけがチェックできる。
radiogroup
ラジオボタンのグループ。
range(抽象のロール(role))
ユーザーが設定可能な値の範囲を表現する入力。
region
ウェブページまたは文書のなかで知覚可能な大きいセクションで、開発者がページ機能のサマリに含むべきではないかと思うセクション。
roletype(抽象のロール(role))
タクソノミーに含まれる他のすべてのロール(role)が継承する基本のロール(role)。
row
グリッド内のセルの行。
rowheader
グリッド内の行の見出し情報を含んだセル。
search
ウェブ文書の検索ツール。
section(抽象のロール(role))
文書またはアプリケーション内にある、レンダリング可能で構造的なコンテナの単位。
sectionhead(抽象のロール(role))
関連するセクションのトピックにラベルを付ける、またはトピックを要約する構造。
select(抽象のロール(role))
ユーザーが複数の選択肢から選ぶのを許可するフォームウィジェット。
separator
コンテンツのセクションまたはメニュー項目のグループを区切って区別するための仕切り。
slider
与えられた範囲内でユーザーが値を選ぶユーザー入力。
spinbutton
個別の選択肢のなかからユーザーが選べるようになっているrangeのフォーム・コントロール。
status
ユーザーへの助言情報だが、アラートとするほど重要ではないコンテンツを含んだコンテナ。Alertも参照。
structure(抽象のロール(role))
文書構造の要素。
tab
tabpanelの見出し。
tablist
タブパネル要素へのリファレンスとなっているタブ要素のリスト。
tabpanel
tabに関連付けられたリソースのコンテナ。
textbox
自由記述形式のテキストを値として認める入力。
timer
開始時からの経過時間、または終了時までの残り時間を示す数値カウンタ。
toolbar
よく使われる複数の機能のボタンをコンパクトな見た目で示したもの。
tooltip
要素がマウスオーバーやキーボードでフォーカスされたステート(state)にある際に、その要素の説明を表示するコンテキスト・ポップアップ。ユーザーエージェントの通常のツールチップ処理を補完する。
tree
サブレベルに入れ子になったグループを持ち、展開や折り畳みができるlistの一種。
treegrid
treeと同様に展開または折り畳むことができる行を持ったgrid。
treeitem
treeのオプション項目。これはツリー内の要素で、treeitemのサブレベルグループを含んでいれば、展開や折り畳みができる。
widget(抽象のロール(role))
グラフィカルユーザーインタフェース(GUI)のインタラクティブなコンポーネント。
window(抽象のロール(role))
ブラウザまたはアプリケーションのウィンドウ。

alert (ロール(role))

重要な情報を伴ったメッセージ。通常は、タイムリーな提示が必要とされる情報を伴う。alertdialogおよびstatusも参照。

アラートは、ユーザーへの警告メッセージを伝えるために使われる。音声警告の場合、これは、聴覚障がいのあるユーザーにとってアクセシブルな代替となる。alertロール(role)は、その警告メッセージを含んだノードに付けられる。アラートは、statusのロール(role)の特別な形式で、アトミックライブリージョンとして処理されるべきである。

アラートはユーザーに入力を要求するものではないため、フォーカスを受け取るべきではない。そして、アラートはフォーカスを受け取らないので、ユーザーは、アラートを閉じるよう要求されるべきではない。オペレーティングシステムが許可するのであれば、ユーザーエージェントは、ARIAのアラートが作成されたのを受けて、システムアラートイベントを起動してもよい。アラートを閉じるためのフォーカスが必要であれば、代わりにalertdialogを使用すべきである

注:alertのロール(role)を伴った要素は、暗示的にaria-liveの値にassertiveを持つ。

alertの特性
特性
親のロール(role):region
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author
ロール(role)の暗示的な値:aria-liveのデフォルトはassertiveとなる

alertdialog (ロール(role))

アラートメッセージを伴ったダイアログの一種 。初期のフォーカスは、このダイアログまたはダイアログ内の要素に置かれる。alertおよびdialogも参照。

アラートダイアログは、ユーザーへの警告メッセージを伝えるために使われる。alertdialogロール(role)は、警告メッセージと残りのダイアログの両方を含んだノードに付けられる。開発者は、alertdialogが表示されている間、キーボードとマウスのインタラクションがダイアログ内のみを操作するように確認することで、アラートダイアログをモーダルとすべきである

alertと異なりalertdialogは、ユーザーからの応答を受けることができる。例えば、アラートの生成をユーザーが理解したかどうかを確認することが挙げられる。アラートダイアログが表示される際は、アラートダイアログ内のアクティブな要素、例えばフォーム編集フィールドやOKのボタンなどに対して、開発者がフォーカスを設定すべきである。アラートが生成された時、それが意図されたアクセシビリティAPIによって指定されていれば、ユーザーエージェントはアクセシビリティのアラートイベントを起動してもよい

開発者は、alertdialog上でaria-describedbyを使って、ダイアログ内の警告メッセージ要素にを指し示すべきである。これをしないと、支援技術は、内部の回復メカニズムに頼って警告メッセージのコンテンツを見極めるよりほかに手段がなくなるためだ。

注:alertdialogのロール(role)を伴った要素は、暗示的にaria-liveの値にassertiveを持つ。

alertdialogの特性
特性
親のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True
ロール(role)の暗示的な値:aria-liveのデフォルトはassertiveとなる

application (ロール(role))

ウェブのdocumentではなく、アプリケーションとして宣言されたリージョン。

このロール(role)の目的は、通常の閲覧モード機能からアプリケーションモードの機能に切り替えるよう、支援技術に対して伝えることにある。ユーザーエージェントは、閲覧ナビゲーションモードでは、上下矢印などのキーを文書の閲覧目的で使っている。このネイティブの動作によって、ウェブアプリケーションによるこれらのキーの使用は阻まれる。

開発者は、アプリケーション全体にわたる要素に対してapplicationロール(role)を設定すべきである。applicationのロール(role)がウェブページ全体に適用されるのであれば、コンテンツのルートノード上で設定すべきである。ルートノードとは、HTMLbody要素やSVGのsvg要素を指す。

例えば、Eメールアプリケーションは、文書の部分とアプリケーションの部分を持っている。開発者は、Eメールのリスト内を移動する間は、一般的なアプリケーションナビゲーションモードを使用したいと考えるだろう。このナビゲーションの大半は、アプリケーションの開発者によって定義できる。しかし、Eメールのメッセージ部分を読む際は、そのコンテンツがdocumentロール(role)を持ったリージョンに表示され、閲覧ナビゲーションが使用されるべきである。

アプリケーション内にある非装飾的な静的テキストと画像はすべて、aria-labelaria-labelledby、またはaria-describedbyを介してフォームウィジェットgroupに関連付けられているか、もしくはdocumentまたはarticleのロール(role)を持った要素に分けられているべきである

アプリケーションには、アプリケーションタイトルまたはラベルがあるべきである。これは、該当するページセクションに対するナビゲーションプレビューや目次エントリとして使うのに適している。ラベルは、以下のソースのいずれかから取得されるべきである

  • アプリケーションがウェブページのコンテンツ全体を含むのであれば、例えばHTMLtitle要素など、ファイル全体にラベルを付けるホスト言語のタイトルまたはラベル機能を使用する。
  • そうでなければ、aria-labelledbyを使って、アプリケーションが参照する可視ラベルを提供する。
applicationの特性
特性
親のロール(role):landmark
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

article (ロール(role))

文書、ページ、またはサイト内の独立した個所を形成するページのセクション。

アーティクルには、フォーラムの投稿、雑誌や新聞の記事、ブログのエントリ、ユーザーの投稿コメント、その他の独立コンテンツ項目などが含まれる。そのコンテンツを新聞や雑誌の配信でも使えることから分かるように、それ自体は独立したものである。しかし、この要素はなおも先祖に関連付けられていて、例えば、親のbody要素に適用される連絡先情報は、そのアーティクルにもかかってくる。アーティクルを入れ子にする際は、親のアーティクルのコンテンツに関連したコンテンツを、子のアーティクルが表現する。例えば、ユーザーの投稿コメントを受け付けるサイトのブログのエントリでは、ブログエントリのアーティクルのなかに入れ子にしたアーティクルとして、コメントを表現することができる。アーティクルに関連付けられた開発者、見出し、日付、その他の情報は、入れ子にしたアーティクルには適用されない。

支援技術はアーティクルを文書と同じように扱わなければならず、アーティクルはアプリケーションのように処理されなければならない。文書と異なり、アーティクルを使うことによって、ユーザーは、入れ子の構造に基づいて関連するアーティクルを認識し、追いかけられるようになる。

articleの特性
特性
親のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author


button (ロール(role))

クリックされたり押されたりした際に、ユーザが起こしたアクションを可能にする入力。

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

ボタンは、オプションのaria-pressed属性をサポートする。空ではないaria-pressed属性を持ったボタンは、トグルボタンとなる。aria-pressedの値がtrueであれば、ボタンは押されたステート(state)となり、aria-pressedの値がfalseであれば、押されていないステート(state)となる。この属性が存在しなければ、そのボタンは単純なコマンドボタンである。

buttonの特性
特性
親のロール(role):input
基本の概念:HTMLのbutton
サポートされたステート(state)とプロパティ:aria-pressed
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True
子が表現的である:True

checkbox (ロール(role))

truefalsemixedの3つのを持つ可能性があるチェック可能な入力。

checkboxaria-checked属性は、その入力がチェックされている(true)かチェックされていない(false)かを示すほか、要素のグループにチェックされている状態とチェックされていない状態の両方が含まれている(mixed)ことを示す。多くのチェックボックスではmixedの値が使われないため、事実上ブーリアンのチェックボックスである。

checkboxの特性
特性
親のロール(role):input
子のロール(role):
必須のステート(state)とプロパティ:aria-checked
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

columnheader (ロール(role))

列の見出し情報を含んだセル。

columnheaderは、テーブルまたはグリッドの列見出しとして使用できる。また、円グラフで使って、データ内の類似関係を示すこともできる。

columnheaderは、呼応する列のなかにあるすべてのセルとの関係を確立するものである。scope属性として「column」を持ったHTMLth要素に構造的に等しい。

注:セルは行に組織化されるため、列に対する単一のコンテナ要素は存在しない。列は、個々のrowコンテナ内で特定の位置に置かれたgridcell要素のセットである。

columnheaderの特性
特性
親のロール(role):
基本の概念:HTMLのth(scope=col)
親要素:row
サポートされたステート(state)とプロパティ:aria-sort
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

combobox (ロール(role))

selectの表現の1つ。一般に、ユーザーがタイプ入力してオプションを選べる、あるいは任意のテキストをリスト内の新しい項目として入力できるtextboxに似ている。

comboboxは、1行のテキストボックスとリストボックスのポップアップを組み合わせて表現され、編集できる場合もある。一般に、編集可能なコンボボックスは、オートコンプリートの動作に使われ、子のテキストボックスにはaria-autocompleteプロパティを使うことができる。

注:XForms [XFORMS] では、同じselectが、コンボボックス、ドロップダウンボックス、ラジオボタングループという3通りのいずれかの方法で表示できる。多くのブラウザでは、ユーザーがドロップダウンの選択にタイプ入力することもできるようになっている。この仕様では、コンボボックスの表現に制約は課していない。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

注:comboboxのロール(role)を伴った要素は、暗示的にaria-haspopupの値にtrueを持つ。

comboboxの特性
特性
親のロール(role):select
必須の子要素:listbox
必須のステート(state)とプロパティ:aria-expanded
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True
ロール(role)の暗示的な値:aria-haspopupのデフォルトはtrueとなる

complementary (ロール(role))

メインのコンテンツから切り離しても意味を持つ、文書の補足的なセクション。

このロール(role)を持つのに適したコンテンツには様々なタイプがある。例えば、ポータルであれば、番組の放送時間、現在の天気、関連する記事、注目の株価などが挙げられる。これらのコンテンツは、メインのコンテンツに関連したものであることが望ましく、完全に切り離すことができるのであれば、より一般的なロール(role)が使われるべきである。

complementaryの特性
特性
親のロール(role):landmark
継承されたステート(state)とプロパティ:
名前の取得元:author

composite (抽象のロール(role))

ナビゲーションできる子孫または所有された子を含む可能性があるウィジェット

コンポジットウィジェットは、ウェブページの大きなナビゲーションシステム内にある1つのナビゲーションストップとして存在すべきである。コンポジットウィジェットにフォーカスが置かれている場合は、そのコンポジット要素の子孫または所有された子である文書要素に対する別のナビゲーションメカニズムを、ユーザーに提供すべきである

注:compositeは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

compositeの特性
特性
抽象である:True
親のロール(role):widget
子のロール(role):
サポートされたステート(state)とプロパティ:aria-activedescendant
継承されたステート(state)とプロパティ:
名前の取得元:author
子が表現的である:False

contentinfo (ロール(role))

親の文書に適用されるメタデータ。

例えば、脚注、著作権の記載、プライバシーポリシーへのリンクが、これに当てはまる。

contentinfoの特性
特性
親のロール(role):landmark
継承されたステート(state)とプロパティ:
名前の取得元:author

definition (ロール(role))

用語または概念の定義。

ARIA仕様では、定義用語を指定するためのロール(role)は提供していないが、ホスト言語がその種の要素を提供しているかもしれない。その用語に対する適切な要素(例えば、HTMLdfnまたはdt)がホスト言語にある場合は、その用語はその要素に含まれるべきである。definitionのロール(role)を持った要素は、その定義用語の要素を特定するaria-labelledby属性を持っているべきである

definitionの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
名前の取得元:author

dialog (ロール(role))

ダイアログはアプリケーションウィンドウで、アプリケーションが処理中にそれを中断してユーザーに情報入力または応答を促すためのもの。alertdialogも参照。

ダイアログボックスは、タイトルを伴っているべきである。タイトルは、他のメカニズムが存在しなければ、aria-labelまたはaria-labelledby属性によって提供することができる。また、ダイアログボックスには、フォーカスされた子孫の要素があり、その要素がキーボードのフォーカスを伴っているべきである

dialogの特性
特性
親のロール(role):window
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

directory (ロール(role))

静的な目次のように、1つのグループ内の複数のメンバーに対するリファレンスのリスト。

開発者は、リンクされているかされていないかにかかわらず、静的な目次に対してこのロール(role)を使うべきである。これには、リストおよび入れ子にしたリストで作られた目次も含まれる。一方、動的な目次には、代わりにtreeのロール(role)を使うことができる。

directoryの特性
特性
親のロール(role):list
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author

document (ロール(role))

関連する情報を含み、ウェブのapplicationではなく、文書コンテンツとして宣言されているリージョン。

documentロール(role)は、文書リージョン内のどのようなコンテンツも閲覧できるようにするために、ブラウザのキーボードサポートを補足する必要があるユーザーエージェントに対して、文書であることを告知する役目を果たす。対照的に、applicationのロール(role)を持ったリージョンでは、すべてのテキストがフォーカス可能な要素にセマンティクス的に関連付けられているべきでなので、スクリーンリーダーのユーザーが、role="application"を持ったリージョン内のテキストを読む際には、付加的なコマンドが必要とはならない。文書の重要な特徴としては、ウィジェットあるいはグループに関連付けられていないテキストを伴っていることが挙げられる。

開発者は、文書全体にわたる要素に対して、documentのロール(role)を設定すべきである。documentのロール(role)がウェブページ全体に適用されるのであれば、コンテンツのルートノード上で設定すべきである。ルートノードとは、HTMLbody要素やSVGsvg要素を指す。

例えば、Eメールアプリケーションは、文書の部分とアプリケーションの部分を持っている。開発者は、Eメールのリスト内を移動する間は、一般的なアプリケーションナビゲーションモードを使用したいと考えるだろう。このナビゲーションの大半は、アプリケーションの開発者によって定義できる。しかし、Eメールのメッセージ部分を読む際は、そのコンテンツがdocumentのロール(role)を持ったリージョンに表示され、閲覧ナビゲーションが使用されるべきである。

文書には、文書タイトルまたはラベルがあるべきである。これは、該当するページセクションに対するナビゲーションプレビューや目次エントリとして使うのに適している。ラベルは、以下のソースのいずれかから取得されるべきである

  • 文書がウェブページのコンテンツ全体を含むのであれば、例えばHTMLtitle要素など、ファイル全体にラベルを付けるホスト言語のタイトルまたはラベル機能を使用する。
  • そうでなければ、aria-labelledbyを使って、文書が参照する可視ラベルを提供する。
documentの特性
特性
親のロール(role):structure
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元: author
アクセシブルな名前が必須である:True

grid (ロール(role))

gridには、テーブルと同様に、行と列に配列された表形式のデータセルが含まれる。

グリッドは、必ずしも表現を示唆するものではない。gridの構成概念は、様々な表現で使われ得るデータ間の関係を記述するものである。グリッドによって、ユーザーは、2次元のナビゲーションを使ってセル間のフォーカスを移動できるようになる。例えば、gridは、表現的なチャートにおいて、非表示のデータモデル(CSSで隠されているが、なおも支援技術操作可能)として使われるかもしれない。

gridcellロール(role)を持ったセルは、rowのロール(role)を持った行に含まれ、またrowのロール(role)を持った行は、gridに含まれるべきである。セルは、フォーカスできる場合もある。グリッドは、行もセルも持たない空の状態とすることもできる。グリッドは、rowheaderおよびcolumnheaderのロール(role)が提供されていれば、行見出しと列見出しを伴ってもよい。これは、ユーザーエージェントのナビゲーションのサポートも支援する。また、gridcell要素は、計算によって決定されるコンテンツを伴ってもよい

ユーザーのインタラクションのために、aria-selected属性を持つgridcell要素を用いることができる。。また、gridaria-multiselectable属性がtrueに設定されていれば、グリッド内の複数のセルを選択できる。グリッドは、スプレッドシートのデスクトップアプリケーションにあるようなスプレッドシートに使うことができる。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

gridの特性
特性
親のロール(role):
子のロール(role):
基本の概念:HTMLのtable
必須の子要素:row
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

gridcell (ロール(role))

グリッドまたはツリーグリッド内のセル。

セルは、アクティブ、編集可能、選択可能とすることができる。セルは、機能的関係の適用に対応するaria-controlsなどの関係を持つこともできる。

DOMの構造から見出しを判断できない場合は、どのヘッダーセルが関連付けられるのかを、セルが明示すべきである。これは、rowheaderまたはcolumnheaderロール(role)を持った要素を、aria-describedby属性を使って参照することによって、達成される。

treegrid内のセルは、展開可能で、aria-expanded属性を用いることができるaria-expanded属性が提供されている場合は、個々のセルに対してのみ適用される。コンテナの行も展開することはできるが、これはコンテナの行の代用となるものではない。セルに対してこの属性を提供する主な使用事例は、ピボットテーブルの動作のためである。

gridcellの特性
特性
親のロール(role):
子のロール(role):
基本の概念:HTMLのtd
親要素:row
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

group (ロール(role))

ユーザーインタフェースオブジェクトの1セットで、支援技術によってページサマリまたは目次に含まれることがないセクション。

regionが、ページサマリまたは目次に含まれるべきユーザーインタフェースオブジェクトのセクションであるのと対照的である。

開発者は、ウィジェット内の項目の論理集合を形成するのにgroupを使うべきである。例えば、階層構造内の兄弟の集合やディレクトリ内の同じコンテナを伴った項目の集合を形成している、ツリーウィジェットの子などが挙げられる。これを受けて、支援技術は、グループが提供されている文脈に応じてグループの適切な扱いを決定しなければならない。

グループは、入れ子にすることもできる。配信単位となるウェブページ全体からみて、十分に重要なセクションだと開発者が判断できる場合には、開発者は、そのセクションにregionロール(role)、または標準ランドマークのロール(role)を割り当てるべきである。

グループのDOMの子孫外にあるグループメンバーがそのグループに参加するには、aria-owns属性を使って明示的に割り当てられた関係を有している必要がある。

groupの特性
特性
親のロール(role):section
子のロール(role):
サポートされたステート(state)とプロパティ:aria-activedescendant
継承されたステート(state)とプロパティ:
名前の取得元: author

heading (ロール(role))

ページ内の1セクションに対する見出し。

多くの場合、heading要素は、見出しとして機能しているセクションのaria-labelledby属性とともに参照される。見出しが論理アウトラインに組織化されていれば、aria-level属性を使って入れ子のレベルを示すことができる。

headingの特性
特性
親のロール(role):sectionhead
サポートされたステート(state)とプロパティ:aria-level
継承されたステート(state)とプロパティ:
アクセシブルな名前が必須である:True

img (ロール(role))

1つの画像を形成する要素のためのコンテナ。

imgには、キャプションと記述テキストのほか、まとめて見ると1つの画像のように見える複数の画像ファイルを含むことができる。imgは、文書内の1つのグラフィックを表現するものであり、複数の描写オブジェクトによって形成されているかどうかは問題とされない。imgロール(role)を持った要素を認識可能にするには、アクセシブルな名前の計算によって関連付けられた代替テキストまたはラベルを伴っているべきである

imgの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True
子が表現的である:True

input (抽象のロール(role))

ユーザー入力を許可するウィジェットの一般的なタイプ。

inputの特性
特性
抽象である:True
親のロール(role):widget
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author

landmark (抽象のロール(role))

ナビゲーションランドマークとして意図されたページのリージョン。

ユーザーエージェントまたは支援技術は、ユーザーがすばやくこれらのリージョンにナビゲートできるようにしてもよい

注:landmarkは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

landmarkの特性
特性
抽象である:True
親のロール(role):region
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:False


list (ロール(role))

非インタラクティブなリスト項目のグループ。

リストには、listitemロール(role)を持った子が含まれるか、あるいは、groupのロール(role)を持った要素が含まれていて、その要素のロール(role)にlistitemのロール(role)を持った子が含まれる。

listの特性
特性
親のロール(role):region
子のロール(role):
基本の概念:
必須の子要素:
継承されたステート(state)とプロパティ:
名前の取得元:author

listbox (ロール(role))

ユーザーが選択肢のリストから1つまたは複数の項目を選ぶのを許可するウィジェット

このリスト内の項目は静的で、標準的なHTMLselect要素とは異なり、画像を含む可能性がある。リストボックスには、optionロール(role)を持った子が含まれる。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

listboxaria-expanded属性を継承する。しかし、そのlistboxを展開する正当な理由がある場合は、代わりにcomboboxの使用を検討すべきである。

listboxの特性
特性
親のロール(role):
必須の子要素:option
サポートされたステート(state)とプロパティ:aria-multiselectable
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

listitem (ロール(role))

リスト、リストボックス、またはディレクトリ内の1項目。

listitemの特性
特性
親のロール(role):section
子のロール(role):
基本の概念:HTMLのli
親要素:list
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

log (ロール(role))

新しい情報が意味のある順番に追加され、また古い情報が消されることもあるライブリージョンのタイプ。marqueeも参照。

例としては、チャットのログ、メッセージングの履歴、ゲームログ、エラーログなどがある。他のライブリージョンと異なり、このロール(role)では、新しい項目の到着と読む順序の間に関係がある。ログには意味のあるシーケンスが含まれ、新しい情報は、任意のポイントではなくログの最後にのみ付け加えることができる。

注:logのロール(role)を伴った要素は、暗示的にaria-liveの値にpoliteを持つ。

logの特性
特性
親のロール(role):region
継承されたステート(state)とプロパティ:
名前の取得元: author
アクセシブルな名前が必須である:True
ロール(role)の暗示的な値:aria-liveのデフォルトはpoliteとなる

main (ロール(role))

文書内のメインのコンテンツ。

文書の中心的なトピックに直接関連したコンテンツ、またはそのトピックに基づいて展開するコンテンツをマークする。mainロール(role)は、「メインのコンテンツにスキップする」のリンクに対する邪魔にならない代替物で、メインのコンテンツ(または他のランドマーク)に進むナビゲーションのオプションは、ダイアログを介してユーザーエージェントによって、または支援技術によって提供される。

documentおよびapplication内では、mainのロール(role)を割り当てる要素を1つだけにすべきである

注:documentおよびapplicationの要素はDOM内で入れ子にできるため、DOMの子孫として複数のmain要素を持つことができる。この場合、これらのそれぞれが、DOMの入れ子(例えば、document内のdocument)またはaria-owns属性によって、異なる文書ノードに関連付けられているものと仮定される。

mainの特性
特性
親のロール(role):landmark
継承されたステート(state)とプロパティ:
名前の取得元:author

marquee (ロール(role))

重要でない情報が頻繁に変更されるライブリージョンのタイプ。logも参照。

marqueeの一般的な使用例には、株価のティッカー表示や広告バナーがある。マーキーの例としては、株価のティッカー表示がある。marqueelogの主な違いは、ログが通常、より重要なコンテンツの変更に意味のある並び順があるという点にある。

marqueeの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
アクセシブルな名前が必須である:True

math (ロール(role))

数学表現のための要素

mathロール(role)は、数学表現のセクションを示すのに使われる。このようなセクションは、MathMLのような正式な数学言語を使って、数学的概念を表現すべきである。しかし、画像やASCIIアートを使って数学表現をしているレガシーコンテンツは、大量に存在している。mathのロール(role)によって、支援技術は、そのイメージに対して提供されたテキスト等価物を点字や音声合成に変換し、ユーザーに伝えられるようになる。こうした状況で使われるテキスト等価物は、有効なMathMLまたはTeXであるべきである。また、画像を知覚可能にするには、aria-describedby属性を使用して、その数学の式がどのように読み上げられるべきかを記述したテキストによって、画像をラベル付けすべきである。記述するテキストには、音声機器をコントロールするための特別なマークアップを含めるべきではない。

mathの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
名前の取得元:author
子が表現的である:True







note (ロール(role))

そのリソースのメインのコンテンツに対して挿入的または付随的なコンテンツのセクション。

noteの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
名前の取得元:author

option (ロール(role))

selectのリスト内にある選択可能な1項目。

オプションは、非抽象的な子のselectロール(role)のいずれかに関連付けられるべきである。これには、comboboxlistboxmenuradiogrouptreeがある。これらのロール(role)のいずれかによって包含または所有されていないオプションは、アクセシビリティAPIに正しくマッピングされない可能性がある。

optionの特性
特性
親のロール(role):input
子のロール(role):
基本の概念:HTMLのoption
親要素:select
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

presentation (ロール(role))

表現的なロール(role)を持ち、アクセシビリティAPIにマッピングする必要がない要素

このロール(role)の用途としては、要素がページの見た目を変えるために使われているが、その要素タイプによって示唆される機能的、構造的、またインタラクション上の重要な意味はない場合が挙げられる。

使用事例としては、以下のものがある。

  • 表現的なコンテンツの要素(スペーサーの画像、装飾的なグラフィック、クリアリングのための要素など)
  • コンテナ内にあって、同じロール(role)を持ち、かつLabelledbyと(必要であれば)aria-describedbyでマークアップされた完全な等価物がテキストで提供されている画像
  • CSSの"フック"となる付加的なマークアップとして使われている要素
  • レイアウトテーブル、および/またはそれに関連付けられたすべてのセル、行など

ユーザーエージェントは、本来の目的以外で使われている要素の構造的側面をすべて提示しないことを選んでもよい。例えば、テーブルがpresentationとマークされている場合、ユーザーエージェントは、tabletdthtrなどの要素をアクセシビリティAPIマッピングから取り除き、そのなかに入っている個々のテキスト要素だけを残すことができる。これにより、テーブルで示唆された構造的側面を無視してもよいことがユーザーエージェントに分かるようになるため、レイアウト目的でテーブルを使っても害がなくなる。

ユーザーエージェントは、ARIAのロール(role)を持ったアイテムが含まれているかどうかを見きわめるために、presentationロール(role)を持った要素を無視すべきである

例えば、以下のサンプルコードを見てみよう。

<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>

コンテナであるdiv要素は、ARIAimgのロール(role)を持っていて、キャプションの段落によって適切にラベル付けされている。この例では、ロール(role)とテキスト等価物がコンテナ要素によって提供されているため、このimg要素をpresentationとしてマークすることができる。

次に、以下のサンプルコードを見てみよう。

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

このanchor(HTMLa要素)は、ツリー項目として機能しているため、リスト項目(HTMLli要素)は、明示的なARIAのpresentationのロール(role)を割り当てられて、ユーザーエージェントのリスト項目に対するデフォルト動作を上書きしている。

presentationの特性
特性
親のロール(role):structure
継承されたステート(state)とプロパティ:

progressbar (ロール(role))

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

プログレスバーは、ユーザー要求が受け付けられ、要求されたアクションの完了に向けてアプリケーションが進行していることを示す。開発者は、aria-valuenowaria-valuemin、およびaria-valuemaxを提供すべきである。ただし、値が不確定な場合は、aria-valuenow属性は省略されるべきである。これらの値は、視覚的なプログレスインジケータの更新に伴って更新されるべきであるprogressbarがページの特定リージョンのロード状況を示している場合は、開発者は、aria-describedbyを使ってこのステータスを示し、ロードが終了するまでの間、そのリージョンのaria-busy属性をtrueに設定すべきである

progressbarの特性
特性
親のロール(role):widget
サポートされたステート(state)とプロパティ: aria-valuetext
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True
子が表現的である:True

radio (ロール(role))

radioというロール(role)グループにあるチェック可能な入力で、一度に1つだけがチェックできる。

radioのロール(role)を持った要素は、同じ値に影響するオプションがどれかを示すよう、明示的にグループ化されるべきである。これは、同じグループに属するオプションを、radiogroupのロール(role)を持った要素に入れることによって達成できる。ラジオボタンをradiogroupDOMの子にすることができない場合は、そのradiogroupの要素上でaria-owns属性を使って、関係が子に対するものであることを示す。

radioの特性
特性
親のロール(role):
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

radiogroup (ロール(role))

radioボタンのグループ。

radiogroupは、selectリストの1タイプで、チェックできるエントリは1つに限られる。開発者は、1グループ内のラジオボタンが一度に1つのみチェックできるようにすべきである。グループ内の1つの項目がチェックされると、前にチェックされていた項目はチェックが解除される(その項目のaria-checked属性falseになる)。

radiogroupの特性
特性
親のロール(role):select
list
必須の子要素:radio
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

range (抽象のロール(role))

ユーザーが設定可能な値の範囲を表現する入力。

注:rangeは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

rangeの特性
特性
抽象である:True
親のロール(role):input
子のロール(role):
サポートされたステート(state)とプロパティ: aria-valuetext
継承されたステート(state)とプロパティ:
名前の取得元:author

region (ロール(role))

ウェブページまたは文書のなかで知覚可能な大きいセクションで、開発者がページ機能のサマリに含むべきではないかと思うセクション。

このロール(role)が定義するグループには、知覚可能な大きいセクションを一緒になって形成する複数の要素が含まれる。また、このセクションは、開発者がページ機能のサマリに含まれるべきだと見なすセクションでもある。regionは、headingのロール(role)のインスタンスを介して提供される見出し、または標準的なアクセシブルな名前の計算を使って提供される見出しを伴っているべきである。リージョンは、コンテンツの論理構造に必ずしも従う必要はないが、そのページの知覚可能な構造に従うものである。

ウェブページのリージョンを定義するにあたって、開発者は、標準的な文書のlandmarkロール(role)の使用を検討すべきである。このようなリージョンの定義が不適切な場合は、regionのロール(role)を使って適切なアクセシブルな名前を提供すべきである。

regionの特性
特性
親のロール(role):section
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元: author

roletype (抽象のロール(role))

タクソノミーに含まれる他のすべてのロール(role)が継承する基本のロール(role)。

このロール(role)のプロパティは、そのロール(role)に割り当てられたオブジェクトの構造的、機能的目的を記述している(RDFの用語では「インスタンス」と呼ばれる)。ロール(role)の概念は、インスタンスを理解し処理するために使うことができる。

注:roletypeは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

roletypeの特性
特性
抽象である:True
子のロール(role):
サポートされたステート(state)とプロパティ:グローバルなプロパティのプレースホルダー
継承されたステート(state)とプロパティ:

row (ロール(role))

グリッド内のセルの行。

行にはgridcell要素が含まれ、gridを組織化する役割を果たす。

treegrid内の行は、現在のステータスを示すaria-expanded属性を使って展開可能としてもよい。これは、aria-expanded属性が存在しない通常のgridには当てはまらない。

rowの特性
特性
親のロール(role):group
基本の概念:HTMLのtr
親要素:
必須の子要素:gridcell
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author

rowheader (ロール(role))

グリッド内の行の見出し情報を含んだセル。

rowheaderは、テーブルまたはグリッドの行見出しとして使用できる。行見出しは、呼応する行のなかにあるすべてのセルとの関係を確立するものである。row="scope"の設定を持ったHTMLth要素と構造的に等しい。

rowheaderの特性
特性
親のロール(role):
基本の概念:HTMLのth(scope=row)
親要素:row
サポートされたステート(state)とプロパティ:aria-sort
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True


section (抽象のロール(role))

文書またはアプリケーション内にあるレンダリング可能で、構造的なコンテナの単位。

注:sectionは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

sectionの特性
特性
抽象である:True
親のロール(role):structure
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author

sectionhead (抽象のロール(role))

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

注:sectionheadは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

sectionheadの特性
特性
抽象である:True
親のロール(role):structure
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author

select (抽象のロール(role))

ユーザーが複数の選択肢から選ぶのを許可するフォームウィジェット

optionロール(role)を持った要素は、非抽象的な子のselectのロール(role)の1つを使って、要素に含まれるべきである。selectは、行もセルも持たない空の状態とすることもできる。

注:selectは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

selectの特性
特性
抽象である:True
親のロール(role):
子のロール(role):
継承されたステート(state)とプロパティ:
名前の取得元:author

separator (ロール(role))

コンテンツのセクションまたはメニュー項目のグループを区切って区別するための仕切り。

これは、コンテンツのセクション間の視覚的な区切りである。例えば、メニュー内のメニュー項目のグループの間で使われるほか、分割ペイン内の2つのリージョンの間の移動可能な区切りとして使われる。
separatorの特性
特性
親のロール(role):structure
継承されたステート(state)とプロパティ:
名前の取得元:author
子が表現的である:True

slider (ロール(role))

与えられた範囲内でユーザーが値を選ぶユーザー入力。

スライダーは、スライダーの大きさとサム(つまみ部分)の位置によって、現在の値と可能な値の範囲を表現する。一般に、矢印キーなどの方向キーを使って、値を足したり引いたりすることができる。

sliderの特性
特性
親のロール(role):range
必須のステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True
子が表現的である:True

spinbutton (ロール(role))

個別の選択肢のなかからユーザーが選べるようになっているrangeの形式。

一般にspinbuttonでは、キーボードの上下ボタンを使うことで、与えられた値からの選択ができる。見た目上は、最大値または最小値に到達するまでの範囲で現在の値が増減する。この機能は、キーボードの上矢印キーまたは下矢印キーを使って、プログラム的に実行されるべきである

spinbuttonは、selectの表現の多くに見た目上は似ている。しかし、選択肢を個別に示すのではなく、むしろ既知の範囲(特に幅の広い範囲の場合)を扱う際に使うのが望ましい。例えば、1から1,000,000の範囲を表現するspinbuttonは、同じ値を持ったselectウィジェットよりも、はるかによく機能するだろう。

spinbuttonの特性
特性
親のロール(role):
必須のステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

status (ロール(role))

ユーザーへの助言情報だが、アラートとするほど重要ではないコンテンツを含んだコンテナ。alertも参照。

statusオブジェクトは、実際のステータス情報を提供するコンテンツを内部に含んでいなければならない。このオブジェクトは、フォーカスを受け取るべきではない

ステータスは、ライブリージョンの一形式である。ページ内の別の部分がステータスに表示される内容を制御する場合は、その関係aria-controls属性で明らかにすべきである

支援技術機器は、ステータスをレンダリングするために、点字表示の一部のセルを確保しておいてもよい

注:statusのロール(role)を伴った要素は、暗示的にaria-liveの値にpoliteを持つ。

statusの特性
特性
親のロール(role):
子のロール(role):
継承されたステート(state)とプロパティ:
ロール(role)の暗示的な値:aria-liveのデフォルトはpoliteとなる

structure (抽象のロール(role))

文書構造の要素

文書構造のロール(role)は、アクティブなコンテンツか静的な文書コンテンツかを支援技術が見極めるのを助けることによって、動的なウェブコンテンツのアクセシビリティをサポートする。構造的なロール(role)は、それ自体すべてがアクセシビリティAPIにマッピングするものではないが、ウィジェットのロール(role)を作ったり、コンテンツの適応を支援するのに使われる。

注:structureは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

structureの特性
特性
抽象である:True
親のロール(role):roletype
子のロール(role):
サポートされたステート(state)とプロパティ:aria-expanded
継承されたステート(state)とプロパティ:

tab (ロール(role))

tabpanelの見出し。

tabロール(role)は、グループ化のためのラベルとして使われ、ユーザーに対してレンダリングするタブコンテンツを選択するためのリンクを提供する。tabpanelまたはtabpanel内の項目にフォーカスが置かれていれば、その関連付けられたtabが、aria-activedescendantの定義に従って、tablist内で現在アクティブなtabとなる。

現在アクティブなタブに関連付けられたtabpanelが、ユーザーに対して知覚可能となるべきである

  • 1つのみが選択できるtablistでは、他のtabpanel要素は、それに関連付けられたタブをユーザーが選ぶまでは、ユーザーから隠されているべきである
  • 複数選択が可能なtablistでは、表示された各tabpanel要素のaria-expanded属性trueに設定されているべきである。また、残りのtabpanel要素は、隠されていて、aria-expanded属性はfalseに設定されているべきである

どちらのケースでも、開発者は、現在アクティブなタブのaria-selected属性がtrueに設定され、他のタブ要素のaria-selectedfalseに設定されていることを確認すべきである。また、現在選択されているタブは、選択されていることを視覚的に示すべきである。現在のタブにaria-selected属性がない場合、ユーザーエージェントは、プラットフォームのアクセシビリティAPIを通じて現在アクティブなタブを支援技術に示すべきである

tabの特性
特性
親のロール(role):
親要素:tablist
サポートされたステート(state)とプロパティ:aria-selected
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author

tabpanel(ロール(role))

tabに関連付けられたリソースのコンテナ。

開発者は、tabpanel要素をそのtabに関連付けるべきである。そうするためには、タブ上のaria-controls属性を使ってタブパネルを参照するか、タブ上のaria-labelledby属性を使ってタブを参照する。

タブパネルの使い方については、WAI-ARIAベストプラクティスの「タブパネル・ウィジェットの設計パターン」 [ARIA-PRACTICES] を参照してほしい。

tabpanelの特性
特性
親のロール(role):region
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

tablist (ロール(role))

tabpanel要素へのリファレンスとなっているtab要素のリスト。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

tablistの特性
特性
親のロール(role):
必須の子要素:tab
継承されたステート(state)とプロパティ:
名前の取得元:
  • author

textbox (ロール(role))

自由記述形式のテキストを値として認める入力。

aria-multiline属性trueの場合は、そのウィジェットは、HTMLのテキストエリアと同様に入力内の改行を受け付ける。trueでない場合は、シンプルなテキストボックスとなる。

このロール(role)の用途としては、テキスト入力要素がない言語(SVGなど)の場合、あるいは別のセマンティクスがテキストフィールドとして使われている要素の場合が挙げられる。
textboxの特性
特性
親のロール(role):input
サポートされたステート(state)とプロパティ:
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

timer (ロール(role))

開始時からの経過時間、または終了時までの残り時間を示す数値カウンタ。

タイマーオブジェクトのテキストコンテンツは、現在の時間計測を示し、その数量の変化に伴って更新される。ただし、タイマーの値は必ずしも機械的に解釈できるものではない。テキストコンテンツは、タイマーが一時停止されている場合と終了ポイントに到達した場合を除いて、一定間隔で更新されるべきである

タイマーは、ライブリージョンの一形式で、timerに対するaria-liveのデフォルト値はoffである。

timer
特性
親のロール(role):status
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

toolbar (ロール(role))

よく使われる複数の機能のボタンをコンパクトな見た目で示したもの。

ツールバーは多くの場合、menubarの機能のサブセットとなっていて、これらの機能を使う際のユーザーの手間を省くためのものである。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

toolbarの特性
特性
親のロール(role):group
継承されたステート(state)とプロパティ:
名前の取得元:author

tooltip (ロール(role))

要素がマウスオーバーやキーボードでフォーカスされたステート(state)にある際に、その要素の説明を表示するコンテキストポップアップ。ユーザーエージェントの通常のツールチップ処理を補完する。

このロール(role)を持ったオブジェクトは、遅くともそのツールチップが表示される時までに、aria-describedbyを使用して参照されるべきである

tooltipの特性
特性
親のロール(role):section
継承されたステート(state)とプロパティ:
アクセシブルな名前が必須である:True

tree (ロール(role))

サブレベルに入れ子になったグループを持ち、展開や折り畳みができるlistの一種。

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

treeの特性
特性
親のロール(role):select
子のロール(role):
必須の子要素:treeitem
サポートされたステート(state)とプロパティ:aria-multiselectable
継承されたステート(state)とプロパティ:
名前の取得元:
  • author
アクセシブルな名前が必須である:True

treegrid (ロール(role))

treeと同様に展開または折り畳むことができる行を持ったgrid

キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである

treegridの特性
特性
親のロール(role):
必須の子要素:row
継承されたステート(state)とプロパティ:
名前の取得元:author
アクセシブルな名前が必須である:True

treeitem (ロール(role)

treeのオプション項目。これはツリー内の要素で、treeitemのサブレベルグループを含んでいれば、展開や折り畳みができる。

展開されたり折り畳まれたりする複数のtreeitemの集合は、groupロール(role)を持った要素のなかに包含される。

treeitemの特性
特性
親のロール(role):
親要素:tree
継承されたステート(state)とプロパティ:
名前の取得元:
  • contents
  • author
アクセシブルな名前が必須である:True

widget (抽象のロール(role))

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

ウィジェットは、ユーザーが閲覧・操作できる個別のユーザーインタフェースオブジェクトである。ウィジェットのロール(role)はすべて、アクセシビリティAPIの標準機能にマッピングする。

注:widgetは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

widgetの特性
特性
抽象である:True
親のロール(role):roletype
子のロール(role):
継承されたステート(state)とプロパティ:

window (抽象のロール(role))

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

このロール(role)を持った要素は、GUIの文脈におけるウィンドウのようなふるまいを持つ。これは、その要素がオペレーティングシステムに元々あるウィンドウとして実装されているか、単にウィンドウのように見える文書のセクションとして実装されているかにかかわらない。

注:windowは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない

windowの特性
特性
抽象である:True
親のロール(role):roletype
子のロール(role):
サポートされたステート(state)とプロパティ:aria-expanded
継承されたステート(state)とプロパティ:
名前の取得元: author

5. サポートされたステート(state)とプロパティ

このセクションは、規定である。

5.1. ステート(state)とプロパティの違い

このセクションは、参考情報である。

「ステート(state)」と「プロパティ」という用語は、似たような機能を指している。いずれもオブジェクトに関する特定の情報を提供し、またロール(role)の性質の定義の一部を成すものである。この文書では、ステート(state)とプロパティの両方を、「aria-」の接頭辞を持ったマークアップ属性として扱っている。しかし、その意味の微妙な違いを明確にするため、概念的に区別している。大きな違いの1つは、(aria-checkedなどのような)ステート(state)の と比べると、プロパティ(aria-labelledbyなど)の値のほうが、アプリケーションのライフサイクル中に変更される可能性が低いことである。ステート(state)の値は、ユーザーのインタラクションに伴って、頻繁に変わる可能性がある。詳しくは、ステート(state)プロパティの定義を参照してほしい。

5.2. ステート(state)とプロパティの特性

ステート(state)とプロパティには、以下の特性がある。

5.2.1. 関連する概念

このステート(state)またはプロパティに対応するこの言語または他の言語からの機能についての助言情報。対応関係は完全に一致するものではないかもしれないが、ステート(state)またはプロパティの意図を理解するうえで有用である。

5.2.2. 使用しているロール(role)

このステート(state)またはプロパティを使用しているロール(role)についての助言情報。この情報は、ステート(state)またはプロパティの適切な使用方法を理解するために提供されている。このリストに含まれていないロール(role)上でステート(state)またはプロパティが使われる場合の使い方は定義されていない。

5.2.3. 継承しているロール(role)

先祖のロール(roles)からこのステート(state)またはプロパティを継承しているロール(role)についての助言情報。

5.2.4.

ステート(state)またはプロパティに課される値の制限。これらの制限は、XMLスキーマデータタイプ [XSD] で表現されている。この仕様では、以下のXSDデータタイプが使われている。

  • boolean:真または偽のtrueまたはfalse属性で表現される。
  • decimal:実際の数値。十進法で表現される。
  • integer:正または負の整数。十進法で表現される。
  • string:任意の文字列の
  • IDREF:同じ文書内の別の要素のIDに対するリファレンス。
  • IDREFS:同じ文書内の1つまたは複数の要素のIDに対するリファレンスを含んだ空白スペース区切りのリスト。
  • NMTOKEN:認められた一連のから選択された1つの。認められる値は列挙制約によって定義される。
  • NMTOKENS:認められた一連のから選択された1つまたは複数の値を含んだ空白スペース区切りのリスト。認められる値は列挙制約によって定義される。

boolean、MNTOKEN、NMTOKENSのについては、さらに踏み込んで説明するため、認められた値とその意味を特性テーブルの下に列挙している。値がデフォルト値として示されている場合は、ステート(state)またはプロパティが提供されないかぎり、その値によって指定される動作が実行されなければならないロール(role)によっては、特定のステート(state)またはプロパティが提供されておらず、デフォルト値もない場合に、どのような動作が使用されるべきかを定義していることがある。

undefinedという値がステート(state)またはプロパティに認められている場合は、そのステート(state)またはプロパティが設定されていないことを明示的に示すものとなる。処理に際して、undefinedの値は、ステート(state)またはプロパティ属性DOMに存在しないのと等価となる。undefinedの値をサポートするステート(state)とプロパティは、値として長さがゼロの文字列("")を提供することもできる。これは、そのステート(state)またはプロパティ属性がDOMに存在しないのと等価となる。boolean、decimal、integer、NMTOKEN、NMTOKENSのタイプのステート(state)とプロパティは、この値をサポートすることができる。

注:XHTMLモジュールでは、値の制限を必要に応じて、XSDではなくDTD記法で表現している。DTD記法は、XSDがサポートしている値の制限を正確に示していないため、DTDの値はしばしば、この仕様によって許可された値よりも幅広いスコープの許可された値を有している。実装する際は、DTD検証に頼るのではなく、ここで定義された値の制限を確実に順守しなければならない

5.3. ステート(state)とプロパティの値

多くのステート(state)プロパティが、特定のトークンのセットをとして受け付ける。認められた値とその意味の説明は、特性テーブルの下に示されている。デフォルト値が定義されている場合は、強調フォントで示されている。

5.4. グローバルなステート(state)とプロパティ

ステート(state)プロパティのなかには、ロール(role)が適用されているかどうかにかかわらず、すべてのホスト言語要素に適用できるものがある。以下のグローバルなステート(state)とプロパティは、すべてのロール(role)、およびすべての基本マークアップ要素によってサポートされている。

グローバルなステート(state)とプロパティは、roletypeのロール(role)に適用され、これは基本のロール(role)であるため、すべてのロール(role)に継承される。この仕様では読みやすさを優先するため、グローバルなステート(state)とプロパティを、サポートされたステート(state)とプロパティ、および継承されたステート(state)とプロパティのいずれとしても明示していない。代わりとして、その継承をこのセクションへのリンクで示している。

5.5. ARIAにおけるステート(state)とプロパティのタクソノミー

ステート(state)とプロパティは、以下のように分類されている。

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

5.5.1. ウィジェット属性

このセクションでは、ユーザー入力を受け付け、ユーザーのアクションを処理するGUIシステムまたはリッチ・インターネット・アプリケーションで一般的に使われるユーザーインタフェース要素に特有の属性を取り上げる。これらの属性は、ユーザー入力ユーザーインタフェースロール(role)をサポートするために使われる。

ウィジェット属性は、ユーザーエージェントによってプラットフォームのアクセシビリティAPIステート(state)にマッピングされて、支援技術がアクセスできるようになっていたり、またはDOMから直接アクセスできる可能性がある。ステート(state)が変更された場合は、支援技術に通知されなければならない。通知にあたっては、DOM属性の変更イベントまたはプラットフォームのアクセシビリティAPIのイベントを使用する。

5.5.2. ライブリージョン属性

このセクションでは、リッチ・インターネット・アプリケーションのライブリージョンに特有の属性について説明する。これらの属性は、すべての要素に適用される可能性がある。これらの属性の目的は、その要素にフォーカスが置かれていない間にコンテンツ変更が起きる可能性があることを示すこと、そしてそれらのコンテンツ更新をどう処理すべきかという情報を支援技術に提供することにある。ロール(role)のなかには、aria-live属性のデフォルトを個別に指定しているものもある。ライブリージョンの例には、更新される株価情報を表示するティッカーのセクションがある。

5.5.3. ドラッグ&ドロップ属性

このセクションでは、ドラッグ&ドロップのインタフェース要素、例えばドラッグ可能な要素やそれをドロップするターゲットなどについての情報を示す属性を取り上げる。この情報は、視覚的にレンダリングされるか、代替の方法を介して支援技術に提供されるべきである。

ドラッグ&ドロップについての詳細は、ARIAベストプラクティス「ドラッグ&ドロップのサポート」([ARIA-PRACTICES] 、セクション7)を参照してほしい。

5.5.4. 関係属性

このセクションでは、文書構造からでは容易に判別できない要素間の関係または関連付けを示す属性を取り上げる。

5.6. ステート(state)とプロパティの定義(すべての「aria-*」属性)

以下は、リッチ・インターネット・アプリケーションの開発者によって使われるべきARIAステート(state)プロパティをアルファベット順に示したものである。それぞれのARIAのステート(state)とプロパティについての定義は、以下の要約リストの後に詳述する。

aria-activedescendant
コンポジットウィジェットの現時点でアクティブな子孫を特定する。
aria-atomic
リージョンが更新された場合に、変更されたリージョンの全部または一部を支援技術がユーザーに提示すべきかどうかを示す。aria-relevantも参照。
aria-autocomplete
ユーザー入力を補完する提案が提供されるかどうかを示す。
aria-busy(ステート(state))
ライブリージョンの更新が終了したかどうかを示す。
aria-checked(ステート(state))
チェックボックス、ラジオボタン、その他のウィジェットが現在チェックされたステート(state)になっているかどうかを示す。aria-pressedおよびaria-selectedも参照。
aria-controls
現在の要素によってコンテンツまたは存在が制御されている要素を特定する。aria-ownsも参照。
aria-describedby
そのオブジェクトを記述する要素を特定する。aria-labelledbyも参照。
aria-disabled(ステート(state))
要素が知覚可能ではあるが無効とされていて、結果として編集可能または操作可能ではないことを示す。aria-hiddenおよびaria-readonlyも参照。
aria-dropeffect(ステート(state))
ドラッグ&ドロップの操作で、ドラッグされたオブジェクトがドロップターゲット上でリリースされた時の結果を示す。
aria-expanded(ステート(state))
展開または折り畳み可能な要素のグループが、現在展開されているか、折り畳まれているかを示す。
aria-flowto
コンテンツの推奨すべき読み上げ順序で次に来る要素を特定し、文書のソース順序に読み上げる一般的なデフォルトの読み上げ順序を上書きする。
aria-grabbed(ステート(state))
ドラッグ&ドロップの操作で、要素がグラブされた(つかまれた)ステート(state)であることを示す。
aria-haspopup
その要素がポップアップのコンテキストメニューまたはサブレベルメニューを持っていることを示す。
aria-hidden(ステート(state))
要素がユーザーに対して可視または知覚可能となっていないことを示す。aria-disabledも参照。
aria-invalid(ステート(state))
入力された値が、アプリケーションが求めているフォーマットに従っていないことを示す。
aria-label
現在の要素をラベル付けする文字列の値を定義する。aria-labelledbyも参照。
aria-labelledby
現在の要素をラベル付けする要素を特定する。aria-labelおよびaria-describedbyも参照。
aria-level
ある構造内における要素の階層構造のレベルを定義する。
aria-live
要素が更新されることを示し、また、このライブリージョンからユーザーエージェント、支援技術、およびユーザーが期待できる更新のタイプを記述する。
aria-multiline
テキストボックスが1行だけを受け付けるか、複数行を受け付けるかを示す。
aria-multiselectable
ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示す。
aria-owns
DOMの階層を使って親子の関係を表現することができないDOMの要素間で、視覚的または機能的な親子関係の文脈を定義するために、要素を特定する。
aria-posinset
リスト項目またはツリー項目の現在のセットにおける要素の番号または位置を定義する。DOMによって推測される場合は、必須ではない。aria-setsizeも参照。
aria-pressed(ステート(state))
トグルボタンが現在押されたステート(state)であることを示す。aria-checkedおよびaria-selectedも参照。
aria-readonly
その要素が編集不可能だが、編集以外は操作可能であることを示す。aria-disabledも参照。
aria-relevant
ライブリージョン内の変更の性質を示す。aria-atomicも参照。
aria-required
フォームを送信する前に、その要素へのユーザー入力が必須であることを示す。
aria-selected(ステート(state))
様々なウィジェットが現在選択されたステート(state)であることを示す。aria-checkedおよびaria-pressedも参照。
aria-setsize
リスト項目またはツリー項目の現在のセットに含まれている項目数を定義する。DOMによって推測される場合は、必須ではない。aria-posinsetも参照。
aria-sort
テーブルまたはグリッド内の項目が昇順または降順のどちらでソートされているかを示す。
aria-valuemax
ウィジェットの範囲に対して許可されている最大値を定義する。
aria-valuemin
ウィジェットの範囲に対して許可されている最小値を定義する。
aria-valuenow
ウィジェットの範囲に対する現在の値を定義する。aria-valuetextも参照。
aria-valuetext
ウィジェットの範囲のaria-valuenowに対して人間が読むことのできるテキスト等価物を定義する。

aria-activedescendant (プロパティ)

compositeウィジェットの現時点でアクティブな子孫を特定する。

このプロパティは、すべての子をフォーカス可能にしておくための負荷を軽減するために、現時点でアクティブな子を管理する責任がコンポジットウィジェットに課せられている場合に使われる。例えば、複数レベルのリスト、ツリー、グリッドなどが、これに当てはまる。実装によっては、ユーザーエージェントaria-activedescendantを使用して、アクティブな子孫にフォーカスが置かれていることを支援技術に伝えることがある。

開発者は、activedescendant属性のターゲットとされた要素DOM内のコンテナの子孫であるか、またはaria-owns属性によって示された論理的な子孫であることを確認すべきである。アクティブな子孫がそのコンテナの実際の子孫であるかどうかをチェックすることは、ユーザーエージェントには期待されていない。開発者は、現在アクティブな子孫が可視の状態を維持し、また可視領域に入っていることを確認すべきである。また、開発者は、支援技術またはユーザーエージェントが直接フォーカスを設定する場合に起き得るactivedescendant属性の変更を、把握すべきである

aria-activedescendantの特性
特性
使用しているロール(role):
値:IDREF

aria-atomic (プロパティ)

リージョンが更新された場合に、変更されたリージョンの全部または一部を支援技術がユーザーに提示すべきかどうかを示す。aria-relevantも参照。

アクセシビリティAPI文書オブジェクトモデル [DOM] の両方がイベントを提供して、変更があった文書内のエリアを支援技術が見極められるようにする。

ノードに変更があった場合、支援技術は、変更された要素を見たうえで、その先祖をさかのぼって最初にaria-atomicが設定された要素を見つけ、それ以降のケースに適切な動作を適用すべきである

  1. 明示的に設定されたaria-atomicが先祖のいずれにも見つからなければ、デフォルトとしてaria-atomicfalseにされていたことを意味し、支援技術は、変更のあったノードだけをユーザーに提示すればよい。
  2. aria-atomicが明示的にfalseに設定されていれば、支援技術は、先祖のチェーンを探す作業を停止し、変更のあったノードだけをユーザーに提示すべきである。
  3. aria-atomicが明示的にtrueに設定されていれば、支援技術は、その要素のコンテンツ全体を提示すべきである。

aria-atomictrueの場合、支援技術は、複数の変更を統合して、変更のあったリージョン全体を一度に提示してもよい

aria-atomicの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-atomicの値
説明
true:支援技術は、リージョン全体を提示すべきである。
false支援技術は、リージョン内の変更を単体で処理することができる。

aria-autocomplete (プロパティ)

ユーザー入力を補完する提案が提供されるかどうかを示す。

aria-autocomplete属性inlineまたはbothに設定されているテキストボックスでは、補完テキストが選択されて、カーソルの後に表示され、ユーザーがその上に入力できるべきである。これと一緒にaria-haspopup属性を使って、シンプルテキストボックスでありながら、選択肢を含んだポップアップが表示されることを示すこともできる。

すでにドロップダウンを伴っている要素combobox)では、ドロップダウンの動作が依然として存在するものと考えられる。これはつまり、autocompletetrueであれば、comboboxのaria-haspopupもやはりtrueとなることを意味している。

aria-autocompleteの特性
特性
使用しているロール(role):textbox
値:NMTOKEN
aria-autocompleteの値
説明
inline:フィールドの入力を完成するための提案として、システムがキャレットの後にテキストを示す。
list:選択肢のリストが表示され、そのなかからユーザーが選択できるが、編集ボックスのフォーカスは維持される。
both:選択肢のリストが表示され、現在選択されている提案がインラインにも表示される。
none値リストからの値だけが選択できる。

aria-busy (ステート(state))

ライブリージョンの更新が終了したかどうかを示す。

デフォルトでは、aria-busyfalseである。例えば、1つのライブリージョン内の複数の部分がロードされなければならないことを開発者が分かっていれば、最初の部分がロードされた時のaria-busytrueとし、最後の部分がロードされた時のaria-busyfalseとするか、または最後の部分がロードされた時点でこの属性を取り除くことができる。ライブリージョンの更新でエラーが起きた場合は、aria-invalid属性をtrueに設定する。

aria-busyの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-busyの値
説明
true:そのライブリージョンが更新中である。
falseそのライブリージョンに対して、それ以上予定されている更新がない。

aria-checked (ステート(state))

チェックボックス、ラジオボタン、その他のウィジェットが現在チェックされたステート(state)になっているかどうかを示す。aria-pressedおよびaria-selectedも参照。

aria-checked属性は、その要素がチェックされている(true)かチェックされていない(false)かを示すほか、他の要素のグループにチェックされている状態とチェックされていない状態の両方のが含まれている(mixed)ことを示す。ほとんどの入力はtruefalseの値だけをサポートするが、mixedの値は、checkboxmenuitemcheckboxのような3値の入力によってサポートされている。

mixedの値は、radiomenuitemradio、およびタクソノミーでこれらを継承する要素のいずれでもサポートされていないユーザーエージェントは、これらのロール(role)mixedの値があればfalseと等価として処理しなければならない

3値の入力のmixedの値の使用例は、WAI-ARIAベストプラクティス [ARIA-PRACTICES] で提供されている。

aria-checkedの特性
特性
使用しているロール(role):option
値:NMTOKEN
aria-checkedの値
説明
true:この要素がチェックされている。
false:この要素は、チェックされたステート(state)をサポートしているが、現在はチェックされていない。
mixed:3値のcheckboxまたはmenuitemcheckboxのための混合モードの値を示す。
undefinedこの要素は、チェックされたステート(state)をサポートしていない。

aria-controls (プロパティ)

現在の要素によってコンテンツまたは存在が制御されている要素を特定する。aria-ownsも参照。

例えば、以下のようなケースがある。

  • ツリービューの目次によって、隣にあるヘルプコンテンツの文書ペインに表示されるコンテンツが制御される。
  • チェックボックスのグループによって、テーブルやグラフにライブ表示される商品相場の種類が制御される。
  • タブによって、関連付けられたタブパネルの表示が制御される。
aria-controlsの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:IDREFS

aria-describedby (プロパティ)

そのオブジェクトを記述する要素を特定する。aria-labelledbyも参照。

これは、aria-labelledbyを持つオブジェクトのラベリングに非常によく似ている。ラベルとは、そのオブジェクトが何をするかのエッセンスをユーザーに提供するためのものであり、一方のディスクリプションは、一部のユーザーが必要とするかもしれない詳細を提供するものである。

aria-describedbyによって参照される要素は、記述を完全に構成しなければならない。必要であれば複数の要素に対するIDリファレンスを含み、あるいはそのIDによって参照されている要素を伴った要素のセット(例えば段落)を囲む必要がある。

aria-describedbyの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:IDREFS

aria-disabled (ステート(state))

要素知覚可能ではあるが無効とされていて、結果として編集可能または操作可能ではないことを示す。aria-hiddenおよびaria-readonlyも参照。

例えば、ラジオグループ内の無関係なオプションは、無効化することができる。無効化された要素は、タブの順序からのフォーカスを受けないかもしれない。また、無効化された要素に対しては、アプリケーションが子孫へのナビゲーションをサポートしない場合がある。項目が無効化された場合は、見た目の変化(グレーに変わるなど)が施されるべきである

無効化されたステート(state)は、現在の要素のほか、aria-disabled属性が適用された要素の子孫のうち、フォーカス可能な要素すべてに対して適用される。

aria-disabledの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-disabledの値
説明
true:その要素とすべてのフォーカス可能な子孫が無効化されていて、ユーザーはその値を変更できない。
falseその要素が有効化されている。

aria-dropeffect (ステート(state))

ドラッグ&ドロップの操作で、ドラッグされたオブジェクトがドロップターゲット上でリリースされた時の結果を示す。

1つの要素に対して複数の結果がサポートされている場合がある。このため、この属性は、スペース区切りのトークンを示すことで可能性のある結果をすべて包含するか、サポートするオペレーションがない場合はnoneとする。開発者は、aria-dropeffect属性の設定に加えて、潜在的なドロップターゲットを視覚的に示すべきである

aria-dropeffectの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:NMTOKENS
aria-dropeffectの値
説明
copy:ソースオブジェクトのコピーが、ターゲットにドロップされる。
move:ソースオブジェクトが元のロケーションから削除され、ターゲットにドロップされる。
reference:ドラッグされたオブジェクトへのリファレンスまたはショートカットが、ターゲットのオブジェクト内に作られる。
execute:ドロップのターゲットによってサポートされた機能が実行され、ドラッグのソースが入力として使われる。
popup:ドラッグ操作のいずれか(copy、move、reference)、およびドラッグのキャンセルなどの他のドラッグ機能をユーザーが選ぶためのポップアップメニューまたはダイアログがある。
noneオペレーションが何も実行されない。このオブジェクトをドロップしようとすると、ドラッグ操作は事実上キャンセルされる。

aria-expanded (ステート(state))

展開または折り畳み可能な要素のグループが、現在展開されているか、折り畳まれているかを示す。

例えば、ツリーの一部分が展開されているか、折り畳まれているかを示す。

aria-expandedの特性
特性
使用しているロール(role):
値:NMTOKEN
aria-expandedの値
説明
true:グループが展開されている。
false:グループが折り畳まれている。
undefinedグループが展開も折り畳みもされていない。子の要素がすべて示されているか、または子の要素がない。

aria-flowto (プロパティ)

コンテンツの推奨すべき読み上げ順序で次に来る要素を特定し、文書のソース順序に読み上げる一般的なデフォルトの読み上げ順序を上書きする。

aria-flowtoがIDREFを1つ持っている場合、支援技術は、ユーザーの要求を受けて、文書を読み上げる通常の順序を無視し、ターゲットとされたオブジェクトに進むことができる。それ以降の要素のaria-flowtoは、XHTML2のnext focus([XHTML] 、セクション13)に似たプロセスに従う。ただし、aria-flowtoが複数のIDREFSを与えられている場合は、モデルベースのオーサリングツールで行われるように、支援技術によってパスの選択肢として処理されるべきである。

IDREFSが1つであっても複数であっても、ユーザーは、ターゲットとされた要素のいずれにでも進めるオプションを、ユーザーエージェントまたは支援技術によって与えられているべきである。パスの名前は、aria-flowto属性のターゲット要素の名前によって決めることができる。アクセシビリティAPIは、名前の付いたパスの関係を提供することができる。

aria-flowtoの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:IDREFS

aria-grabbed (ステート(state))

ドラッグ&ドロップの操作で、要素がグラブされた(つかまれた)ステート(state)であることを示す。

これがtrueに設定されていれば、ドラッグのために選択されていることを示す。falseに設定されていれば、ドラッグ&ドロップ操作のためにその要素をつかむことができるが、現在はつかまれていないことを示す。undefined(またはなし)に設定されていれば、その要素をつかめないことを示す(デフォルト)。

aria-grabbedtrueに設定されている場合は、潜在的なすべてのドロップターゲットに対してaria-dropeffect属性が適切に設定されているべきであるオブジェクトがつかまれていない(値がfalseまたはundefinedに設定されている、もしくはこの属性が削除されている)場合は、関連付けられたドロップターゲットのaria-dropeffect属性がnoneに戻るべきである

aria-grabbedの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:NMTOKEN
aria-grabbedの値
説明
true:要素がドラッグのためにつかまれていることを示す。
false:要素がドラッグをサポートしていることを示す。
undefined要素がドラッグをサポートしていないことを示す。

aria-haspopup (プロパティ)

その要素がポップアップのコンテキストメニューまたはサブレベルメニューを持っていることを示す。

これは、起動を受けて条件付きコンテンツがレンダリングされることを意味する。通常のツールチップは、この文脈ではポップアップとは見なされない。

ポップアップは一般に視覚的な提示であり、複数の項目のグループが、メインのページコンテンツの上に表示される。可能であれば、ポップアップが開くと同時に、全体が見えるべきである(画面上に完全に表示されていることを、開発者が確認すべきである)。

aria-haspopupの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-haspopupの値
説明
true:オブジェクトにポップアップがあり、子孫としてまたはaria-ownsによってポイントされている。
falseオブジェクトにポップアップがない。

aria-hidden (ステート(state))

要素がユーザーに対して可視または知覚可能となっていないことを示す。aria-disabledも参照。

例えば、一定のユーザーアクション後にのみメニューが見えるようにする場合は、メニューが表示されるまでaria-hidden属性trueに設定され、アクションが実行されたらaria-hidden属性が取り除かれて、メニューが見えるようになったことが示される。これにより、支援技術は、文書内の隠された要素を適切に飛ばすことができるようになる。

開発者は、可視状態を変更して、それとは別にこのプロパティの更新を行うよりも、オブジェクトの可視状態をこの属性からキーオフするのが望ましい。属性値の選択方法については、CSS 2([CSS] 、セクション5.8.1)を参照してほしい。以下のCSS宣言は、aria-hidden属性がtrueでないかぎりコンテンツが表示されることを意味している。スクリプトは、可視状態を変えるにあたってこの属性ののみを更新すればよい。

[aria-hidden="true"] { visibility: hidden; }

注:この文書の執筆時点で、このCSSの例は、技術的には正しいものの、一部のブラウザでは、属性の値が動的に変更されると、表示スタイルが適切に変更されない。クラス名をトグルで切り替えるか、さもなければブラウザに適切な表示スタイル変更を強制する必要があるかもしれない。

注:開発者は、visibility:hiddenおよびdisplay:noneすべてのCSSメディアタイプに適用されることに注意しなければならない。このため、モダリティにかかわらず、いずれか1つを使うだけで、このコンテンツはすべてのレンダリングから隠されるようになる。コンテンツを視覚的に隠すために他の方法(例えば、opacityやoff-screen positioning)を使っている開発者は、aria-hidden属性が適切に更新されることを確認すべきである。

aria-hiddenの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-hiddenの値
説明
true:文書の該当セクションとその子が、レンダリングされた表示から隠されていることを示す。
false文書の該当セクションがレンダリングされていることを示す。

aria-invalid (ステート(state))

入力された値が、アプリケーションが求めているフォーマットに従っていないことを示す。

値が計算された結果、無効または範囲外となる場合は、この属性trueに設定されるべきであるユーザーエージェントは、このエラーをユーザーに知らせるべきである。アプリケーションは、修正方法が分かっていれば、その提案を示すべきである。ユーザーエージェントは、aria-invalidtrueになっている要素が存在するかぎり、フォームの送信を拒否してもよい

aria-requiredtrueとなっているフィールドを含んだデータをユーザーが送信しようとする際は、エラーがあることを示すために、アプリケーションはaria-invalid属性を使ってもよい。ただし、ユーザーがフォームを送信しようとしていない場合は、単にユーザーがデータをまだ入力していないということであるため、必須のウィジェットaria-invalid属性を設定すべきではない。

将来の拡張のために、aria-invalid属性は列挙タイプとなっている。許可されたのリストに含まれていない値は、値としてtrueが提供されているものとして処理されなければならない。この属性が存在しない、あるいは値がfalseまたは空白の文字列になっている場合は、falseのデフォルト値が適用される。

aria-invalid属性は、適用されている要素にのみ適用され、子孫の要素に継承されることはない。

aria-invalidの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:NMTOKEN
aria-invalidの値
説明
grammar:グラマーのエラーが探知された。
false値にエラーが探知されなかった。
spelling:スペルのエラーが探知された。
true:ユーザーの入力した値が、検証で不適合とされた。

aria-label (プロパティ)

現在の要素をラベル付けする文字列のを定義する。aria-labelledbyも参照。

ラベルは、そのオブジェクトが何をするかのエッセンスをユーザーに提供すべきである。ラベルに対する最も一般的なアクセシビリティAPIマッピングは、アクセシブルな名前のプロパティである。

概念としてはaria-labelledby属性に似ていて、この属性は、1つ目の要素をラベル付けする2つ目の要素を参照する。ラベルのテキストが画面上に表示されていれば、開発者は、aria-labelledbyを使用すべきでありaria-labelは使用すべきではないaria-labelは、画面上に可視ラベルを持つことができないインタフェースにおいてのみ、使用する。

aria-labelの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:string

aria-labelledby (プロパティ)

現在の要素をラベル付けする要素を特定する。aria-labelおよびaria-describedbyも参照。

これは、aria-describedbyを持つオブジェクトの記述に非常によく似ている。ラベルとは、そのオブジェクトが何をするかのエッセンスをユーザーに提供するためのものであり、一方のディスクリプションは、一部のユーザーが必要とするかもしれない付加的な情報を提供するものである。

注:アメリカ英語に従うのであれば、このプロパティの正しいスペリングは「labeledby」である。しかし、このプロパティがマッピングされる先のアクセシビリティAPI機能では、「labelledby」というスペリングが定着している。このため、このプロパティは、慣習に則り、開発者の困難を最小限に抑えるために、後者のスペリングを採用している。

aria-labelledbyの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:IDREFS

aria-level (プロパティ)

ある構造内における要素の階層構造のレベルを定義する。

これは、ツリー内のツリー項目、文書内の見出し、ネスティングされたグリッドのほか、コンテナ内に表示される可能性があるその他の構造項目、オーナーシップの階層構造に参加する可能性があるその他の構造項目に適用できる。aria-levelは、1以上の整数である。

レベルは、深さとともに値が増える。DOMの先祖が正確にレベルを表現しない場合に、aria-level属性は、開発者によって維持されるべきである。

この属性は、たとえすべての兄弟が同じレベルにあるとしても、親のグループ化要素ではなく、リーフノード(フォーカスを受ける要素)に適用される。これはつまり、1つのセットに収められた複数の要素が、この属性に対して同じ値を持ち得ることを意味している。コンテナに対して1つの値を提供するほうが反復が少なくなるのは確かだが、開発者が常にそれをできるとは限らない。適用をリーフノードに限ることによって、支援技術によるこの属性の使用方法が1つに統一される。

DOMの先祖が正確にレベルを表現するのであれば、ユーザーエージェントは、文書構造から項目のレベルを計算することができる。この属性は、文書構造またはaria-owns属性からの計算が不可能な場合に、レベルを明示するのに使うことができる。レベル自動計算の自動サポートは、ユーザーエージェントによって異なる可能性があるため、開発者は、ユーザーエージェントおよび支援技術でテストし、この属性が必要かどうかを見極めるべきである。ユーザーエージェントによる計算を意図するのであれば、開発者は、この属性を省略すべきである

aria-levelの特性
特性
使用しているロール(role):
値:integer

aria-live (プロパティ)

要素が更新されることを示し、また、このライブリージョンからユーザーエージェント支援技術、およびユーザーが期待できる更新のタイプを記述する。

この属性は、politenessのレベルとして表現される。politeと指定されたリージョンは、ユーザーに更新を知らせるが、現在のタスクを中断することはなく、更新は低い優先順位を与えられる。より迅速にユーザーに更新を伝える必要がある場合は、assertiveの値を使用する。例えば、警告や、各フォームフィールドを即座に確認するフォームにおけるエラーメッセージなどが、これに該当する。

基本的にpolitenessのレベルは、更新のための命令メカニズムで、ユーザーエージェントと支援技術に対して強い提案として機能する。その値は、ユーザーエージェント、支援技術、またはユーザーによって上書きされる可能性がある。例えば、キー操作やマウスのクリックへの応答として変更が起きたと支援技術が判断するのであれば、その支援技術は、たとえaria-live属性の値が他の処理を示唆しているとしても、即座に変更を提示することができる。

ユーザーによってニーズが異なるため、一定のpolitenessのレベルを持ったライブリージョンに対する支援技術の応答を、一般的に定義されたベースラインから調整するのは、ユーザーに委ねられている。支援技術は、レベルの増減を細かく実装して、ユーザーがキューおよび中断を制御できるようにしてもよい。

更新を送る必要があるオブジェクト上にこのプロパティが設定されていなければ、politenessのレベルは、そのaria-live属性を設定する直近の先祖の値となる。

aria-live属性は、ライブリージョンに対する変更の提示順序を決定する主な要因である。実装においては、先祖のチェーンにaria-live属性が設定されていない場合に、ロール(role)のpolitenessのデフォルトレベルをどうするかを検討しなければならない(例えば、logの変更は、デフォルトでpoliteとなっている)。assertiveと指定された項目は即座に提示され、これに続いてpoliteの項目が提示される。実装は、assertiveの変更があった場合に、キューに入っている変更をクリアすることを選んでもよい(例えば、assertiveと指定されたリージョンの変更が、現在キューに入っているすべての変更を削除してもよい)。

aria-liveの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:NMTOKEN
aria-liveの値
説明
offそのリージョンに対する更新は、ユーザーに提示されるべきではない。
polite:(バックグラウンドでの変更)これは、ほとんどのライブリージョンに対するデフォルトの動作とされるべきである。更新は、例えば現在の文章の読み上げが終わった時点やユーザーがタイプ入力の手を止めた時点など、無理がない範囲で次の機会に告知される。
assertive:この情報は、最も高い優先順位を持つ。ユーザーエージェントは、直ちにユーザーに通知すべきである。これによりユーザーは混乱し、現在のタスクを続けなくなる可能性がある。このため、多用すべきではない。

aria-multiline (プロパティ)

テキストボックスが1行だけを受け付けるか、複数行を受け付けるかを示す。

テキストボックスが単数行か複数行かによる違いは、ARIAにはほとんど存在しない。どちらも任意のテキスト入力を認めているためである。これを示す主な理由は、Enterキーの動作の違いを警告することにある。複数行テキストボックスではEnterキーによって新しい行が追加されるが、単数行テキストボックスでは行が追加されず、テキストボックス外の機能、例えばフォームの送信などを起動する可能性がある。

aria-multilineの特性
特性
使用しているロール(role):textbox
値:boolean
aria-multilineの値
説明
true:複数行のテキストボックスである。
false単数行のテキストボックスである。

aria-multiselectable (プロパティ)

ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示す。

リスト、ツリー、グリッドは、ユーザーが一度に複数の項目を選択するのを許可する。

選択された子孫のaria-selected属性は、trueに設定されるべきである。選択可能だが選択されていない子孫のaria-selected属性は、falseに設定されるべきである。選択可能でない子孫の場合は、aria-selected属性を使うべきではない

aria-multiselectableの特性
特性
使用しているロール(role):
値:boolean
aria-multiselectableの値
説明
true:ウィジェット内の項目を一度に複数選択できる。
false1項目だけが選択できる。

aria-owns (プロパティ)

DOMの階層を使って親子の関係を表現することができないDOMの要素間で、視覚的または機能的な親子関係の文脈を定義するために、要素を特定する。

aria-owns属性は、文書内の1つまたは複数の要素を参照するIDREFSのスペース区切りのリストとなる。aria-ownsを追加する理由は、これがなければDOMからだけでは推測できない親子の文脈関係を、支援技術に対してエクスポーズするためである。

開発者は、DOMの階層構造の代わりとしてaria-ownsを使うべきではない。つまり、DOMによって関係が把握できるのであれば、aria-ownsは使わない。

aria-ownsの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:IDREFS

aria-posinset (プロパティ)

リスト項目またはツリー項目の現在のセットにおける要素の番号または位置を定義する。DOMによって推測される場合は、必須ではない。aria-setsizeも参照。

例えば、この要素がグループ内の3番目の項目であれば、posinset3となる。aria-posinsetは、1以上の整数で、そのセットのサイズ以下である。

セット内のすべての項目が文書構造に存在していれば、この属性の設定は必要ではない。ユーザーエージェントは、セットのサイズを自動的に計算して、各項目の位置を整えることができるからだ。しかし、セットの一部のみが文書構造に存在する瞬間があるのであれば、明示的な指示を与えるためにこのプロパティが必要となる。

aria-posinsetは、aria-setsizeと併せて使用すべきである

aria-posinsetの特性
特性
使用しているロール(role):
値:integer

aria-pressed (ステート(state))

トグルボタンが現在押されたステート(state)であることを示す。aria-checkedおよびaria-selectedも参照。

トグルボタンは、を変更するにあたって、押すと放すのフルサイクルを必要とする。1回有効化すると、値がtrueに変わり、もう1回有効化すると、値がfalseに戻る。mixedの値は、そのボタンによって制御されている複数の項目が同じ値を共有していないことを意味する。mixedのステート(state)のボタンの例は、WAI-ARIAベストプラクティス [ARIA-PRACTICES] で説明されている。この属性が存在しなければ、そのボタンはトグルボタンではない。

aria-pressed属性は、aria-checked属性に似ているが、まったく同じではない。オペレーティングシステムは、ボタンに対してはpressedをサポートし、チェックボックスに対してはcheckedをサポートする。

aria-pressedの特性
特性
使用しているロール(role):button
値:NMTOKEN
aria-pressedの値
説明
true:この要素が押されている。
false:この要素は、押されたステート(state)をサポートしているが、現在は押されていない。
mixed:3値のトグルボタンのための混合モードの値を示す。
undefinedこの要素は、押されたステート(state)をサポートしていない。

aria-readonly (プロパティ)

その要素が編集不可能だが、編集以外は操作可能であることを示す。aria-disabledも参照。

これは、ユーザーが読むことはできるが、ウィジェットの値を設定できないことを意味する。readonlyの要素はユーザーにとって意義があるため、アプリケーションは、フォーカス可能な子孫にナビゲーションを限定すべきではない。要素の値をコピーするといった他のアクションも、やはりサポートされる。これとは対照的に、無効化された要素では、アプリケーションが子孫へのナビゲーションを許可しない可能性がある。

例えば、以下のような例がある。

  • 定数を表現するフォーム要素
  • スプレッドシートグリッドの行または列見出し
  • ショッピングカートの合計額のような計算結果
aria-readonlyの特性
特性
使用しているロール(role):
値:boolean
aria-readonlyの値
説明
true:ユーザーが要素の値を変更できない。
falseユーザーが要素の値を変更できる。

aria-relevant (プロパティ)

ライブリージョン内の変更の性質を示す。aria-atomicも参照。

この属性は、additionsremovalstextからなるスペース区切りのリスト、またはキャッチオール値のall単体で表される。

これは、単に表現的な変更ではなく、セマンティクス的に意味のある変更を記述するのに使われる。例えば、ログのトップからノードが削除されると、他のエントリに対する場所を作るという目的は失われるが、その削除自体には意味がない。一方、バディリストでは、バディの名前が削除されると、その人がオンラインからいなくなったことを示し、これは意味があるイベントだ。この場合は、relevantがallと設定されるべきである。aria-relevantの属性が提供されていない場合は、デフォルトとして、テキストおよびノードの追加には意味があり、ノードの削除は意味がないものと見なす。

注:aria-relevantのremovalsおよびallの値は、多用すべきではない。支援技術は、バディがチャットルームを離れるなど、削除されるコンテンツが重要な場合のみ、それを知りたいと考える。

aria-relevantは、ライブリージョンのオプションの属性である。これは支援技術に対する提案だが、支援技術は、すべてのrelevantタイプの変更を提示する義務はない。

アクセシビリティAPI文書オブジェクトモデル [DOM] の両方がイベントを提供して、変更があった文書内のエリアを支援技術が見極められるようにする。

この値が設定されていなければ、値はオブジェクトの直近の先祖から継承される。値の継承は追加的ではなく、オブジェクト上で提供または省略された値はすべて、値の継承を完全に上書きする。

aria-relevantの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:NMTOKENS
aria-relevantの値
説明
additions:リージョン内のDOMにノードが追加される。
removals:DOMからノードが削除される。
text:テキストがDOMに追加、またはDOMから削除される。
all:「additions removals text」の値と等価。
additions textノードあるいはテキストがDOMに追加、またはDOMから削除される。

aria-required (プロパティ)

フォームを送信する前に、その要素へのユーザー入力が必須であることを示す。

例えば、ユーザーが住所のフィールドを記入しなければならないのであれば、aria-requiredtrueに設定すべきである

注:要素が必須かどうかは、多くの場合、視覚的に表現されている(ウィジェットの後にサインやシンボルを付けるなど)。開発者は、決定的ではない表示スタイルを使うのではなく、aria-required属性を使うことによって、要素が必須であることを支援技術に対して明示的に伝えられるようになる。

aria-required属性は、適用されている要素にのみ適用され、子孫の要素に継承されることはない。

aria-requiredの特性
特性
使用しているロール(role):基本マークアップのすべての要素
値:boolean
aria-requiredの値
説明
true:フォームを送信する前に、ユーザーが要素の入力を提供しなければならない。
falseユーザー入力がなくても、フォームを送信できる。

aria-selected (ステート(state))

様々なウィジェットが現在選択されたステート(state)であることを示す。aria-checkedおよびaria-pressedも参照。

この属性は、単一選択および複数選択のウィジェットで使用される。

  1. 単一選択のコンテナで、現在フォーカスされている項目が選択されていない場合。選択は通常、フォーカスに従うが、ユーザーエージェントによって管理される。開発者は、フォーカスされた項目が実際に選択されていない時のみaria-selectedを使うべきである。唯一の有用なfalseとなる。falseでなければ、現在フォーカスされた項目が選択されていると見なされてしまうためだ。
  2. 複数選択可能なコンテナの場合。aria-multiselectable属性がtrueになっているコンテナの選択可能な子孫はすべて、aria-selected属性にfalseまたはtrueの値を指定しなければならない。
aria-selectedの特性
特性
使用しているロール(role):
値:NMTOKEN
aria-selectedの値
説明
true:選択可能な要素が選択されている。
false:選択可能な要素が選択されていない。
undefined要素が選択可能ではない。

aria-setsize (プロパティ)

リスト項目またはツリー項目の現在のセットに含まれている項目数を定義する。DOMによって推測される場合は、必須ではない。aria-posinsetも参照。

例えば、この要素が同じレベルに6項目を持ったグループのなかにあれば、aria-setsizeは6となる。aria-setsizeは、1以上の整数である。

このプロパティは、セット内のメンバーにマークされるのであって、メンバーを収めるコンテナ要素にマークされるのではない。支援技術は、ある要素が「Y個中のX番目の項目」であると言うことによってユーザーに方向性を与えるために、aria-posinset属性に等しいXと、aria-setsize属性に等しいYを使うことになる。

セット内のすべての項目が文書構造に存在していれば、このプロパティの設定は必要ではない。ユーザーエージェントは、セットのサイズを自動的に計算して、各項目の位置を整えることができるからだ。しかし、セットの一部のみが文書構造に存在する瞬間があるのであれば(文書サイズを減らすため)、明示的な指示を与えるためにこのプロパティが必要となる。

aria-setsizeは、aria-posinsetと併せて使用すべきである

aria-setsizeの特性
特性
使用しているロール(role):listitem
値:integer

aria-sort (プロパティ)

テーブルまたはグリッド内の項目が昇順または降順のどちらでソートされているかを示す。

このプロパティは、テーブルまたはグリッドの見出しにのみ適用されるべきである。このプロパティが提供されていなければ、定義されたソート順は存在しない。開発者は、テーブルまたはグリッドのそれぞれについて、一度に1つの見出しに対してのみaria-sortを適用すべきである

aria-sortの特性
特性
使用しているロール(role):
値:NMTOKEN
aria-sortの値
説明
ascending:この列の項目が昇順でソートされている。
descending:この列の項目が降順でソートされている。
noneこの列に定義されたソートが適用されていない。
other:昇順と降順のいずれでもないソートのアルゴリズムが適用されている。

aria-valuemax (プロパティ)

ウィジェットの範囲に対して許可されている最大値を定義する。

範囲のウィジェットは、任意の値から開始でき、このプロパティによって定義される最大値に到達するまで、その値を増やしていくことができる。

最大と最小のを宣言することによって、代替機器は、矢印キーに応答し、現在の値を確認し、また範囲のサイズをユーザーに知らせることができるようになる。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxaria-valueminのプロパティを提供すべきである

aria-valuemaxの特性
特性
使用しているロール(role):
値:decimal

aria-valuemin (プロパティ)

ウィジェットの範囲に対して許可されている最小値を定義する。

範囲のウィジェットは、任意の値から開始でき、このプロパティ,によって定義される最小値に到達するまで、その値を減らしていくことができる。

最大と最小のを宣言することによって、代替機器は、矢印キーに応答し、現在の値を確認し、また範囲のサイズをユーザーに知らせることができるようになる。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxaria-valueminのプロパティを提供すべきである

aria-valueminの特性
特性
使用しているロール(role):
値:decimal

aria-valuenow (プロパティ)

ウィジェットの範囲に対する現在の値を定義する。aria-valuetextも参照。

例えば、スライドバーやプログレスバーなどの範囲ウィジェットに使われる。

現在の値が不明(不確定なプログレスバーなど)の場合、開発者は、aria-valuenow属性を設定すべきではないaria-valuenow属性が存在しなければ、現在の値に関する情報は示唆されない。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxaria-valueminのプロパティを提供すべきである

aria-valuenowの値は、数値である。範囲が複数の数値のセットであれば、aria-valuenowは、それらの値のいずれかとなる。例えば、範囲が [0, 1] であれば、0.5は有効なaria-valuenowである。範囲外の値、例えば-2.5や1.1などは、無効である。

範囲が定性的な文字列の値、例えば「small」「medium」「large」などであれば、aria-valuenowは、それらのいずれかを選択するインデックスとなる。aria-valuenowと併せてaria-valuetext属性を使うことにより、その範囲の現在の値に対してユーザーフレンドリーな表現を提供すべきである。この例では、「small」「medium」「large」の文字列のいずれかとなるだろう。

aria-valuenowの特性
特性
使用しているロール(role):
値:decimal

aria-valuetext (プロパティ)

ウィジェットの範囲のaria-valuenowに対して人間が読むことのできるテキスト等価物を定義する。