D2D アクセシビリティ勉強会 ~WAI-ARIAでアクセシブルにしてみよう~ ― 2017年03月20日 12時09分
先日大阪で開催された「D2D アクセシビリティ勉強会 ~WAI-ARIAでアクセシブルにしてみよう~」に参加しました。Web ページ (特に JavaScript を使った動的なもの) のアクセシビリティを高めていくための話と演習です。
前半
前半は SAWADA STANDARD DESIGN の澤田さんによる発表「WAI-ARIAの考え方と使い方を整理しよう」です。
- WAI-ARIA は要素 (の役割) と属性を追加する
- 構造や変化をユーザーエージェントに伝える
- ロール (役割) にはランドマークロール、文書構造ロール、ウィジェットロールがある
- HTML にもともと同じロールの要素があるのならそれを使えばいい (無理に WAI-ARIA のロールを指定する必要はない)
- ロールは文書構造やウィジェットを示すだけであり、見た目や機能を変化させるわけではない
- 見た目を変化させるには CSS が必要
- 機能 (挙動) を変化させるには JavaScript が必要
- 実際に支援ソフト (スクリーンリーダーなど) が対応しているか
- macOS / iOS には VoiceOver、Android には TalkBack、Windows にはナレーターが標準で付属している
- VoiceOver のローター機能でランドマークを読み上げられる
- 日本では PC-Talker のシェアが高いので、そこを押さえておきたい
- macOS / iOS には VoiceOver、Android には TalkBack、Windows にはナレーターが標準で付属している
後半
後半はグループごとに分かれ、実際に WAI-ARIA を使ってみる演習です。グループごとに「新着情報」「アコーディオン」「タブメニュー」の三つのお題の中から二つを選び、WAI-ARIA の属性を適宜追加していきました。回答発表時には VoiceOver での読み上げ確認も行われました。
各グループでの議論のポイントおよび回答例はみるくさんの「D2D アクセシビリティ勉強会 ~WAI-ARIAでアクセシブルにしてみよう~を開催しました。 - White Stage」に掲載されています。
感想など
「新着情報」では「続きを読む」リンクにラベルや説明を追加するか議論し、私のグループでは「過不足なく」という観点から (説明過剰にならないように) 結局追加しませんでした。しかし、視覚障碍者は Tab キーでリンクだけたどっていくこともあるので、リンクにも何の続きかわかるようラベル (aria-labelledby
属性、aria-label
属性) や説明 (aria-describedby
属性) を付けたほうがいいとのこと。
回答例を見ると、
<dl>
...
<dt id="day01">2016年5月8日</dt>
<dd>
<p id="headline01">第6回 D2D アクセシビリティ勉強会でアクセシブルなフォームを作成!</p>
<a id="more01" href="news01" aria-labelledby="day01 headline01 more01">>>続きを読む</a>
</dd>
</dl>
のように aria-labelledby
属性に自分自身の ID を指定しており、そんなこともできるのかとびっくりです。
CMS で生成された内容に適用しやすいよう、新着情報への WAI-ARIA の属性の指定を JavaScript で行うというチームもありました。サーバー側でやるかクライアント側で付与やるかはさておき、指定を (そしてできることなら検証も) 自動化していくのは、広く利用されるために重要なことでしょう。
WAI-ARIA のウィジェットロールの指定は React のような宣言的な UI 記述と相性がよさそうです。「WAI-ARIA 対応のアクセシブルなタブ UI を React で実装する ::ハブろぐ」という記事もあります。
一方、[aria-hidden="true"] { display: none !important; }
のように CSS の属性セレクタを使うという話もありましたが、こちらは BEM などの命名規則と組み合わせるとどうなるのか、気になるところです。
懇親会では tabindex
属性に二つの意味があって分かりづらいという話が出ました。その要素にフォーカスできるかどうか (tabindex
属性が存在するかどうか) と、Tab ナビゲーションの順序はどうなるか (tabindex
属性の値が 0 以上のとき) です。この辺りは IE 5 の拡張 (HTML 4 ではリンクとフォームコントロール要素にしか付けられなかった tabindex
属性を、どんな要素にも付けられるようにした) に根差すことでしょうから、今考えるならもう少しうまくできるのではと思ってしまいますね。
勉強会後に Windows 用スクリーンリーダー NVDA をインストールしてみました。開発者向けには「ポータブル版を作成」し、必要に応じて起動したほうがよいとのことです。ポータブル版作成時に、指定したフォルダの直下にファイルが展開されるので、新規にフォルダを作ってそれを指定するのがよさそうです。
最近のコメント