role 属性を正しく設定してアクセシビリティを高める | NEAREAL
リンク先をざっと目を通した感じ、真摯に書かれているエントリーだと思いますが、いくつかコメントしてみるテスト。
role 属性は HTML などで使いますが、role 属性に与える値や役割は HTML とは切り離された、 ARIA や WAI, WAI-ARIA と表記される区分に定義されています。
role によって役割を明確にする意味 - role 属性を正しく設定してアクセシビリティを高める | NEAREAL
role属性の定義はWAI-ARIA仕様でなされますが、これをWAIとは表記しないんじゃないかなあと。
で、WAI-ARIAとはなんぞやと言うことですが、1つの説明として仕様から引用してみましょう。
WAI-ARIAは、ネイティヴ言語のセマンティックに対する代替としてでなく、補足として使用されることを意図する。ホスト言語がWAI-ARIAの機能に相当するアクセシビリティーを提供して機能を提供する場合、ホスト言語の機能を使用する。WAI-ARIAは、ホスト言語が必要なロール、ステート、およびプロパティーインジケーターを欠いている場合にのみ使用すべきである。WAI-ARIAの機能にできるだけ類似したホスト言語の機能を使用し、WAI-ARIAを追加することで意味を洗練する。たとえば、選択可能なマルチグリッドはテーブルとして実装することできるかもしれず、その上WAI-ARIAは、単なる静的なデータテーブルでなく、対話型グリッドであることを明確にするために使用する。これは、WAI-ARIAをサポートしないユーザーエージェントのために可能な限り最良のフォールバックを可能にし、ホスト言語のセマンティックの完全性を維持する。
Introduction | Accessible Rich Internet Applications (WAI-ARIA) 1.0 日本語訳
ここで、ネイティヴ言語=ホスト言語=HTMLとして読み替えてもらえればと。言い換えると、
といったあたりでしょうか、ですから、
また、システムに正しい情報を伝える目的であることから SEO にも効果が見込めるようにも見えますが、 これについては定かではありません。
role によって役割を明確にする意味 - role 属性を正しく設定してアクセシビリティを高める | NEAREAL
現時点でユーザーエージェントがWAI-ARIAをどう扱ってるのかは私も知りませんが、検索エンジンの実装がmicrodataやRDFa等を解析するように、将来的にはWAI-ARIAの既述を解析することがあるのかもしれません。(が、前提として仕様に沿ったHTMLをまず既述すべきでしょう。)
設定できる role 属性の値は数多くあります。次の公式ページから、カテゴリ別か一覧して確認することができます。
role 属性の種類 - role 属性を正しく設定してアクセシビリティを高める | NEAREAL
(中略)
どの要素がどの role 属性を暗黙的に持つかは、W3C の HTML5(以降のHTML) のページから確認することができます。
HTML5仕様の後続仕様となる、現在策定中のHTML5.1ではWAI-ARIAに関する記述がモジュール化されてARIA in HTMLという独立した仕様になりました。
どのHTML要素にロール、ステートおよびプロパティーを指定できるかは上記仕様を見るのが一番早いでしょう(取りうる組み合わせは限られるので)。
著者は、強いネイティヴセマンティックと衝突するまたは与えられるHTML要素のデフォルトの暗黙のARIAセマンティックと等価である場合を除いた、[wai-aria-1.1]で説明される要求にしたがって、HTML要素のARIA roleおよびaria-*属性を使用してもよい。この制約は、開発者が文書の実際のUIを表すことのない無意味なユーザーインターフェース情報(UI)を支援技術製品に報告させることから防ぐことを意図する。
ARIA in HTML 日本語訳
ウェブ開発者は、HTMLにおけるARIA属性の使用に対する文書適合性の表に示されるセマンティックと矛盾する方法でARIA roleおよびaria-*属性を使用してはならない。ウェブ開発者は、表に定義されるデフォルトの暗黙のARIAセマンティックと一致する値にARIA roleおよびaria-*属性を設定すべきでない。
とあるので、たとえばリンク先で取り上げられているような、<main role="main">
というような指定は積極的にすべきではありません。HTML5仕様の言及についてもあくまで注なので、ARIA in HTMLの規定が優先されるはずです。(ただ、現時点のHTML 5.1 Edtor's DraftにもHTML5と同じ注記が残っているあたり、支援技術がmain
要素を解釈できないのならば、依然として<main role="main">
と記述してもよいでしょう。)リンク先記事のこれ以降の既述については2015年6月現在のARIA in HTML仕様に照らし合わせるとどうかな、という既述が結果として多数になってしまっています。ました。現在ではARIA in HTMLを加味した内容となっています。なお本筋から外れますが、HTML Living Standardによればmain
要素の数は制限されません。*1
この界隈、最新仕様を追いかけるのが意外と大変……。