TL

アクセシビリティ(a11y)

障害の有無や環境に関わらず誰もが使える Web を目指す考え方です。セマンティック HTML・ARIA・キーボード操作・コントラストの基本を整理します。

基礎アクセシビリティa11yHTMLフロントエンド最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.アクセシビリティ(a11y)は、障害の有無や環境に関わらず誰もが Web を使えるようにする取り組み。
  • 2.土台は正しいタグを使うセマンティック HTML。それで足りない部分だけ ARIA で補う。
  • 3.マウスなしのキーボード操作と、十分な色のコントラストは最低限おさえる。

アクセシビリティとは

**アクセシビリティ(accessibility、略して a11y)**とは、障害の有無や利用環境に関わらず、誰もが情報やサービスを使えるようにする考え方です。Web では、視覚・聴覚・運動・認知などさまざまな条件の人が対象になります。

具体的には、スクリーンリーダー(画面読み上げ)の利用者、マウスが使えずキーボードだけで操作する人、色の見え方が異なる人、強い光がつらい人などです。配慮は彼らだけでなく、全員にとっての使いやすさを底上げします。

  • 字幕は、聴覚障害者だけでなく騒がしい場所の利用者にも役立つ。
  • キーボード操作は、パワーユーザーの効率も上げる。

セマンティック HTML が土台

アクセシビリティの 8 割は、正しいタグを正しく使うことで達成できます。見た目を <div> で作り込むのではなく、意味に合った要素を選ぶことが出発点です。

  • ボタンは <button>、リンクは <a>、見出しは <h1><h6> を使う。
  • フォーム部品には <label> を関連付ける。
  • ページ構造は <header> <nav> <main> <footer> などのランドマークで表す。
<!-- 良い例:意味のあるタグ。読み上げ・キーボード操作が標準で効く -->
<button type="button">送信する</button>

<label>
  メール
  <input type="email" name="email" />
</label>

<!-- 避けたい例:見た目だけのボタン。フォーカスも Enter も自前実装が要る -->
<div class="btn" onclick="submit()">送信する</div>

正しいタグには、フォーカス可能・キーボードで操作可能・スクリーンリーダーが役割を読み上げるといった機能が初めから備わっています。<div> で代用すると、それらを全部自前で実装する羽目になり、抜けが事故につながります。

まず HTML を疑う

「読み上げで意味が伝わらない」「キーボードで押せない」と感じたら、ARIA を足す前にタグ選びが正しいかを見直しましょう。適切な要素に置き換えるだけで解決することが多いです。

ARIA:足りない部分を補う

**ARIA(Accessible Rich Internet Applications)**は、HTML だけでは意味を伝えきれない部分を補う属性群です。役割を表す role、状態を表す aria-* などで、支援技術に情報を渡します。

属性の例役割
role要素の役割を明示(例: role="dialog"
aria-label見えるテキストが無い要素に名前を与える
aria-expanded開閉状態(アコーディオン等)を伝える
aria-hidden支援技術から要素を隠す

ARIA はカスタムUI(自作のモーダル、タブ、メニューなど)で力を発揮します。ただし最後の手段です。<button> で済むものに role="button" を足すのは無駄で、かえって壊しやすくなります。

間違った ARIA は無いより悪い

ARIA は要素の意味を上書きします。誤った role や、実態と食い違う aria-* を付けると、読み上げが嘘の情報を伝え、利用者を混乱させます。「No ARIA is better than bad ARIA(誤った ARIA を付けるくらいなら付けない方がよい)」という原則を忘れずに。

キーボード操作とフォーカス

マウスを使えない利用者は、Tab キーで要素を移動し、Enter / Space で操作します。すべての機能がキーボードだけで完結することが必須です。

  • すべて操作可能:クリックできるものは、キーボードでも到達・実行できる。
  • フォーカスが見える:いまどこにいるか分かるよう、フォーカスリング(枠)を消さない。
  • 論理的な順序:Tab で移る順番が、画面の見た目と一致している。
  • キーボードトラップを避ける:モーダルなどから Tab で抜け出せる(または閉じられる)。

ネイティブな <button><a> を使っていれば、これらの多くは自動的に満たされます。ここでもセマンティック HTML が効いてきます。

色とコントラスト

文字と背景の**コントラスト(明暗差)**が不足すると、読みづらく、人によっては読めません。指針 WCAG では、通常サイズの文字で 4.5:1 以上のコントラスト比が推奨されています。

  • 薄いグレーの文字を白背景に置くなどの「おしゃれだが読めない」配色を避ける。
  • 色だけで情報を伝えない:エラーを赤色だけで示さず、アイコンや文言も添える(色覚特性への配慮)。
  • リンクは色の違いだけでなく、下線などでも区別できるとよい。
チェックは半分自動化できる

コントラスト不足・代替テキスト(alt)の欠落・見出し階層の乱れなどは、Lighthouse や axe といったツールで機械的に検出できます。まず自動チェックで土台を固め、読み上げ・キーボードでの実機確認は手動で行うのが現実的です。

土台となるタグの使い方は HTML を、操作を組み立てる側は JavaScriptDOM もあわせて読むと理解が深まります。

Web/フロントエンド Article

アクセシビリティ(a11y)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アクセシビリティ

比較で見る軸

難易度: basic / カテゴリ: Web/フロントエンド / タグ数: 4

導入後に効く点

土台は正しいタグを使うセマンティック HTML。それで足りない部分だけ ARIA で補う。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
basic
カテゴリ
Web/フロントエンド
タグ数
4

判断チェックリスト

  • 自社の用途が「アクセシビリティ / a11y」に近いか確認する。
  • 強みである「アクセシビリティ(a11y)は、障害の有無や環境に関わらず誰もが Web を使えるようにする取り組み。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アクセシビリティa11yHTMLフロントエンドアクセシビリティa11yHTMLフロントエンド
参考: 公式情報