Webアクセシビリティ対応としてARIA属性を追加しても、HTML本来の意味と矛盾していれば、読み上げソフトの利用者を混乱させます。まず標準HTMLを正しく使い、必要な部分だけARIAで補う考え方を整理します。
ARIAは見た目を変える機能ではない
ARIAは、要素の役割、状態、関係を支援技術へ伝えるための仕組みです。属性を追加しても、キーボード操作やクリック動作が自動で実装されるわけではありません。
たとえばdivへrole="button"を付けても、EnterキーやSpaceキーで操作できるボタンにはなりません。通常は最初からbutton要素を使う方が、役割と基本操作をブラウザが提供してくれます。
標準HTMLで表現できるかを先に考える
| 作りたいもの | 先に検討するHTML |
|---|---|
| 実行ボタン | button |
| 別ページへの移動 | aとhref |
| 見出し | h2やh3 |
| 入力項目名 | label |
| 開閉する詳細 | detailsとsummary |
標準要素なら、読み上げ、キーボード、音声操作、ブラウザ機能へ意味が伝わりやすくなります。
見た目と役割を矛盾させない
リンクの見た目なのにボタンとして動く、見出しに見える文字がdivだけで作られている、といった状態は避けます。ARIAで後から役割を上書きする前に、HTML構造を直せないか確認します。
特に、すでに意味を持つ要素へ異なるroleを付けると、ブラウザや支援技術によって解釈が変わる可能性があります。W3CのARIA in HTMLは、HTML要素にどのARIAを使えるかという適合ルールを示しています。
状態が変わるUIではARIAが役立つ
標準HTMLだけで現在の状態を十分に伝えられない場合は、ARIAが有効です。ハンバーガーメニューの開閉ならaria-expanded、入力エラーの説明との関連付けならaria-describedbyなどを検討します。
ただし、JavaScriptで画面が変わったときはARIAの値も同時に更新します。最初からaria-expanded="false"のままでは、見た目は開いていても読み上げ上は閉じた状態になります。
自動検査だけで完了にしない
検査ツールは、禁止された属性やラベル不足を見つける助けになります。しかし、ボタン名が分かりやすいか、操作後の状態が伝わるか、読み上げ順が自然かまでは機械だけで判断できません。
キーボードだけで操作し、主要画面を読み上げソフトでも確認します。独自メニュー、モーダル、タブ、フォームは優先して検査します。
まとめ
ARIA対応の出発点は、属性を増やすことではなく、意味のあるHTMLを選ぶことです。標準HTMLで表現できない状態や関係だけをARIAで補い、画面の変化と値が一致しているか実際に操作して確認します。