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)、選択、イベント通知、関係情報、記述)が含まれている。

図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. スコープ
この仕様の目的としては、以下の点が挙げられる。
- 開発者が制御できる情報を定義すること。
- 電話、PDA、テレビといった新しい機器において、機器に依存しない状況をサポートすること。
- スクリプトによって生成される動的なコンテンツのアクセシビリティを向上すること。
- 支援技術との相互運用性を実現すること。
このドラフトでは、現在、ロール(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.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-posinsetやaria-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の実装方法に関する詳細な手引き、およびサンプルコードのリファレンスを提供している。
アプリケーションをアクセシブルにする最初のステップは次の通りである。
- 要素またはウィジェットのそれぞれに正しい完全なセマンティクスがあり、そのセマンティクスが(要素名とロール(role)を使用して)動作を十分に記述している。
- 要素とグループの間の関係が定義されている。
- ステート(state)、プロパティ、コンテナの関係が各要素の動作に対して有効で、かつ文書オブジェクトモデル [DOM] とプラットフォームのアクセシビリティAPIを介してアクセスできるようになっている。
- キーボードフォーカスは、ユーザーがアプリケーションを閲覧・操作している間中、保持されるべきである。
- すべてのインタラクティブなコンポーネントが、キーボードで操作可能であるべきである。
ARIAでは、ウェブアプリケーションの様々な要素をセマンティクス的にリッチにする方法を、開発者に提供している。ユーザーエージェントは、ロール(role)のセマンティクスを使って、各要素をどのように扱うべきかを理解する。支援技術がアプリケーション内の要素の動作を予期するにあたって必要とする付加情報、例えば、対応するARIAのステート(state)とプロパティをどのようにユーザーに提示するかといった情報を、ロール(role)は提供する。ユーザーエージェントは、ホスト言語からのアクセシビリティ・セマンティクスとARIAのアクセシビリティ・セマンティクスを使用して(後者が前者を補足または上書きすることがある)、文書オブジェクトモデルまたはプラットフォームのアクセシビリティAPIを介して支援技術にセマンティクスを提供する。ユーザーエージェントは、ウェブページ内の各要素をアクセシブルな方法で提示し、それらの要素のセマンティクスが変更されれば、適切なアクセシビリティAPIを使って、支援技術にそれを伝える。
以下のステップは、コンテンツに対してARIAを適用する際に推奨されるステップである。
-
可能なかぎりネイティブのマークアップを使用する
ホストマークアップ言語で定義されたセマンティクス要素を使用する。例えば、HTMLまたはXHTMLでは、checkboxのロール(role)が付いたdiv要素を使うよりも、ネイティブのチェックボックスを使うほうが好ましい。これらがすでに、ブラウザを介してアクセシブルになっていると予想できるためだ。また、ホスト言語にすでに存在する要素をARIAが補足できるケースもあるかもしれない。例えば、gridとgridcellの要素は、テーブルにかかっていれば、その機能を再使用できる。ARIAのロール(role)、ステート(state)、およびプロパティは、マークアップ言語が必要なすべてのセマンティクスをサポートしていない場合にのみ使うのがベストだ。role属性が要素に追加されると、その要素のセマンティクスと動作は、roleの動作によって上書きされる。
-
適切なロール(role)を適用する
予期可能なように要素が動作し、要素の動作がネイティブのマークアップ言語で完全に記述されていなければ、各要素のアプリケーション内での動作を正確に記述するように、ロール(role)を設定する。インタラクティブな要素のロール(role)は、その要素が使う可能性のある属性をすべてサポートしているべきである。一度設定したrole属性は、変更すべきではない。role属性を変更すれば、エンドユーザーを混乱させる可能性があるためだ。これには、role属性が設定されている要素を削除することも含まれる。要素においては、ステート(state)とプロパティ(「aria-*」の属性)のみが変更されるべきである。
-
セマンティクスの構造を守る
構造情報は、障がいのある人に文脈を提供するうえで非常に重要である。構造要素内およびウィジェット内ではDOMの階層構造を守り、ユーザインターフェースウィジェット内ではgroup内のtreeitem要素のような論理グループを形成する。具体的には、ページ内のグループを見つけたうえで、その利用目的を最も的確に記述するロール(role)を使って、そのグループをマークする。例えば、Ajaxアプリケーションを介して変更される可能性が高い要素のグループを含んだページのリージョンは、aria-live属性を使用してライブリージョンと指定することができる。また、文書ランドマークを使用して、キーボードナビゲーションを容易にする。フルキーボードアクセスと文書セマンティクスを提供すれば、視覚や巧緻性に障がいのあるユーザー、さらには認知障がい、学習障がいのあるユーザーも含み、すべての人に役立つ。
-
関係を構築する
要素間の関係を見極めたうえで、最も適切なプロパティまたは属性を使って、その要素をマークする。例えば、あるページに検索フォームと検索結果のリージョンが両方含まれていれば、各コンテナをregionとマークしたうえで、検索フォームが検索結果を参照するように、検索フォームのaria-controls属性を設定する。詳しくは、WAI-ARIAの「関係」のセクションを参照してほしい。
関係のなかには、ホスト言語から自動的に決定されるものもある。例えば、HTMLのinput要素に関連付けられたlabel要素がこれに該当する。
-
イベントへの応答としてプロパティを設定する
要素のロール(role)を設定後、その要素のライフサイクル中の変化に適切なように、ステート(state)とプロパティを変化させる。これは通常、ユーザーの入力イベントへの応答として行われる。選択したロール(role)または要素にサポートされている属性だけを使用しなければならない。
ステート(state)に変化があれば、ユーザーエージェントが支援技術に通知すべきである。一方、支援技術によるプロパティ変更の通知は、支援技術がユーザーエージェントと通信するのに使う方法によって異なってくる。例えば、aria-multiline属性(プロパティ)は頻繁に変わるものではないが、aria-checked属性(ステート(state))はユーザー入力への応答として頻繁に変更される。
-
使いやすい完全なキーボードナビゲーションをサポートする
リッチ・インターネット・アプリケーションにおける使いやすいキーボードナビゲーションとは、静的な文書をタブ送り(Tabキー操作)でナビゲートすることとは異なる。リッチ・インターネット・アプリケーションは、むしろデスクトップ・アプリケーションに似た動作をし、ユーザーは、大きなウィジェットを選ぶのにTabキーを使い、メニューやスプレッドシートなど、複雑なウィジェット内をナビゲートするのには矢印キーを使う。ARIAがキーボードナビゲーションに導入する変更によって、この高度なアクセシビリティが可能となる。文書内でTabキーが押された場合は、論理ナビゲーション構造に従うべきである。矢印キーのナビゲーションを実装する開発者は、可能なかぎり、WAI-ARIAベストプラクティス [ARIA-PRACTICES] で説明されている設計パターンに従うべきである。これらの機能を使う際は、常にキーボードナビゲーションが論理的になっていることを確認することが重要である。
-
視覚的なインタフェースとアクセシブルなインタフェースを同期化する
これにより、ユーザーと支援技術にとってUIのステート(state)が知覚可能となる。例えば、開発者は、フォーム要素が必須となっている(aria-requiredを使用する)場合や、グリッドセルが選択されている(aria-selectedを使用する)場合に応答する関連セレクタを持っているべきである。開発者は、これらのインタフェース要素の視覚的な同期化を達成するために、スクリプトまたはCSS属性セレクタを使うことができる。文書のアクセシブルなステート(state)にUIを同期化する適切な方法については、WAI-ARIAベストプラクティス [ARIA-PRACTICES] を参照してほしい。
2.5. 事例:ツリーウィジェットの構築
基本的なツリービューでは、ユーザーが様々なリスト項目から選択したり、子ノードのあるリストの展開と折り畳みを行ったりすることができる。ツリーのナビゲーションには矢印キーが使われ、左矢印と右矢印を使えばサブツリーの折り畳みと展開が操作できる。また、マウスでダブルクリックしても、展開のトグル変更が可能だ。
この機能をアクセシブルにするためには、次のことをする必要である。
その手順は次の通りである。
-
ネイティブマークアップ言語を見る
標準的なリストのふるまいは、HTMLにネイティブのul要素およびli要素でサポートされているが、リストの展開や選択をサポートするネイティブの要素はない。このため、ロール(role)を使う必要がある。
-
正しいロール(role)を見つける
HTMLにはネイティブのツリー要素がないため、このタクソノミーから必要なステート(state)とプロパティをサポートするロール(role)を追加する必要がある。ツリー動作をサポートするロール(role)には、以下のものがある。
tree:ツリーは、WAIが提唱するツリーを作る主なコンテナ要素である。これはselectの一種で、ツリー項目のサブレベルグループの折り畳みと展開ができる。treeitem:ツリー項目は、ツリーのオプション項目である。これはツリー内の要素で、ツリー項目のサブレベルグループの折り畳みと展開ができる。group:グループは、サブレベルのツリー項目のセットを囲い込む。
-
グループを見つけ、関係を構築する
ツリーの関係は、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-level、aria-posinset、aria-setsizeを使用する。
-
イベントへの応答としてプロパティを設定する
キーボードやマウスを介したユーザー入力イベントに対する応答として、要素の動作を制御する。例えば、ツリーコントロールは、展開と折り畳みのトリガ上のクリックイベントに対して、および現在アクティブとなっている子孫上のキーイベントに対して、応答する必要がある。機器に依存せずJavaScriptをサポートするイベントを使用して、ユーザーのインタラクションに対応する。
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.4. 基本の概念
- RDFプロパティ
- role:baseConcept
そのロール(role)のプロトタイプと見なされるオブジェクトについての参考データ。基本の概念は、タイプに似ているが、制限とプロパティの継承を伴わない。基本の概念は、外部の概念の継承に代わるものとして作られた。関連する概念と似ているが、互いにとってほぼ同一物であるという点が異なっている。
例えば、この文書で定義されるcheckboxは、HTMLで定義されるチェックボックスと似た機能および動作を持っている。
このため、checkboxは、baseConceptとしてHTMLのcheckboxを有している。しかし、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)は、以下の目的のために提供されている。
- ロール(role)タクソノミーを整理し、既知の概念に即した意味をロール(role)にもたらす。
- 必要な機能を含んだロール(role)の追加を容易にする。
4.2.2. 必須のステート(state)とプロパティ
- RDFプロパティ
- role:supportedState
- 値
- すべての有効なRDFオブジェクトリファレンス、例えばURIやRDF IDリファレンスなど
そのロール(role)と子のロール(role)に対して必須とされているステート(state)とプロパティを示す。コンテンツ開発者は、必須のステート(state)とプロパティに対して値を提供すべきである。
オブジェクトが複数の先祖から継承されていて、1つの先祖があるプロパティのサポートを表現し、他の先祖はそのプロパティを必須としているのであれば、そのオブジェクトではそのプロパティが必須となる。
4.2.3. サポートされたステート(state)とプロパティ
- RDFプロパティ
- role:supportedState
- 値
- すべての有効なRDFオブジェクトリファレンス、例えばURIやRDF 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オブジェクトリファレンス、例えばURIやRDF IDリファレンスなど
このロール(role)を持った要素によって所有されなければならないすべての要素を示す。例えば、listのロール(role)を持った要素は、listitemのロール(role)を持った要素を所有しなければならない。
注:あるロール(role)の「必須の子要素」として複数のロール(role)が指定されている場合は、必須の子要素のいずれか1つの少なくとも1インスタンスが必要となる。この仕様では、リストされた子要素のそれぞれにつき1インスタンスを必須としているわけではない。例えば、menuには、menuitem、menuitemcheckbox、menuitemradioのいずれかの少なくとも1インスタンスがあるべきである。menuのロール(role)には、それぞれにつき1インスタンスが必要というわけではない。
注:必須の子要素は、編集中やデータセットのロード中などに、一時的に欠落することがある。
4.2.6. 親要素
- RDFプロパティ
- role:scope
- 値
- すべての有効なRDFオブジェクトリファレンス、例えばURIやRDF IDリファレンスなど
親要素は、このロール(role)が許可される文脈、つまり現在のロール(role)が特定の要素内で使われるべきである場合に、その特定要素のロール(role)を定義する。
例えば、listitemのロール(role)を持った要素は、listのロール(role)を持った要素に含まれる(または所有される)べきである。
4.2.7. アクセシブルな名前の計算
- RDFプロパティ
- role:nameFrom
- 値
- 以下の値のいずれかを使用する。
- author:開発者がマークアップ機能で明示した値から、名前が取得される。例えば、
aria-label属性やaria-labelledby属性、HTMLのtitle属性など。 - contents:その要素ノードのテキスト値から、名前が取得される。ロール(role)によっては、「author」に追加するかたちでこの値を使うことが許可されている場合もあるが、この値は、「author」機能が提供されていないコンテンツでのみ使われる。
4.2.7.1. 名前の計算
アクセシブルな名前は、様々な方法で計算できるが、ここでは望ましい順に紹介する。
- 現在のノード上の
aria-labelledbyによってポイントされたノードに対するテキスト等価物をつなげる。これは繰り返すことはなく、他のaria-labelledbyによって使われているサブツリー内のaria-labelledbyはすべて、実装によって無視されるべきである。テキスト等価物の計算については、以下の説明を参照してほしい。 - 現在のノードに対するテキスト等価物の計算結果を使用する。
4.2.7.2. 記述の計算
アクセシブルな記述は、現在のノード上のaria-describedby属性によってポイントされたノードに対するテキスト等価物をつなげることによって、計算できる。
4.2.7.3. テキスト等価物の計算
テキスト等価物は、上記のとおり、名前と記述の計算の両方で使われる。様々なノードのタイプとマークアップの組み合わせに対して、いくつかの規則が提供されている。テキスト等価物は、必要に応じて、要素内に含まれたすべての重要なコンテンツから構築される。これは、以下の規則2C(これは繰り返す規則である)を介して達成され、その過程では、要素自体の子からテキストを取得するための一連の規則をすべて利用する。
任意のノードに対するテキスト等価物は、以下のように計算される。
- 開発者が
aria-labelledbyまたはaria-describedbyを使って指定していないかぎり、非表示の要素は現在の計算から除外される。支援技術のユーザーは、デフォルトでは非表示の情報を受け取らない。しかし、開発者が、それを明示的に上書きして、非表示の情報を含むことができるようになっているべきである。 - 計算に含まれるすべての要素に対して、以下が適用される。
- 要素は、DOM属性内のテキスト等価物を指定することができる。その場合は、以下の順に従って指定するのが望ましい。
- この計算が、他のaria-labelledbyの結果としてすでに起こっているのでないかぎり、aria-labelledby属性が使用される(つまり、aria-labelledbyは繰り返すものではなく、ループを引き起こすことがない)。ポイントされたすべてのノードに対するテキスト等価物が、同じ規則のセットを使用してつなげられる。
- aria-label属性、すわなち単なるテキスト文字列が、次に使われる。
- 非ツールチップのすべてのネイティブマークアップ(例えば、HTMLの
img要素のalt属性)、またはこの要素をポイントしているラベルのサブツリー(例えば、HTMLのlabel要素のfor属性)が、そのマークアップの適切な仕様によって定義された規則に則って使用される。
- ユーザー入力データの付加的な使用:規則Aで取得したテキストに加え、フォームコントロールでは、ユーザー入力データが最終的な計算名の一部となる。ただしこれは、フォームコントロールが、より大きなラベルの文脈において意味のある情報を提供する立場に置かれている場合に限られる。ユーザー入力データは、そのフォームコントロールで使われている他のすべてのラベルマークアップが使われた後で付加されるべきである。例えば、ARIAの
slider要素でユーザーが入力した値は、aria-valuetextまたはaria-valuenowの等価な文字列となる。テキストフィールドの場合は、ユーザーが入力したデータが、そのフィールドのテキストとなる。 - 規則AとBに則ってDOM属性を確認したにもかかわらず結果が得られなかった場合は、現在の要素のロール(role)が名前の取得元として「contents」を許可するのであれば、子孫のコンテンツからテキストが取得される。子のノードに対するテキスト等価物が、同じ規則のセットを使用してつなげられる。この同じ規則は、子にも適用される可能性がある。つまり、計算が繰り返しになり、ノードがどれだけ深くても、すべてのサブツリーのすべてのノードにわたって、テキストが取得されることを意味する。ただし、その代わりとして、より望ましい上記AとBのマークアップから、子孫のサブツリーが自らのテキスト等価物を取得することもできる。開発者が指定するこれらの属性は、そのサブツリー全体に対して正しいテキスト等価物を提供するものと見なされている。結果的に、これらのノード規則は、子孫からテキスト等価物が取得される間中、一貫して適用される。それらの子孫の各コンテナ要素は、そのコンテンツの使用を許可する場合もあれば許可しない場合もある。
- 最後の手段として、ツールチップマークアップのテキストを使用する方法がある(例えば、HTMLの
title属性)。これは、サブツリーのコンテンツを含めても何も結果が得られなかった場合にのみ、使われる。
- テキストノードは、規則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)
4.3.1. 基本タイプ
以下のロール(role)は、適用されるロール(role)の基本タイプとして使われる。基本のクラスは、ロール(role)タクソノミーのクラス階層構造で最も高いレベルを記述するのに使われる。このセクションのロール(role)はすべて抽象のロール(role)だが、抽象のロール(role)がすべてこのセクションに含まれているわけではない。このセクションでは、タクソノミー内で最もレベルの高い抽象のロール(role)のみを取り上げている。
注:抽象のロール(role)は、オントロジーに使われる。開発者は、コンテンツ内で抽象のロール(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): | |
| 関連する概念: | XFormsのalert |
| 継承されたステート(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): |
|
| 関連する概念: | XFormsのalert |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
| ロール(role)の暗示的な値: | aria-liveのデフォルトはassertiveとなる |
application (ロール(role))
ウェブのdocumentではなく、アプリケーションとして宣言されたリージョン。
このロール(role)の目的は、通常の閲覧モード機能からアプリケーションモードの機能に切り替えるよう、支援技術に対して伝えることにある。ユーザーエージェントは、閲覧ナビゲーションモードでは、上下矢印などのキーを文書の閲覧目的で使っている。このネイティブの動作によって、ウェブアプリケーションによるこれらのキーの使用は阻まれる。
開発者は、アプリケーション全体にわたる要素に対してapplicationのロール(role)を設定すべきである。applicationのロール(role)がウェブページ全体に適用されるのであれば、コンテンツのルートノード上で設定すべきである。ルートノードとは、HTMLのbody要素やSVGのsvg要素を指す。
例えば、Eメールアプリケーションは、文書の部分とアプリケーションの部分を持っている。開発者は、Eメールのリスト内を移動する間は、一般的なアプリケーションナビゲーションモードを使用したいと考えるだろう。このナビゲーションの大半は、アプリケーションの開発者によって定義できる。しかし、Eメールのメッセージ部分を読む際は、そのコンテンツがdocumentのロール(role)を持ったリージョンに表示され、閲覧ナビゲーションが使用されるべきである。
アプリケーション内にある非装飾的な静的テキストと画像はすべて、aria-label、aria-labelledby、またはaria-describedbyを介してフォームウィジェットかgroupに関連付けられているか、もしくはdocumentまたはarticleのロール(role)を持った要素に分けられているべきである。
アプリケーションには、アプリケーションタイトルまたはラベルがあるべきである。これは、該当するページセクションに対するナビゲーションプレビューや目次エントリとして使うのに適している。ラベルは、以下のソースのいずれかから取得されるべきである。
- アプリケーションがウェブページのコンテンツ全体を含むのであれば、例えばHTMLの
title要素など、ファイル全体にラベルを付けるホスト言語のタイトルまたはラベル機能を使用する。 - そうでなければ、
aria-labelledbyを使って、アプリケーションが参照する可視ラベルを提供する。
applicationの特性| 特性 | 値 |
|---|
| 親のロール(role): | landmark |
| 関連する概念: | 機器に依存しない配信単位 |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
article (ロール(role))
文書、ページ、またはサイト内の独立した個所を形成するページのセクション。
アーティクルには、フォーラムの投稿、雑誌や新聞の記事、ブログのエントリ、ユーザーの投稿コメント、その他の独立コンテンツ項目などが含まれる。そのコンテンツを新聞や雑誌の配信でも使えることから分かるように、それ自体は独立したものである。しかし、この要素はなおも先祖に関連付けられていて、例えば、親のbody要素に適用される連絡先情報は、そのアーティクルにもかかってくる。アーティクルを入れ子にする際は、親のアーティクルのコンテンツに関連したコンテンツを、子のアーティクルが表現する。例えば、ユーザーの投稿コメントを受け付けるサイトのブログのエントリでは、ブログエントリのアーティクルのなかに入れ子にしたアーティクルとして、コメントを表現することができる。アーティクルに関連付けられた開発者、見出し、日付、その他の情報は、入れ子にしたアーティクルには適用されない。
支援技術はアーティクルを文書と同じように扱わなければならず、アーティクルはアプリケーションのように処理されなければならない。文書と異なり、アーティクルを使うことによって、ユーザーは、入れ子の構造に基づいて関連するアーティクルを認識し、追いかけられるようになる。
articleの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 関連する概念: | HTML 5のarticle |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
banner (ロール(role))
大見出し(標題)またはウェブサイトのタイトルを含むリージョン。
ほとんどのバナーコンテンツは、特定ページではなくサイト全体を通じて使われている。サイト全体を通じて使われているコンテンツの典型的な例としては、サイトスポンサーのロゴ、ページのメインの見出し、サイト独自の検索ツールなどがある。通常は、ページの上部に、左右幅をいっぱいに使って表示される。
documentおよびapplication内では、bannerのロール(role)を割り当てる要素を1つだけにすべきである。
注:documentおよびapplicationの要素はDOM内にネスティングできるため、DOMの子孫として複数のbanner要素を持つことができる。この場合、これらのそれぞれが、DOMのネスティング(例えば、document内のdocument)またはaria-owns属性によって、異なる文書ノードに関連付けられているものと仮定される。
bannerの特性| 特性 | 値 |
|---|
| 親のロール(role): | landmark |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
checkbox (ロール(role))
true、false、mixedの3つの値を持つ可能性があるチェック可能な入力。
checkboxのaria-checked属性は、その入力がチェックされている(true)かチェックされていない(false)かを示すほか、要素のグループにチェックされている状態とチェックされていない状態の両方が含まれている(mixed)ことを示す。多くのチェックボックスではmixedの値が使われないため、事実上ブーリアンのチェックボックスである。
checkboxの特性| 特性 | 値 |
|---|
| 親のロール(role): | input |
| 子のロール(role): | |
| 関連する概念: |
|
| 必須のステート(state)とプロパティ: | aria-checked |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
columnheader (ロール(role))
列の見出し情報を含んだセル。
columnheaderは、テーブルまたはグリッドの列見出しとして使用できる。また、円グラフで使って、データ内の類似関係を示すこともできる。
columnheaderは、呼応する列のなかにあるすべてのセルとの関係を確立するものである。scope属性として「column」を持ったHTMLのth要素に構造的に等しい。
注:セルは行に組織化されるため、列に対する単一のコンテナ要素は存在しない。列は、個々のrowコンテナ内で特定の位置に置かれたgridcell要素のセットである。
columnheaderの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 基本の概念: | HTMLのth(scope=col) |
| 親要素: | row |
| サポートされたステート(state)とプロパティ: | aria-sort |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
combobox (ロール(role))
selectの表現の1つ。一般に、ユーザーがタイプ入力してオプションを選べる、あるいは任意のテキストをリスト内の新しい項目として入力できるtextboxに似ている。
comboboxは、1行のテキストボックスとリストボックスのポップアップを組み合わせて表現され、編集できる場合もある。一般に、編集可能なコンボボックスは、オートコンプリートの動作に使われ、子のテキストボックスにはaria-autocompleteのプロパティを使うことができる。
注:XForms [XFORMS] では、同じselectが、コンボボックス、ドロップダウンボックス、ラジオボタングループという3通りのいずれかの方法で表示できる。多くのブラウザでは、ユーザーがドロップダウンの選択にタイプ入力することもできるようになっている。この仕様では、コンボボックスの表現に制約は課していない。
キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである。
注:comboboxのロール(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)は提供していないが、ホスト言語がその種の要素を提供しているかもしれない。その用語に対する適切な要素(例えば、HTMLのdfnまたは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): | |
| 関連する概念: | DAISYのGuide |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
document (ロール(role))
関連する情報を含み、ウェブのapplicationではなく、文書コンテンツとして宣言されているリージョン。
documentのロール(role)は、文書リージョン内のどのようなコンテンツも閲覧できるようにするために、ブラウザのキーボードサポートを補足する必要があるユーザーエージェントに対して、文書であることを告知する役目を果たす。対照的に、applicationのロール(role)を持ったリージョンでは、すべてのテキストがフォーカス可能な要素にセマンティクス的に関連付けられているべきでなので、スクリーンリーダーのユーザーが、role="application"を持ったリージョン内のテキストを読む際には、付加的なコマンドが必要とはならない。文書の重要な特徴としては、ウィジェットあるいはグループに関連付けられていないテキストを伴っていることが挙げられる。
開発者は、文書全体にわたる要素に対して、documentのロール(role)を設定すべきである。documentのロール(role)がウェブページ全体に適用されるのであれば、コンテンツのルートノード上で設定すべきである。ルートノードとは、HTMLのbody要素やSVGのsvg要素を指す。
例えば、Eメールアプリケーションは、文書の部分とアプリケーションの部分を持っている。開発者は、Eメールのリスト内を移動する間は、一般的なアプリケーションナビゲーションモードを使用したいと考えるだろう。このナビゲーションの大半は、アプリケーションの開発者によって定義できる。しかし、Eメールのメッセージ部分を読む際は、そのコンテンツがdocumentのロール(role)を持ったリージョンに表示され、閲覧ナビゲーションが使用されるべきである。
文書には、文書タイトルまたはラベルがあるべきである。これは、該当するページセクションに対するナビゲーションプレビューや目次エントリとして使うのに適している。ラベルは、以下のソースのいずれかから取得されるべきである。
- 文書がウェブページのコンテンツ全体を含むのであれば、例えばHTMLの
title要素など、ファイル全体にラベルを付けるホスト言語のタイトルまたはラベル機能を使用する。 - そうでなければ、
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要素を用いることができる。。また、gridのaria-multiselectable属性がtrueに設定されていれば、グリッド内の複数のセルを選択できる。グリッドは、スプレッドシートのデスクトップアプリケーションにあるようなスプレッドシートに使うことができる。
キーボードで操作可能とするには、このロール(role)のインスタンスが、「フォーカスの管理」で説明されているように子孫のフォーカスを管理すべきである。
gridの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 子のロール(role): | |
| 基本の概念: | HTMLのtable |
| 必須の子要素: | row |
| サポートされたステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
gridcell (ロール(role))
gridcellの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 子のロール(role): | |
| 基本の概念: | HTMLのtd |
| 親要素: | row |
| サポートされたステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
group (ロール(role))
ユーザーインタフェースオブジェクトの1セットで、支援技術によってページサマリまたは目次に含まれることがないセクション。
regionが、ページサマリまたは目次に含まれるべきユーザーインタフェースオブジェクトのセクションであるのと対照的である。
開発者は、ウィジェット内の項目の論理集合を形成するのにgroupを使うべきである。例えば、階層構造内の兄弟の集合やディレクトリ内の同じコンテナを伴った項目の集合を形成している、ツリーウィジェットの子などが挙げられる。これを受けて、支援技術は、グループが提供されている文脈に応じてグループの適切な扱いを決定しなければならない。
グループは、入れ子にすることもできる。配信単位となるウェブページ全体からみて、十分に重要なセクションだと開発者が判断できる場合には、開発者は、そのセクションにregionのロール(role)、または標準ランドマークのロール(role)を割り当てるべきである。
グループのDOMの子孫外にあるグループメンバーがそのグループに参加するには、aria-owns属性を使って明示的に割り当てられた関係を有している必要がある。
heading (ロール(role))
headingの特性| 特性 | 値 |
|---|
| 親のロール(role): | sectionhead |
| 関連する概念: |
|
| サポートされたステート(state)とプロパティ: | aria-level |
| 継承されたステート(state)とプロパティ: | |
| アクセシブルな名前が必須である: | True |
img (ロール(role))
1つの画像を形成する要素のためのコンテナ。
imgには、キャプションと記述テキストのほか、まとめて見ると1つの画像のように見える複数の画像ファイルを含むことができる。imgは、文書内の1つのグラフィックを表現するものであり、複数の描写オブジェクトによって形成されているかどうかは問題とされない。imgのロール(role)を持った要素を認識可能にするには、アクセシブルな名前の計算によって関連付けられた代替テキストまたはラベルを伴っているべきである。
imgの特性| 特性 | 値 |
|---|
| 親のロール(role): | section |
| 関連する概念: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
| 子が表現的である: | True |
landmark (抽象のロール(role))
ナビゲーションランドマークとして意図されたページのリージョン。
ユーザーエージェントまたは支援技術は、ユーザーがすばやくこれらのリージョンにナビゲートできるようにしてもよい。
注:landmarkは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない。
landmarkの特性| 特性 | 値 |
|---|
| 抽象である: | True |
| 親のロール(role): | region |
| 子のロール(role): | |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | False |
link (ロール(role))
内部または外部のリソースに対するインタラクティブなリファレンス。
これがホスト言語に元々あるリンク(HTMLのhref値を伴ったanchorなど)である場合は、このリンクを操作することによって、ユーザーエージェントがそのリソースにナビゲートする。これが擬似リンクである場合は、ウェブアプリケーションがナビゲーションの責任を負う。
linkの特性| 特性 | 値 |
|---|
| 親のロール(role): | widget |
| 関連する概念: | HTMLのlink |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
list (ロール(role))
listの特性| 特性 | 値 |
|---|
| 親のロール(role): | region |
| 子のロール(role): | |
| 基本の概念: |
|
| 必須の子要素: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
listbox (ロール(role))
listboxの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 関連する概念: |
|
| 必須の子要素: | option |
| サポートされたステート(state)とプロパティ: | aria-multiselectable |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
listitem (ロール(role))
リスト、リストボックス、またはディレクトリ内の1項目。
listitemの特性| 特性 | 値 |
|---|
| 親のロール(role): | section |
| 子のロール(role): | |
| 基本の概念: | HTMLのli |
| 関連する概念: | XFormsのitem |
| 親要素: | list |
| サポートされたステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | 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の一般的な使用例には、株価のティッカー表示や広告バナーがある。マーキーの例としては、株価のティッカー表示がある。marqueeとlogの主な違いは、ログが通常、より重要なコンテンツの変更に意味のある並び順があるという点にある。
marqueeの特性| 特性 | 値 |
|---|
| 親のロール(role): | section |
| 継承されたステート(state)とプロパティ: | |
| アクセシブルな名前が必須である: | True |
math (ロール(role))
数学表現のための要素。
mathのロール(role)は、数学表現のセクションを示すのに使われる。このようなセクションは、MathMLのような正式な数学言語を使って、数学的概念を表現すべきである。しかし、画像やASCIIアートを使って数学表現をしているレガシーコンテンツは、大量に存在している。mathのロール(role)によって、支援技術は、そのイメージに対して提供されたテキスト等価物を点字や音声合成に変換し、ユーザーに伝えられるようになる。こうした状況で使われるテキスト等価物は、有効なMathMLまたはTeXであるべきである。また、画像を知覚可能にするには、aria-describedby属性を使用して、その数学の式がどのように読み上げられるべきかを記述したテキストによって、画像をラベル付けすべきである。記述するテキストには、音声機器をコントロールするための特別なマークアップを含めるべきではない。
mathの特性| 特性 | 値 |
|---|
| 親のロール(role): | section |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| 子が表現的である: | True |
navigation (ロール(role))
文書または関連する文書をナビゲートするためのナビゲーション要素(通常はリンク)の集合。
navigationの特性| 特性 | 値 |
|---|
| 親のロール(role): | landmark |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
note (ロール(role))
そのリソースのメインのコンテンツに対して挿入的または付随的なコンテンツのセクション。
noteの特性| 特性 | 値 |
|---|
| 親のロール(role): | section |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
option (ロール(role))
optionの特性| 特性 | 値 |
|---|
| 親のロール(role): | input |
| 子のロール(role): | |
| 基本の概念: | HTMLのoption |
| 関連する概念: |
|
| 親要素: | select |
| サポートされたステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
presentation (ロール(role))
表現的なロール(role)を持ち、アクセシビリティAPIにマッピングする必要がない要素。
このロール(role)の用途としては、要素がページの見た目を変えるために使われているが、その要素タイプによって示唆される機能的、構造的、またインタラクション上の重要な意味はない場合が挙げられる。
使用事例としては、以下のものがある。
- 表現的なコンテンツの要素(スペーサーの画像、装飾的なグラフィック、クリアリングのための要素など)
- コンテナ内にあって、同じロール(role)を持ち、かつLabelledbyと(必要であれば)
aria-describedbyでマークアップされた完全な等価物がテキストで提供されている画像
- CSSの"フック"となる付加的なマークアップとして使われている要素
- レイアウトテーブル、および/またはそれに関連付けられたすべてのセル、行など
ユーザーエージェントは、本来の目的以外で使われている要素の構造的側面をすべて提示しないことを選んでもよい。例えば、テーブルがpresentationとマークされている場合、ユーザーエージェントは、table、td、th、trなどの要素をアクセシビリティ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要素は、ARIAのimgのロール(role)を持っていて、キャプションの段落によって適切にラベル付けされている。この例では、ロール(role)とテキスト等価物がコンテナ要素によって提供されているため、このimg要素をpresentationとしてマークすることができる。
次に、以下のサンプルコードを見てみよう。
<ul role="tree">
<li role="presentation">
<a role="treeitem" aria-expanded="true">An expanded tree node</a>
</li>
…
</ul>
このanchor(HTMLのa要素)は、ツリー項目として機能しているため、リスト項目(HTMLのli要素)は、明示的なARIAのpresentationのロール(role)を割り当てられて、ユーザーエージェントのリスト項目に対するデフォルト動作を上書きしている。
presentationの特性| 特性 | 値 |
|---|
| 親のロール(role): | structure |
| 継承されたステート(state)とプロパティ: | |
progressbar (ロール(role))
progressbarの特性| 特性 | 値 |
|---|
| 親のロール(role): | widget |
| 関連する概念: | status |
| サポートされたステート(state)とプロパティ: |
aria-valuetext |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
| 子が表現的である: | 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))
rowの特性| 特性 | 値 |
|---|
| 親のロール(role): | group |
| 基本の概念: | HTMLのtr |
| 親要素: |
|
| 必須の子要素: | gridcell |
| サポートされたステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
search (ロール(role))
ウェブ文書の検索ツール。
通常、これは、サイトについての検索リクエスト、またはより一般的なインターネット検索サービスへの検索リクエストを送信するのに使われるフォームである。
searchの特性| 特性 | 値 |
|---|
| 親のロール(role): | landmark |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
section (抽象のロール(role))
文書またはアプリケーション内にあるレンダリング可能で、構造的なコンテナの単位。
注:sectionは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない。
sectionの特性| 特性 | 値 |
|---|
| 抽象である: | True |
| 親のロール(role): | structure |
| 子のロール(role): | |
| 関連する概念: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
sectionhead (抽象のロール(role))
関連するセクションのトピックにラベルを付ける、またはトピックを要約する構造。
注:sectionheadは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない。
sectionheadの特性| 特性 | 値 |
|---|
| 抽象である: | True |
| 親のロール(role): | structure |
| 子のロール(role): | |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
select (抽象のロール(role))
ユーザーが複数の選択肢から選ぶのを許可するフォームウィジェット。
optionのロール(role)を持った要素は、非抽象的な子のselectのロール(role)の1つを使って、要素に含まれるべきである。selectは、行もセルも持たない空の状態とすることもできる。
注:selectは、オントロジーに使われる抽象のロール(role)である。開発者は、コンテンツ内でこのロール(role)を使用すべきではない。
selectの特性| 特性 | 値 |
|---|
| 抽象である: | True |
| 親のロール(role): |
|
| 子のロール(role): | |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
separator (ロール(role))
コンテンツのセクションまたはメニュー項目のグループを区切って区別するための仕切り。
これは、コンテンツのセクション間の視覚的な区切りである。例えば、メニュー内のメニュー項目のグループの間で使われるほか、分割ペイン内の2つのリージョンの間の移動可能な区切りとして使われる。
separatorの特性| 特性 | 値 |
|---|
| 親のロール(role): | structure |
| 関連する概念: | HTMLのhr |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| 子が表現的である: | True |
slider (ロール(role))
与えられた範囲内でユーザーが値を選ぶユーザー入力。
スライダーは、スライダーの大きさとサム(つまみ部分)の位置によって、現在の値と可能な値の範囲を表現する。一般に、矢印キーなどの方向キーを使って、値を足したり引いたりすることができる。
sliderの特性| 特性 | 値 |
|---|
| 親のロール(role): | range |
| 必須のステート(state)とプロパティ: |
|
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
| 子が表現的である: | 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))
tabの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 親要素: | tablist |
| サポートされたステート(state)とプロパティ: | aria-selected |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
tabpanel(ロール(role))
tabpanelの特性| 特性 | 値 |
|---|
| 親のロール(role): | region |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
tablist (ロール(role))
tablistの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 関連する概念: | DAISYのGuide |
| 必須の子要素: | tab |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
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 |
treegrid (ロール(role))
treegridの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 必須の子要素: | row |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: | author |
| アクセシブルな名前が必須である: | True |
treeitem (ロール(role)
treeのオプション項目。これはツリー内の要素で、treeitemのサブレベルグループを含んでいれば、展開や折り畳みができる。
展開されたり折り畳まれたりする複数のtreeitemの集合は、groupのロール(role)を持った要素のなかに包含される。
treeitemの特性| 特性 | 値 |
|---|
| 親のロール(role): |
|
| 親要素: | tree |
| 継承されたステート(state)とプロパティ: | |
| 名前の取得元: |
|
| アクセシブルな名前が必須である: | True |
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.2. 使用しているロール(role)
このステート(state)またはプロパティを使用しているロール(role)についての助言情報。この情報は、ステート(state)またはプロパティの適切な使用方法を理解するために提供されている。このリストに含まれていないロール(role)上でステート(state)またはプロパティが使われる場合の使い方は定義されていない。
5.2.4. 値
ステート(state)またはプロパティに課される値の制限。これらの制限は、XMLスキーマデータタイプ [XSD] で表現されている。この仕様では、以下のXSDデータタイプが使われている。
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)とプロパティは、以下のように分類されている。
- ウィジェット属性
- ライブリージョン属性
- ドラッグ&ドロップ属性
- 関係属性
5.5.2. ライブリージョン属性
このセクションでは、リッチ・インターネット・アプリケーションのライブリージョンに特有の属性について説明する。これらの属性は、すべての要素に適用される可能性がある。これらの属性の目的は、その要素にフォーカスが置かれていない間にコンテンツ変更が起きる可能性があることを示すこと、そしてそれらのコンテンツ更新をどう処理すべきかという情報を支援技術に提供することにある。ロール(role)のなかには、aria-live属性のデフォルト値を個別に指定しているものもある。ライブリージョンの例には、更新される株価情報を表示するティッカーのセクションがある。
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の特性| 特性 | 値 |
|---|
| 関連する概念: | SVG [SVG] およびDOM [DOM] のactive |
| 使用しているロール(role): |
|
| 値: | IDREF |
aria-atomic (プロパティ)
リージョンが更新された場合に、変更されたリージョンの全部または一部を支援技術がユーザーに提示すべきかどうかを示す。aria-relevantも参照。
アクセシビリティAPIと文書オブジェクトモデル [DOM] の両方がイベントを提供して、変更があった文書内のエリアを支援技術が見極められるようにする。
ノードに変更があった場合、支援技術は、変更された要素を見たうえで、その先祖をさかのぼって最初にaria-atomicが設定された要素を見つけ、それ以降のケースに適切な動作を適用すべきである。
- 明示的に設定された
aria-atomicが先祖のいずれにも見つからなければ、デフォルトとしてaria-atomicがfalseにされていたことを意味し、支援技術は、変更のあったノードだけをユーザーに提示すればよい。 aria-atomicが明示的にfalseに設定されていれば、支援技術は、先祖のチェーンを探す作業を停止し、変更のあったノードだけをユーザーに提示すべきである。aria-atomicが明示的にtrueに設定されていれば、支援技術は、その要素のコンテンツ全体を提示すべきである。
aria-atomicがtrueの場合、支援技術は、複数の変更を統合して、変更のあったリージョン全体を一度に提示してもよい。
aria-atomicの特性| 特性 | 値 |
|---|
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | boolean |
aria-atomicの値| 値 | 説明 |
|---|
| true: | 支援技術は、リージョン全体を提示すべきである。 |
| false: | 支援技術は、リージョン内の変更を単体で処理することができる。 |
aria-autocomplete (プロパティ)
ユーザー入力を補完する提案が提供されるかどうかを示す。
aria-autocomplete属性がinlineまたはbothに設定されているテキストボックスでは、補完テキストが選択されて、カーソルの後に表示され、ユーザーがその上に入力できるべきである。これと一緒にaria-haspopup属性を使って、シンプルテキストボックスでありながら、選択肢を含んだポップアップが表示されることを示すこともできる。
すでにドロップダウンを伴っている要素(combobox)では、ドロップダウンの動作が依然として存在するものと考えられる。これはつまり、autocompleteがtrueであれば、comboboxのaria-haspopupもやはりtrueとなることを意味している。
aria-autocompleteの値| 値 | 説明 |
|---|
| inline: | フィールドの入力を完成するための提案として、システムがキャレットの後にテキストを示す。 |
| list: | 選択肢のリストが表示され、そのなかからユーザーが選択できるが、編集ボックスのフォーカスは維持される。 |
| both: | 選択肢のリストが表示され、現在選択されている提案がインラインにも表示される。 |
| none: | 値リストからの値だけが選択できる。 |
aria-busy (ステート(state))
ライブリージョンの更新が終了したかどうかを示す。
デフォルトでは、aria-busyはfalseである。例えば、1つのライブリージョン内の複数の部分がロードされなければならないことを開発者が分かっていれば、最初の部分がロードされた時のaria-busyをtrueとし、最後の部分がロードされた時のaria-busyをfalseとするか、または最後の部分がロードされた時点でこの属性を取り除くことができる。ライブリージョンの更新でエラーが起きた場合は、aria-invalid属性をtrueに設定する。
aria-busyの特性| 特性 | 値 |
|---|
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | boolean |
aria-busyの値| 値 | 説明 |
|---|
| true: | そのライブリージョンが更新中である。 |
| false: | そのライブリージョンに対して、それ以上予定されている更新がない。 |
aria-checked (ステート(state))
aria-checkedの値| 値 | 説明 |
|---|
| true: | この要素がチェックされている。 |
| false: | この要素は、チェックされたステート(state)をサポートしているが、現在はチェックされていない。 |
| mixed: | 3値のcheckboxまたはmenuitemcheckboxのための混合モードの値を示す。 |
| undefined: | この要素は、チェックされたステート(state)をサポートしていない。 |
aria-controls (プロパティ)
現在の要素によってコンテンツまたは存在が制御されている要素を特定する。aria-ownsも参照。
例えば、以下のようなケースがある。
- ツリービューの目次によって、隣にあるヘルプコンテンツの文書ペインに表示されるコンテンツが制御される。
- チェックボックスのグループによって、テーブルやグラフにライブ表示される商品相場の種類が制御される。
- タブによって、関連付けられたタブパネルの表示が制御される。
aria-describedby (プロパティ)
そのオブジェクトを記述する要素を特定する。aria-labelledbyも参照。
これは、aria-labelledbyを持つオブジェクトのラベリングに非常によく似ている。ラベルとは、そのオブジェクトが何をするかのエッセンスをユーザーに提供するためのものであり、一方のディスクリプションは、一部のユーザーが必要とするかもしれない詳細を提供するものである。
aria-describedbyによって参照される要素は、記述を完全に構成しなければならない。必要であれば複数の要素に対するIDリファレンスを含み、あるいはそのIDによって参照されている要素を伴った要素のセット(例えば段落)を囲む必要がある。
aria-describedbyの特性| 特性 | 値 |
|---|
| 関連する概念: | 関連する概念:
HTMLのlabel要素とHTMLのtable cell headerは、デファクトの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の特性| 特性 | 値 |
|---|
| 関連する概念: | 音声閲覧における先細りプロンプト、SMIL [SMIL] のswitch |
| 使用しているロール(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の特性| 特性 | 値 |
|---|
| 関連する概念: | XHTML 2 [XHTML2] の :nextfocus :prevfocus |
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | IDREFS |
aria-grabbed (ステート(state))
ドラッグ&ドロップの操作で、要素がグラブされた(つかまれた)ステート(state)であることを示す。
これがtrueに設定されていれば、ドラッグのために選択されていることを示す。falseに設定されていれば、ドラッグ&ドロップ操作のためにその要素をつかむことができるが、現在はつかまれていないことを示す。undefined(または値なし)に設定されていれば、その要素をつかめないことを示す(デフォルト)。
aria-grabbedがtrueに設定されている場合は、潜在的なすべてのドロップターゲットに対してaria-dropeffect属性が適切に設定されているべきである。オブジェクトがつかまれていない(値がfalseまたはundefinedに設定されている、もしくはこの属性が削除されている)場合は、関連付けられたドロップターゲットのaria-dropeffect属性がnoneに戻るべきである。
aria-grabbedの特性| 特性 | 値 |
|---|
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | NMTOKEN |
aria-grabbedの値| 値 | 説明 |
|---|
| true: | 要素がドラッグのためにつかまれていることを示す。 |
| false: | 要素がドラッグをサポートしていることを示す。 |
| undefined: | 要素がドラッグをサポートしていないことを示す。 |
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-invalidがtrueになっている要素が存在するかぎり、フォームの送信を拒否してもよい。
aria-requiredがtrueとなっているフィールドを含んだデータをユーザーが送信しようとする際は、エラーがあることを示すために、アプリケーションはaria-invalid属性を使ってもよい。ただし、ユーザーがフォームを送信しようとしていない場合は、単にユーザーがデータをまだ入力していないということであるため、必須のウィジェットにaria-invalid属性を設定すべきではない。
将来の拡張のために、aria-invalid属性は列挙タイプとなっている。許可された値のリストに含まれていない値は、値としてtrueが提供されているものとして処理されなければならない。この属性が存在しない、あるいは値がfalseまたは空白の文字列になっている場合は、falseのデフォルト値が適用される。
aria-invalid属性は、適用されている要素にのみ適用され、子孫の要素に継承されることはない。
aria-invalidの特性| 特性 | 値 |
|---|
| 関連する概念: | XForms [XForms] の'invalid'イベント(http://www.w3.org/TR/2006/REC-xforms-20060314/slice4.html#evt-revalidate)注:必須のフォームフィールドが空の場合、このステート(state)はtrueとなるが、XFormsのvalidのプロパティはfalseと設定される。 |
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | NMTOKEN |
aria-invalidの値| 値 | 説明 |
|---|
| grammar: | グラマーのエラーが探知された。 |
| false: | 値にエラーが探知されなかった。 |
| spelling: | スペルのエラーが探知された。 |
| true: | ユーザーの入力した値が、検証で不適合とされた。 |
aria-label (プロパティ)
aria-labelの特性| 特性 | 値 |
|---|
| 関連する概念: | 関連する概念は、HTML [HTML] のtitleである。 |
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | string |
aria-labelledby (プロパティ)
現在の要素をラベル付けする要素を特定する。aria-labelおよびaria-describedbyも参照。
これは、aria-describedbyを持つオブジェクトの記述に非常によく似ている。ラベルとは、そのオブジェクトが何をするかのエッセンスをユーザーに提供するためのものであり、一方のディスクリプションは、一部のユーザーが必要とするかもしれない付加的な情報を提供するものである。
注:アメリカ英語に従うのであれば、このプロパティの正しいスペリングは「labeledby」である。しかし、このプロパティがマッピングされる先のアクセシビリティAPI機能では、「labelledby」というスペリングが定着している。このため、このプロパティは、慣習に則り、開発者の困難を最小限に抑えるために、後者のスペリングを採用している。
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の値| 値 | 説明 |
|---|
| true: | 複数行のテキストボックスである。 |
| false: | 単数行のテキストボックスである。 |
aria-multiselectable (プロパティ)
ユーザーが現在の選択可能な子孫から複数の項目を選択できることを示す。
リスト、ツリー、グリッドは、ユーザーが一度に複数の項目を選択するのを許可する。
選択された子孫のaria-selected属性は、trueに設定されるべきである。選択可能だが選択されていない子孫のaria-selected属性は、falseに設定されるべきである。選択可能でない子孫の場合は、aria-selected属性を使うべきではない。
aria-multiselectableの特性| 特性 | 値 |
|---|
| 使用しているロール(role): |
|
| 値: | boolean |
aria-multiselectableの値| 値 | 説明 |
|---|
| true: | ウィジェット内の項目を一度に複数選択できる。 |
| false: | 1項目だけが選択できる。 |
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番目の項目であれば、posinsetは3となる。aria-posinsetの値は、1以上の整数で、そのセットのサイズ以下である。
セット内のすべての項目が文書構造に存在していれば、この属性の設定は必要ではない。ユーザーエージェントは、セットのサイズを自動的に計算して、各項目の位置を整えることができるからだ。しかし、セットの一部のみが文書構造に存在する瞬間があるのであれば、明示的な指示を与えるためにこのプロパティが必要となる。
aria-posinsetは、aria-setsizeと併せて使用すべきである。
aria-posinsetの特性| 特性 | 値 |
|---|
| 使用しているロール(role): |
|
| 値: | integer |
aria-pressed (ステート(state))
aria-pressedの値| 値 | 説明 |
|---|
| true: | この要素が押されている。 |
| false: | この要素は、押されたステート(state)をサポートしているが、現在は押されていない。 |
| mixed: | 3値のトグルボタンのための混合モードの値を示す。 |
| undefined: | この要素は、押されたステート(state)をサポートしていない。 |
aria-readonly (プロパティ)
その要素が編集不可能だが、編集以外は操作可能であることを示す。aria-disabledも参照。
これは、ユーザーが読むことはできるが、ウィジェットの値を設定できないことを意味する。readonlyの要素はユーザーにとって意義があるため、アプリケーションは、フォーカス可能な子孫にナビゲーションを限定すべきではない。要素の値をコピーするといった他のアクションも、やはりサポートされる。これとは対照的に、無効化された要素では、アプリケーションが子孫へのナビゲーションを許可しない可能性がある。
例えば、以下のような例がある。
- 定数を表現するフォーム要素
- スプレッドシートグリッドの行または列見出し
- ショッピングカートの合計額のような計算結果
aria-readonlyの値| 値 | 説明 |
|---|
| true: | ユーザーが要素の値を変更できない。 |
| false: | ユーザーが要素の値を変更できる。 |
aria-relevant (プロパティ)
ライブリージョン内の変更の性質を示す。aria-atomicも参照。
この属性は、additions、removals、textの値からなるスペース区切りのリスト、またはキャッチオール値の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-requiredをtrueに設定すべきである。
注:要素が必須かどうかは、多くの場合、視覚的に表現されている(ウィジェットの後にサインやシンボルを付けるなど)。開発者は、決定的ではない表示スタイルを使うのではなく、aria-required属性を使うことによって、要素が必須であることを支援技術に対して明示的に伝えられるようになる。
aria-required属性は、適用されている要素にのみ適用され、子孫の要素に継承されることはない。
aria-requiredの特性| 特性 | 値 |
|---|
| 使用しているロール(role): | 基本マークアップのすべての要素 |
| 値: | boolean |
aria-requiredの値| 値 | 説明 |
|---|
| true: | フォームを送信する前に、ユーザーが要素の入力を提供しなければならない。 |
| false: | ユーザー入力がなくても、フォームを送信できる。 |
aria-selected (ステート(state))
様々なウィジェットが現在選択されたステート(state)であることを示す。aria-checkedおよびaria-pressedも参照。
この属性は、単一選択および複数選択のウィジェットで使用される。
- 単一選択のコンテナで、現在フォーカスされている項目が選択されていない場合。選択は通常、フォーカスに従うが、ユーザーエージェントによって管理される。開発者は、フォーカスされた項目が実際に選択されていない時のみ
aria-selectedを使うべきである。唯一の有用な値はfalseとなる。falseでなければ、現在フォーカスされた項目が選択されていると見なされてしまうためだ。 - 複数選択可能なコンテナの場合。
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-sort (プロパティ)
テーブルまたはグリッド内の項目が昇順または降順のどちらでソートされているかを示す。
このプロパティは、テーブルまたはグリッドの見出しにのみ適用されるべきである。このプロパティが提供されていなければ、定義されたソート順は存在しない。開発者は、テーブルまたはグリッドのそれぞれについて、一度に1つの見出しに対してのみaria-sortを適用すべきである。
aria-sortの特性| 特性 | 値 |
|---|
| 使用しているロール(role): |
|
| 値: | NMTOKEN |
aria-sortの値| 値 | 説明 |
|---|
| ascending: | この列の項目が昇順でソートされている。 |
| descending: | この列の項目が降順でソートされている。 |
| none: | この列に定義されたソートが適用されていない。 |
| other: | 昇順と降順のいずれでもないソートのアルゴリズムが適用されている。 |
aria-valuemax (プロパティ)
ウィジェットの範囲に対して許可されている最大値を定義する。
範囲のウィジェットは、任意の値から開始でき、このプロパティによって定義される最大値に到達するまで、その値を増やしていくことができる。
最大と最小の値を宣言することによって、代替機器は、矢印キーに応答し、現在の値を確認し、また範囲のサイズをユーザーに知らせることができるようになる。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxとaria-valueminのプロパティを提供すべきである。
aria-valuemin (プロパティ)
ウィジェットの範囲に対して許可されている最小値を定義する。
範囲のウィジェットは、任意の値から開始でき、このプロパティ,によって定義される最小値に到達するまで、その値を減らしていくことができる。
最大と最小の値を宣言することによって、代替機器は、矢印キーに応答し、現在の値を確認し、また範囲のサイズをユーザーに知らせることができるようになる。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxとaria-valueminのプロパティを提供すべきである。
aria-valuenow (プロパティ)
ウィジェットの範囲に対する現在の値を定義する。aria-valuetextも参照。
例えば、スライドバーやプログレスバーなどの範囲ウィジェットに使われる。
現在の値が不明(不確定なプログレスバーなど)の場合、開発者は、aria-valuenow属性を設定すべきではない。aria-valuenow属性が存在しなければ、現在の値に関する情報は示唆されない。aria-valuenowが既知の最大と最小を伴っている場合は、開発者がaria-valuemaxとaria-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」の文字列のいずれかとなるだろう。