この記事は生成AIによって書かれています
ウェブアクセシビリティとは何か?
ウェブアクセシビリティとは、すべてのユーザーがウェブコンテンツにアクセスし、利用できるようにすることを意味します。これには、視覚、聴覚、運動、認知などに障害を持つユーザーも含まれます。
アクセシビリティの高いウェブサイトは、単に倫理的な配慮だけでなく、より多くのユーザーにリーチし、SEOにも好影響を与えるため、ビジネス上の利点もあります。
なぜアクセシビリティが重要なのか?
- 世界には10億人以上の障害を持つ人々がいるとされており、その多くがウェブにアクセスする際に困難を抱えています。
- アクセシビリティの高いサイトは、スクリーンリーダーや音声入力、キーボード操作などの支援技術と連携しやすくなります。
- 法律や規制(例:WCAG、ADA、障害者差別解消法)への準拠も重要です。
アクセシビリティの4原則(POUR)
-
知覚可能 (Perceivable)
- 情報はユーザーに認識されなければならない
- 例:画像に
alt
属性、映像に字幕、構造化された見出し
-
操作可能 (Operable)
- UIやナビゲーションがあらゆる手段で操作可能であること
- 例:マウスなしでも操作できる、タイムアウトへの配慮
-
理解可能 (Understandable)
- コンテンツや操作が分かりやすく予測可能であること
- 例:明確なラベル、フォームエラーの説明
-
堅牢 (Robust)
- コンテンツが将来の支援技術やブラウザでも対応できること
- 例:正確なHTML、ARIAの適切な使用
よくある改善ポイント
- 画像には
alt
属性を付ける - セマンティックなHTML要素(
<nav>
,<main>
,<section>
など)を活用 - 見出しタグ(
<h1>
〜<h6>
)で文書構造を明確に - 十分な色のコントラスト(推奨: 最低4.5:1)
- フォーム要素には必ず
<label>
を関連付け - リンクやボタンは役割が明確にわかる文言にする
- JavaScriptによる動的変更には通知やフォーカス制御を加える
ARIA(Accessible Rich Internet Applications)とは?
ARIAは、通常のHTMLでは意味を伝えにくい動的なUI要素に役割や状態を追加するための属性群です。
-
role
:要素の役割を伝える(例:role="dialog"
) -
aria-label
:ラベルを追加 -
aria-hidden
:スクリーンリーダーから非表示にする -
aria-expanded
:折りたたみ要素などの展開状態を示す
注意:まずはHTMLのセマンティック要素を使い、ARIAは補助的に使用しましょう。
スクリーンリーダーとは?
スクリーンリーダーは、画面の内容を音声や点字で出力する支援技術です。以下は有名なスクリーンリーダーの例です:
- NVDA(Windows、無料)
- JAWS(Windows、有料)
- VoiceOver(macOS/iOS)
- TalkBack(Android)
テストのポイント
- フォーカスが適切に移動するか
- 読み上げられる順序が視覚と一致しているか
- 各UIコンポーネントの役割やラベルが伝わっているか
フォームのアクセシビリティ
- 各
<input>
には明確な<label>
を設ける - エラー時には明確なメッセージを表示し、視覚・非視覚の両方で通知
- 入力例を
placeholder
ではなく、説明文やARIAで伝える -
<fieldset>
や<legend>
でグループ化するとより分かりやすくなる
<fieldset>
<legend>お支払い方法</legend>
<label><input type="radio" name="pay" value="credit"> クレジットカード</label>
<label><input type="radio" name="pay" value="paypal"> PayPal</label>
</fieldset>
キーボード操作への配慮
- すべての操作がTabキーとEnter/Spaceキーで完結できること
- フォーカスインジケーター(アウトライン)を消さない
- tabindex, aria-keyshortcutsなどでナビゲーションを補助
:focus {
outline: 2px solid #007ACC;
}
動的コンテンツとアクセシビリティ
JavaScriptで動的に変更される内容は、視覚的には変化してもスクリーンリーダーに伝わらない場合があります。
対策:
- aria-live属性でスクリーンリーダーに通知
<div aria-live="polite">更新された内容</div>
- モーダルやドロワーは、role="dialog"、aria-modal="true"を使用し、フォーカスを閉じ込める
- DOMの変更時にfocus()メソッドで適切な場所にフォーカスを移動する
アクセシビリティチェックに使えるツール
- WAVE
- Lighthouse(Chrome DevTools)
- axe DevTools
- スクリーンリーダー(NVDA, VoiceOver など)