HTML アクセシビリティ(a11y)

Web を「より多くの人が、より多くの状況で」使えるようにする取り組み。 派手な技術ではなく、正しいHTMLを書き、操作と認知の前提を固める地道な作業。 ここでは HTML 周りに絞って、メンタルモデルから実装パターンまでを一通り。

これは何のための話か

Web アクセシビリティ (a11y) は、視覚障害・聴覚障害・運動機能障害・認知/学習障害などのある人だけのためのものではない。「状況的な制約」がある時、誰もがその恩恵を受ける。

つまり、a11y を上げる = 全ユーザーの体験を底上げする
加えて、多くの国で法的要件になっている(米 ADA / EU EAA / 日本の障害者差別解消法など)。

WCAG(基準)と4原則

実務的な基準は WCAG(Web Content Accessibility Guidelines)。最新は 2.2(2023〜)。 4つの原則 POUR がすべての出発点:

原則意味典型的な実装
Perceivable
知覚可能
情報が知覚できる手段で提供されている 画像の alt、動画の字幕、十分なコントラスト
Operable
操作可能
UI を操作できる手段がある キーボードで全部操作、十分なタッチサイズ
Understandable
理解可能
内容と挙動が理解可能 明確なエラーメッセージ、一貫したナビ、言語属性
Robust
堅牢
支援技術を含む様々な UA で動く 正しい HTML、name/role/value が取れるマークアップ

適合レベル: A / AA / AAA

達成基準は3段階。実務のターゲットは AA。 AAA は記事・公的サイトなど特定文脈以外では現実的でない要件もある(コントラスト 7:1 等)。

メンタルモデル: アクセシビリティツリー

ブラウザは DOM を読んで アクセシビリティツリーを作る。 スクリーンリーダや音声操作、ブラウザの拡張はこのツリーを介して操作される

各ノードは典型的に4つの情報を持つ:

正しい HTML を書けば、これらは自動で生成される。 例えば <button>送信</button>name="送信", role="button" が勝手に付く。

逆に <div onclick>送信</div> はツリー上で「ただの匿名要素」になる。これが a11y の本質的な問題。

3つの優先順位

  1. 正しい HTML を書く — 9割の問題はこれで解決する。
  2. 必要なところだけ ARIA で補完 — カスタム UI で意味付けが足りない時。
  3. テストする — axe / Lighthouse / 手動キーボード / スクリーンリーダ。
第一原則: ARIA を使わないで済むなら使わない

W3C が公式に言っている。「不適切な ARIA は、ARIA を全く使わないより悪い」
<button> を使えば role="button" は要らない。 <a href> を使えば「リンク」だと自動で伝わる。これが最強。

知っておくと変わる「3つの誤解」

1. 「うちのサービスに障害のあるユーザーは少ない」

WHO の統計では世界人口の 16% に何らかの障害がある。状況的障害を含めればさらに多い。 加齢で目が悪くなる人、画面の小さいスマホ、明るい屋外、片手で操作中、すべてが a11y の文脈。

2. 「a11y は最後にチェックすればいい」

後付けは常にコストが大きい。マークアップが div だらけの SPA を後から a11y 対応するのは1からやり直すレベル。最初から正しい HTML を書く方が圧倒的に楽。

3. 「a11y = 見た目を地味にすること」

まったく違う。派手なアニメや凝った UI も、ちゃんと作れば a11y 対応できる。 派手さを下げる必要があるのは、点滅・激しい動き・「色しか手がかりがない UI」などの限定された範囲だけ。

このノートの読み方

  1. セマンティック HTML — 9割はここから始まる。
  2. 画像フォーム — 出現頻度が高く、間違いも多いポイント。
  3. フォーカスとキーボード — どんな UI でも必須。
  4. ARIA — 必要最小限。「使わない判断」が一番難しい。
  5. スクリーンリーダ — テスト前に仕組みを知る。
  6. 色・コントラスト動き — 視覚と前庭の配慮。
  7. テスト・検証 — 自動チェックの限界も含めて理解する。
参考にすべき場所

WCAG 2.2 公式: Quick Reference
MDN Accessibility: 体系的に学ぶならここ。
ARIA Authoring Practices: カスタム UI 実装の参考。
WebAIM: 実例ベースの解説、毎年の現状調査もここ。