暗黙のARIAセマンティックと強いネイティヴセマンティックについて
HTML5とWAI-ARIAのお話で、タイトルは私が勝手に付けた訳語で原仕様書ではそれぞれ、implicit WAI-ARIA semantics
、strong native semantics
と表現されるものです。誰かもっといい訳語があるよとかMSDNとかMDNではこう訳してるという情報があればください。
で、暗黙のARIAセマンティックや強いネイティヴセマンティックが何なのかという話ですが、HTML5.1仕様では、3.2.7.3 強いネイティヴセマンティックと3.2.7.4 暗黙のARIAセマンティックにその言葉が見えますが、この用語の定義そのものは実装向けの箇所に記述されていて、
The terms strong native semantics is used as defined in the ARIA specification. The term default implicit ARIA semantics has the same meaning as the term implicit WAI-ARIA semantics as used in the ARIA specification. [ARIA]
2.2.2 Dependencies ― HTML 5.1
とあります。ぶっちゃけて言うとWAI-ARIA仕様を読めと(ぉ
ではWAI-ARIA仕様のどこにあるのでしょうか。よくWAI-ARIA仕様として紹介されることの多いWAI-ARIA(日本語訳):日立のユニバーサルデザインにある、アクセシブル・リッチ・インターネット・アプリケーション(WAI-ARIA)1.0の日本語訳にはそのような言葉は出現しません。(要するに古い。おまけにWorking Darft)。
現在のWAI-ARIAはCandidate Recommendationまで策定が進んでいますが、そのCR仕様には7.4. Implicit WAI-ARIA Semanticsとして規定されています。英語をまるっと引用するのも気が引けるので、私の理解のために試訳してみました。
7.4. 暗黙のWAI-ARIAセマンティック
ホスト言語がオブジェクトに対してネイティブセマンティックを欠く場合、WAI-ARIAは、オブジェクトに関するセマンティック情報を提供するように設計されている。とはいえ、WAI-ARIAは多数のホスト言語のために追加のセマンティックを提供するよう設計されている。さらに、長い期間をかけてホスト言語は進化し、 WAI-ARIAの機能に対応して新しいネイティヴな機能を提供することができる。そのため、WAI-ARIAセマンティックがホスト言語のセマンティクスと冗長であるような多数の状況がある。
このホスト言語の機能は、「暗黙のWAI-ARIAセマンティック」を持つとみなすことができる。暗黙のWAI-ARIAセマンティックを持つ機能のユーザーエージェント処理は、WAI-ARIAの機能の処理と同様だろう。その処理はホスト言語の機能とWAI-ARIAの機能との間の構文上の違いにより同一ではないかもしれないが、一般に、ユーザーエージェントはアクセシビリティAPIに同一の情報を公開するだろう。暗黙のWAI-ARIAセマンティックを持つ機能は、必要な独自の要素、必要なステートやプロパティなど、WAI-ARIAの構造的要件を満たし、提供される明示的なWAI-ARIAセマンティックを必要しない。
たとえば、チェックボックスやラジオボタンなど、機能性をもつ要素が既に存在する場合、ホスト言語のネイティヴセマンティックを使用する。WAI-ARIAマークアップは、(たとえば、aria-requiredに必要であることを示す)ネイティヴセマンティックを増強するためにのみ使用されることを意図する、または要素の標準機能を形成する、別の用途にセマンティックを変更するために使用されることを意図する。
暗黙のWAI-ARIAセマンティックは、以下のセクションにおける、ホスト言語のセマンティックと競合する、衝突解決手続きに影響を与える。したがって、暗黙のWAI-ARIAセマンティックは、ホスト言語仕様またはWAI-ARIAユーザーエージェント実装ガイド [ARIA-IMPLEMENTATION]などの規範的仕様で定義する必要がある。
なんともまどろっこしいものの言い方ですが、WAI-ARIAはホスト言語(今の場合はHTML5)にセマンティックを追加します。ところが周知の通り、HTML5自体も要素に意味を持ちます。このHTML5の要素の意味そのものが、「暗黙のWAI-ARIAセマンティック」となるわけです。
具体的な例を見てみましょう。たとえばbody
要素について、HTML5.1仕様では文書のコンテンツを表す
とされますが*1、暗黙のARIAセマンティックとしてはdocument
ロール*2を持つと定義されます。さらにHTML5.1仕様では、ARIAロールを明示する場合は、document
ロールかapplication
*3のいずれかで上書きしてもよい、とされます。
言い換えるならば、あるHTML文書は、文書かアプリケーションのどちらかの状態しかなく、WAI-ARIAセマンティックでどちらの状態かを明記することができる、と。
だいたい理解できたところで、では「強いネイティヴセマンティック」とは何でしょうか。これはWAI-ARIA仕様の7.5. Conflicts with Host Language Semanticsの最後の段落に出てくるもので、例によって最終段落のみを訳出してみましょう。
7.5. ホスト言語のセマンティックとの競合
ホスト言語は、WAI-ARIAで上書きできない機能を文書化してもよい(これは「強いネイティヴセマンティック」と呼ばれる)。これは、セマンティックがWAI-ARIAで変更された場合、処理が不確実になる場所の機能だけでなく、暗黙のWAI-ARIAセマンティックを持つ機能でもある。WAI-ARIAロールが強いネイティヴセマンティックをもつ要素で使用される場合、適合性チェッカーはエラーまたは警告を通知してもよいが、上記のようにアクセシビリティAPIに要素を公開する際に、ユーザエージェントは依然としてWAI-ARIAロールのセマンティック値を使用しなければならない。
つまるところ、「強いネイティヴセマンティック」とは、WAI-ARIAで上書きできない「暗黙のWAI-ARIAセマンティック」であると。暗黙のWAI-ARIAセマンティックよりさらに強い制約を持つ、と解釈できます。例のごとく具体的に見てみましょう。たとえばhr
要素について、HTML5では段落レベルのテーマの区切りを表す
ようになりました*4。強いネイティヴセマンティックとしてseparator
ロール*5を持つと定義されます。このロールは上書きすることができませんが、例外としてpresentation
ロールで上書きすることはできます。このロールは要素の意味を打ち消します。
とまあ、非常にざっくりとですが、いかがでしょうか。というかWAI-ARIA仕様ものすごく読みにくいんですが、これは単なる筆者の力量不足なんですかね(ぉ
Using WAI-ARIA in HTMLについて
HTML5仕様から、Using WAI-ARIA in HTMLというW3C文書が参照されています。
Using WAI-ARIA in HTML - アクセシブル・リッチ・インターネット・アプリケーション仕様[ARIA]を使用してHTML要素にアクセシビリティ情報を追加する方法についての開発者のための実用的なガイド。特に推奨表は、どのARIAロール(role)、ステート(state)およびプロパティが各HTML要素に使用に適切かについて、著者に対して完全なリファレンスを提供する。
3.2.7 WAI-ARIA ― HTML 5.1
推奨表というのは2.10 Recommendations Tableのことで、ここにHTML5仕様以上につらつらと書かれているものです。たとえばaside
要素について、HTML5.1仕様では暗黙のARIAセマンティックとしてcomplementary
ロール*6が定められていますが、推奨表の「Should authors explicitly define default ARIA semantics?」(表の3列目/デフォルトのARIAセマンティックを明示すべきか?)では「YES」となっており、ホスト言語で「暗黙のARIAセマンティック」に指定されているにもかかわらず、明示するように求められています。これはWAI-ARIA仕様の「暗黙のWAI-ARIAセマンティックを持つ機能は、必要な独自の要素、必要なステートやプロパティなど、WAI-ARIAの構造的要件を満たし、提供される明示的なWAI-ARIAセマンティックを必要しない。」という記述と微妙に食い違いを見せています。
ただ、main
要素に関して、HTML5仕様は強いネイティヴセマンティックとしてmain
ロールを挙げているにもかかわらず、
著者は、ユーザーエージェントが必要なロールのマッピングを実装するまで、
4.5.14 main要素 ― HTML 5.1main
要素にARIArole="main"
属性を使用することを勧める。
とされており、推奨表でも「YES」とされています。このあたりは最近になってHTML5仕様に追加された要素だと言うことも影響していそうですが、WAI-ARIA仕様そのものがCandidate Recommendationでまだ枯れた技術ではないということもあるかもしれません(そしてHTML5.0仕様もまだCandidate Recommendationであったりします)。Overview of testing in view of CR exitではこのエントリーを書いた時点で、どちらもneeds testingとされているあたり、今後の展開を注視する必要はあるのかなと思ったり思わなかったり(どっちだよ)。
*1:http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20131029/sections.html#the-body-element
*2:http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/wd_20090224/index.html#document
*3:http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/wd_20090224/index.html#application
*4:http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20131029/grouping-content.html#the-hr-element
*5:http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/wd_20090224/index.html#separator
*6:http://www.hitachi.co.jp/universaldesign/ria/ajax/wai-aria/wd_20090224/index.html#complementary