アクセシビリティ(Accessibility)とは、障害の有無・年齢・環境を問わず、すべての人がウェブサイトやアプリを利用できる状態を実現することです。日本では2024年施行の改正障害者差別解消法により、民間企業にも合理的配慮の提供が義務化されました。アクセシビリティへの対応は「優しさ」ではなく、法的義務かつビジネス機会です。このレッスンでは、WCAG 2.1の構造、コントラスト比の測定方法、キーボード操作の実装、スクリーンリーダー対応、ARIA属性の実践的な使い方まで体系的に学びます。
アクセシビリティ — WCAG 2.1 / コントラスト比 / ARIA / キーボード操作
WCAG 2.1はLevel A・AA・AAAの3段階で構成されます。法的要件・実務的な対応目標としてはLevel AAが基準となります。
WCAG(Web Content Accessibility Guidelines)は「知覚可能・操作可能・理解可能・堅牢」の4原則(POUR)に基づいています。
情報とUIコンポーネントを、ユーザーが知覚できる方法で提示しなければなりません。
主な達成基準
UIコンポーネントとナビゲーションは操作可能でなければなりません。
主な達成基準
情報とUIの操作方法は理解可能でなければなりません。
主な達成基準
コンテンツは支援技術(スクリーンリーダー等)を含む多様なユーザーエージェントが確実に解釈できなければなりません。
主な達成基準
コントラスト比はテキストと背景の明暗差を数値化したものです。数値が大きいほど見やすく、WCAG Level AAでは通常テキストに4.5:1以上が必要です。
コントラスト比 = (明るい色の輝度 + 0.05)÷(暗い色の輝度 + 0.05)
最大値は21:1(白地に黒文字)、最小値は1:1(同色)です。
| テキスト種別 | AA基準 | AAA基準 |
|---|---|---|
| 通常テキスト(18pt未満・太字なし) | 4.5:1 | 7:1 |
| 大きなテキスト(18pt以上または14pt以上太字) | 3:1 | 4.5:1 |
| UIコンポーネントの境界・アイコン | 3:1 | 規定なし |
| 装飾テキスト・非アクティブ要素 | 適用除外 | 適用除外 |
| ツール | 特徴 |
|---|---|
| Figma Contrast Plugin | Figma上で即時チェック |
| WebAIM Contrast Checker | ブラウザ上でHEX入力 |
| Colour Contrast Analyser | デスクトップアプリ、スポイトで画面から取得 |
| Chrome DevTools | 開発者ツールのアクセシビリティパネル |
⚠️ グレーテキストとプレースホルダーに注意: デザインでよく使われる薄いグレーのテキスト(#999999)を白背景に置くとコントラスト比は2.85:1でAAを満たしません。#767676以上の暗さが白背景でのAA達成の目安です。プレースホルダーテキストはWCAGの対象外ですが、高齢者やロービジョンのユーザーへの配慮として4.5:1を目指してください。
キーボードのみでウェブサイトを使うユーザーには、手や腕に障害のある方、マウスを使わない上級者(スクリーンリーダーユーザーを含む)などが含まれます。
Tabキーでのフォーカス移動 Tabキーでフォーカスを前方移動、Shift+Tabで後方移動します。フォーカスの順序はDOM順(HTMLの記述順)に従うため、CSSで表示順を変えても実際のTab順はHTML構造に依存します。
フォーカス可視化の義務 CSSで「outline: none」を設定するとフォーカスが視覚的に消えます。これはLevel AAの達成基準2.4.7違反です。デザインと両立させるには独自のフォーカスリング(focus-visible CSS)を設計してください。
:focus-visible {
outline: 3px solid #005fcc;
outline-offset: 2px;
}
フォーカストラップ モーダルダイアログが開いている間は、Tabキーのフォーカスがモーダル外に出ないよう制御する必要があります(フォーカストラップ)。モーダルを閉じた後はモーダルを開いたボタンにフォーカスを戻してください。
| コンポーネント | 推奨キー操作 |
|---|---|
| ボタン | Enter または Space で起動 |
| リンク | Enter で遷移 |
| チェックボックス | Space でオン/オフ切り替え |
| ラジオボタン | 矢印キーでグループ内移動 |
| セレクトボックス | Alt+↓で展開、矢印キーで選択、Enterで決定 |
| モーダル | Esc でキャンセル・閉じる |
| タブ | 矢印キーでタブ間移動(WAI-ARIAパターン準拠) |
スクリーンリーダーは画面の内容を音声で読み上げるソフトウェアです。視覚障害のあるユーザーだけでなく、運転中・料理中など手がふさがっている状況でも使われます。
| SR | プラットフォーム | シェア |
|---|---|---|
| NVDA | Windows(無料) | 40%前後 |
| JAWS | Windows(有料) | 40%前後 |
| VoiceOver | macOS / iOS(標準搭載) | 15%前後 |
| TalkBack | Android(標準搭載) | 参考 |
スクリーンリーダー対応の基本はARIA属性より先にセマンティックHTMLの正しい使用です。
h1〜h6の階層構造を守る(h1を複数使わない)ul/ol/liで記述するcaption・thのscope属性を設定するnav要素で囲むlabel要素でfor属性により入力フィールドと関連付けるARIAはセマンティックHTMLでは表現できない状態・役割・プロパティをスクリーンリーダーに伝えるための補助属性です。ARIAの原則は「No ARIA is better than bad ARIA」です。不正確なARIAは正確な情報を持たないよりも有害になる場合があります。
aria-label 要素のアクセシブルな名前を直接指定します。アイコンのみのボタン(閉じるボタン、検索ボタン)に必須です。
<button aria-label="検索">
<svg>...</svg>
</button>
aria-labelledby 別の要素のIDを参照してアクセシブルな名前を設定します。ダイアログのタイトルに使います。
aria-expanded アコーディオン・ドロップダウンの開閉状態(true/false)をスクリーンリーダーに伝えます。JavaScriptで動的に更新してください。
aria-live
動的に変化するコンテンツ(トースト通知・検索結果の件数など)をスクリーンリーダーが自動で読み上げるよう指示します。aria-live="polite"は現在の読み上げが終わってから通知、aria-live="assertive"は即座に割り込んで読み上げます。
aria-hidden
スクリーンリーダーに読み上げさせない要素(装飾アイコン・重複テキスト)に使います。aria-hidden="true"を設定します。
role属性
HTMLの意味と異なる役割を付与します。カスタムコンポーネント(divで作ったボタンなど)にrole="button"を指定しますが、可能な限り本来のbutton要素を使うことを優先してください。
W3CはARIAを使った主要コンポーネント(ダイアログ・タブ・アコーディオン・コンボボックスなど)の実装パターンを公式に公開しています(WAI-ARIA Authoring Practices Guide)。カスタムコンポーネントを実装する際は必ずこのガイドを参照してください。
💡 アクセシビリティ自動テストツールの限界: axe・Lighthouse等の自動テストで検出できるアクセシビリティ問題は全体の30〜40%に留まります。残りの60〜70%はキーボード操作の手動テストとスクリーンリーダーを使った実際の確認が必要です。自動テストに合格しても完全なアクセシビリティが保証されるわけではありません。
以下のワークを実施してください。
アクセシビリティは後付けで対応できるものではありません。設計の最初から「すべての人が使える」ことを前提とすることで、初めて本物のアクセシビリティが実現します。WCAG 2.1のLevel AAを基準とし、コントラスト比・キーボード操作・セマンティックHTML・ARIA属性の4本柱を押さえることで、障害のあるユーザーだけでなく、高齢者・スマートフォンユーザー・低速回線ユーザーを含むすべての人にとって使いやすいプロダクトが生まれます。アクセシビリティへの投資はユーザー全体の体験品質への投資です。
全問正解でこのレッスンが「完了」になり、コースの全レッスンを完了すると修了証が発行されます。解説つき・何度でも挑戦できます。
Q1.デザイン上の理由で、フォーカス時の枠線を消したいという要望がありました。本文に沿った対応はどれですか?
Q2.divで作ったカスタムボタンをスクリーンリーダーに対応させたい場合、本文の考え方で最も優先すべきことはどれですか?
Q3.Lighthouseのアクセシビリティ自動テストで満点が出ました。本文に照らした次の対応として適切なのはどれですか?
完全無料・クレジットカード不要
デザインシステム構築・運用上級講座
アクセシビリティ(a11y)は、障がいの有無や環境に関わらず、すべてのユーザーがプロダクトを利用できるようにする設計思想です。
25分本文は無料で閲覧可
実践Webデザイン - Figma完全マスター講座
「なんとなくデザインがおかしい」「プロっぽく見えない」——そんな感覚の正体の多くは、デザイン4原則のどれかが守られていないことにあります。
30分無料公開
実践Webデザイン - Figma完全マスター講座
Figmaを開いた瞬間、無限に広がる白いキャンバスと見慣れないパネル群に戸惑う人は多いです。
30分無料公開
実践Webデザイン - Figma完全マスター講座
デザイナーとエンジニアが初めてコラボレーションできるツールを作る——そんなビジョンのもと、Figmaは2016年にDylan FieldとE
30分無料公開
実践Webデザイン - Figma完全マスター講座
配色はデザインの中で最も「感覚的」と思われがちですが、実は明確なルールと手順があります。
30分本文は無料で閲覧可
実践Webデザイン - Figma完全マスター講座
タイポグラフィはデザインの中で最も情報量が多いにもかかわらず、最も軽視されがちな要素です。
30分本文は無料で閲覧可