CTS-KB

アクセシビリティ

あくせしびりてぃ

Web Accessibility A11y アクセシビリティ対応 情報アクセシビリティ ユニバーサルデザイン
#フロントエンド #UI #WCAG #A11y #法令対応

障害の有無・年齢・環境にかかわらず、誰もが Web やアプリを利用できるよう設計する取り組み。色覚多様性・スクリーンリーダー対応・キーボード操作・コントラストなど、煩雑で忘れがちな観点を体系的にカバーする。

A11y は accessibility の「a」と「y」の間に 11 文字あることに由来する省略表記。

概要 — もはや「あったら良い」ではない

アクセシビリティは 2025 年現在、グローバルでは法令遵守の対象

地域規制内容
EUEAA(European Accessibility Act, 2025 年 6 月施行)EU 域内サービスはアクセシビリティ対応必須
米国ADA(Americans with Disabilities Act)公共サイトは WCAG 準拠が事実上必須
日本JIS X 8341-3 / 障害者差別解消法公的機関は対応義務、民間は努力義務

加えて SEO 効果 (セマンティック HTML / 代替テキスト)、 ユーザー体験の向上 (キーボードショートカット、コントラスト)、 法的リスク回避 など、対応する理由は揃いました。

主な対応観点

領域対象ユーザー対応例
視覚(色覚多様性)P 型 / D 型 / T 型色覚色 + アイコン + ラベルで情報を冗長化、コントラスト確保
視覚(全盲・弱視)スクリーンリーダー利用者alt 属性 / aria-label / セマンティック HTML
聴覚聴覚障害者動画字幕、音声コンテンツに文字起こし
運動マウスが使えない・パーキンソン病などキーボード操作完結、フォーカス可視化、十分なクリック領域
認知高齢者 / 認知障害 / 母語が違う平易な言葉、明確なエラーメッセージ、十分な操作時間

色覚多様性は忘れられがち

通称該当率
P 型赤色弱男性の約 1%
D 型緑色弱男性の約 4%
T 型青色弱0.001% 程度

男性のおよそ 5%、女性のおよそ 0.2% が何らかの色覚多様性を持つ。EC サイトの男性顧客 100 人中 5 人は 「赤い在庫切れ表示」「緑の決済成功ボタン」が見分けにくい

「色だけで情報を伝えない」が鉄則:

× 在庫状況を色だけで示す(赤=切れ・緑=あり)
○ 色 + アイコン + ラベル(🔴 在庫なし / 🟢 在庫あり)

WCAG — 国際標準ガイドライン

WCAG(Web Content Accessibility Guidelines)は W3C が定める国際標準。2025 年現在は WCAG 2.2 が最新。

POUR の 4 原則

原則意味
Perceivable(知覚可能)情報が知覚できるalt 属性、字幕、コントラスト
Operable(操作可能)UI が操作できるキーボード操作、十分な時間
Understandable(理解可能)内容が理解できる平易な言語、予測可能な動作
Robust(堅牢)多様な手段で解釈できるセマンティック HTML、ARIA

適合レベル

レベル内容推奨
A最低限必須ライン
AA標準多くの法令が要求するライン
AAA最高公的機関・特別な配慮が必要な領域

民間サービスは WCAG 2.2 AA が現実的な目標。

主要ツール

カテゴリツール役割
自動チェックaxe-core / Lighthouse / WAVEWCAG 違反の自動検出、CI 組み込み可
スクリーンリーダーNVDA / JAWS / VoiceOver / TalkBack全盲ユーザーの体験を再現
コントラストWebAIM Contrast Checker / Stark文字 / 背景のコントラスト比測定
色覚シミュレーションStark / Sim Daltonism色覚多様性の見え方を再現
デザイン段階Figma plugin(Stark / Able)デザイン時点でチェック

コントラスト比の基準(WCAG 2.2 AA)

テキスト種別必要コントラスト
通常テキスト4.5 : 1 以上
大きいテキスト(18pt+ / 14pt+ Bold)3 : 1 以上
UI 部品・グラフィカル3 : 1 以上

実装テクニック

セマンティック HTML

× <div onclick="submit()">送信</div>          <!-- 意味が伝わらない -->
○ <button type="submit">送信</button>          <!-- スクリーンリーダーが「ボタン」と読み上げ -->

代替テキスト

× <img src="logo.png">                                <!-- 画像が読み上げられない -->
○ <img src="logo.png" alt="CTS-KB ナレッジベース">    <!-- スクリーンリーダーが代替テキストを読む -->

装飾的な画像:
○ <img src="decoration.png" alt="" aria-hidden="true">  <!-- 意図的に無視させる -->

ARIA 属性

セマンティック HTML で表現できない場合の補助:

<!-- カスタムボタンに役割を明示 -->
<div role="button" tabindex="0" aria-label="閉じる" onkeydown="...">

</div>

<!-- 動的に変わる情報を通知 -->
<div role="status" aria-live="polite">
  注文を受付ました
</div>

キーボード操作

すべての操作は Tab・Enter・Space・矢印キーで完結すること。
:focus { outline: 2px solid var(--color-focus); } で可視化。

AI 駆動開発との相性 — まさに AI の出番

アクセシビリティ対応は 「重要だが、煩雑で忘れがち」 という典型的な領域。だからこそ AI 駆動開発と相性が極めて良い。

煩雑な作業AI が任せられること
全画像の alt 属性付与Vision API で画像内容を解析、適切な代替テキストを生成
ARIA 属性の付与コンポーネント役割を判定、適切な rolearia-label を提案
コントラスト比チェックtokens の組み合わせを WCAG AA で自動検証
スクリーンリーダー読み上げレビューDOM 構造から読み上げ順を予測、不自然な箇所を指摘
キーボード操作の網羅フォーカス可能要素のリストアップと Tab 順検証
色覚シミュレーションスクリーンショットを 3 型でフィルタし、識別困難箇所を検出
WCAG 違反の自動修正axe-core の指摘を AI に渡して一括修正

AI 駆動開発での実装フロー

1. デザイン段階: Figma + Stark で色覚 / コントラストチェック
2. 実装段階:    AI に「WCAG 2.2 AA 準拠で実装して」と明示
3. CI 段階:     axe-core で自動チェック、違反時はビルド失敗
4. レビュー:    AI に「アクセシビリティ観点でレビューして」と依頼
5. 手動確認:    Storybook + a11y アドオンで対話確認

CLAUDE.md に書いておくべきこと

## アクセシビリティ要件

- 全画像に alt 属性必須(装飾は alt="" + aria-hidden="true")
- ボタンは <button>、リンクは <a> を使う(div + onclick 禁止)
- コントラスト比 WCAG AA(4.5:1)以上
- 色だけで情報を伝えない(必ずアイコン or ラベル併用)
- キーボード操作完結(Tab で全機能アクセス可能)
- フォーカスリング (:focus) を必ず可視化
- 動的更新は aria-live で通知

ここまで明示すれば、AI が生成するコードは大半が WCAG AA 相当を最初から満たします。

アンチパターン

失敗是正
リリース前にチェッカーで一括対応設計段階から組み込む。<button> を使わない設計はレビューで弾く
色だけで状態を表現色 + アイコン + ラベルの 3 点セットを規約化
alt 属性に画像のファイル名Vision API で内容ベースの代替テキストを生成
マウス前提の UIキーボードでも操作完結を必須化、CI で検証
div + onclick の自前ボタンセマンティック HTML(<button> <a>)を使う
動的更新を視覚だけで通知aria-live でスクリーンリーダーにも通知

関連記事

関連用語

  • Storybook@storybook/addon-a11y でコンポーネント単位の検証
  • Tailwind CSS — Design Tokens でコントラストを構造的に保証
  • Lighthouse — Google 製の自動チェックツール
  • PageSpeed Insights — Lighthouse をベースにした Web 公開ツール

参考資料