WAI-ARIA 1.1で追加されたaria-describedatプロパティについて

このエントリーは、Web Accessibility Advent Calendar 2013の7日目の記事です。

ここでは9月26日に草案書が出たWAI-ARIA 1.1で新たに追加されたにaria-describedatプロパティについて書きます。

WAI-ARIA

WAI-ARIAについては、他のエントリーに書いていますので、WAI-ARIAとはどういったものかは下記のエントリーをご参考ください。

WAI-ARIA 1.0からアップデートされたWAI-ARIA 1.1には、WAI-ARIA 1.0からすでにある機能に対して、HTML5.1を補完するための新しい機能が追加されていくことになると思われます。現時点で新たなプロパティとしてaria-describedatが追加されました。aria-describedatプロパティはHTMLのlongdesc属性に相当するもので、画像などのオブジェクトを説明する別のドキュメントのURIや同じHTML文章内のIDを指定します。

aria-describedby

WAI-ARIA 1.0に同じようなプロパティとしてaria-describedbyがありますが、aria-describedbyプロパティは、オブジェクトを説明するIDを指定し、aria-describedbyプロパティで参照する要素は同じHTML文章内にある必要があります。aria-describedbyプロパティの使い方の例のひとつとして下記のようになります。

例:

<img src="image.jpg" alt="" aria-describedby="dsc-img01">

<div id="dsc-img01">
このdiv要素内にdsc-img01が指定されている画像の説明が入ります。
</div>

aria-describedat

aria-describedatプロパティの使い方をみていきます。仕様書にaria-describedatプロパティの値は次のように書かれています。

the URI value of aria-describedat be a valid reference to a separate document, or a content fragment identifier in a separate document, or a content fragment identifier within the same document.

最初のほうでも書きましたが、aria-describedatプロパティの値には、画像などのオブジェクトを説明する別のドキュメントのURIや同じHTML文章内のIDとなります。

例:URIを指定(別のHTML)

<img src="img.jpg" alt="" aria-describedat="http://example.com">

例:URI(フラグメントID付き)を指定(別のHTML)

<img src="img.jpg" alt="" aria-describedat="http://example.com#flagment">

例:IDを指定(同一のHTML内)

<img src="img.jpg" alt="" aria-describedat="flagment">

<div id="flagment">
このdiv要素内にflagmentが指定されている画像の説明が入ります。
</div>

aria-describedby or aria-describedat

aria-describedbyプロパティが同一HTML文章、aria-describedatプロパティが別のHTML文章というふうに明確に区別されていれば使い方は分かりやすいのですが、aria-describedatプロパティは同一HTML文章内でも使うことができます。それではどう使い分けすればよいかというと...

aria-describedbyプロパティのデメリットとして、下記のサイトにあるようにaria-describedbyプロパティで指定した要素に見出し、リスト、段落、表などの構造化されたHTMLであったとしても処理が制限され、見出し、リスト、段落、表としてでなく単に文字列として情報を得ることしかできません。

一方、aria-describedatプロパティは、仕様書に下記のように記述されています。

User agents SHOULD provide a device-independent mechanism to allow a user to navigate the user agent to content referenced by the aria-describedat attribute. User agents SHOULD also provide a device-independent mechanism to return the user's focus from the descriptive content view to the original content view. For example, a user agent MAY provide access to the document or document fragment referenced by the the aria-describedat attribute in a contextual menu associated with the object.

ユーザーエージェントは、ユーザーがaria-describedat属性によって参照されるコンテンツへのユーザーエージェントをナビゲートできるようにするために、デバイスに依存しないメカニズムを提供する必要がある。ユーザエージェントは、元のコンテンツビューに記述内容のビューからユーザーのフォーカスを返すために、デバイスに依存しないメカニズムを提供する必要がある。例えば、ユーザーエージェントは、オブジェクトに関連付けられたコンテキストメニューでのaria-describedat属性によって参照されるドキュメントまたはドキュメントフラグメントへのアクセスを提供することができる。

とあるように、仕様書にはaria-describedatプロパティが参照している要素の意味を操作しながら理解できるようにすることが考えられています。

おそらく参照する要素が文字のみの場合はaria-describedbyプロパティ、参照する要素がリストや表などの構造的になる場合はaria-describedatプロパティを使い分けをすることになるのかと思ったのですが(使い分ける必要もないわけですが)、仕様書の「Status of this Document」には次のような記述があります。

The primary feature that is new since WAI-ARIA 1.0 is the aria-describedat property, which aims to meet extended description use cases that are not met by aria-describedby.

WAI-ARIA 1.0からの主な特長として、aria-describedbyの満たされていない拡張された説明のユースケースを満たすことを目的とするaria-describedatプロパティ

これだけを見ると、aria-describedbyプロパティが想定していた仕様通り動作していないケースが多いので、aria-describedbyプロパティに置き換わる形でaria-describedatプロパティが追加されたように感じます。

個人的にaria-describedbyプロパティの代わりにaria-describedatプロパティを今後使っていくケースが増えていくだろうという印象を仕様書を読みながら感じました。

WAI-ARIA 1.1には新たな機能が今後も追加されていくと思いますので、どのような機能が追加されていくか楽しみです。