edubun
日本語

キーボードでページを使う

マウスを外して Tab を押しましょう。リンク、ボタン、入力欄が、ページを読む順に1つずつ光るはずです。

キーボードを使う人

マウスにまったくさわらない人はたくさんいます。マウスをしっかり持てない人もいれば、スイッチ、マウススティック、キー入力を送る音声認識を使う人もいます。スクリーンリーダーの利用者も、たいていキーボードで移動します。WCAG 2.2のレベルAの達成基準2.1.1「キーボード」は、ページのすべてがキーボードで操作できなければならないとしています。達成基準2.1.2「キーボードトラップなし」はさらに、フォーカスがページのある部分に入れるなら、キーボードでまたそこから出られなければならないとしています。

よく使うキー。Tab で前へ、Shift+Tab で後ろへ進み、Enter でリンクをたどったりボタンを押したりします。Space でボタンを押したりチェックボックスにチェックを入れたりし、矢印キーでラジオボタンのグループやメニューの中を移動します。

最初から動く要素を使う

href のあるリンク、button、input、select、textarea は、そのままでフォーカスでき、正しいキーに反応します。クリックハンドラーを付けた div はそうではありません。Tab でたどり着けず、Enter を押しても何も起こらず、スクリーンリーダーはそれをボタンとして読み上げません。MDNの助言は明快です。div をボタンのように動かすために tabindex を使わず、button 要素を使いましょう。役割もキーボードの動作も最初から組みこまれています。

フォーカス順序と tabindex

Tab の順序は、HTMLのソースの要素の順に従います。達成基準2.4.3「フォーカス順序」は、この順序がページの意味と使い方を保つことを求めるので、おかしな順序のいちばん簡単な直し方はHTMLを並べかえることです。MDNは tabindex の値を3種類に分けています。0は要素をふつうの順序に入れます。負の値(ふつうは -1)は要素を Tab の順序から外しますが、スクリプトから focus() を呼ぶことはできるので、ダイアログやエラーメッセージに役立ちます。正の値は要素をほかのすべてより前に押し出します。正の値を使うと順序が追いにくくなるので、MDNは0と-1だけを使うよう勧めています。

今どこにいるかを見せる

キーボードの利用者には、どの要素にフォーカスがあるかが見える必要があります。レベルAAの達成基準2.4.7「フォーカスの可視化」は見えるフォーカスインジケーターを求めるので、代わりを何も置かずに outline: none のようなスタイルシートのルールを書くと不合格です。WCAG 2.2は関連する達成基準を2つ加えました。レベルAAの2.4.11「フォーカスの非隠蔽(最低限)」は、フォーカスされた項目が、固定フッターやクッキーのバナーのように制作者が加えたものの後ろに完全に隠れてはならないとしています。同じくAAの2.5.8「ターゲットのサイズ(最低限)」は、クリックやタップをするものが少なくとも 24×24 CSSピクセルあるか、まわりに十分なすき間があることを求めます。

もう1つ、とても役に立つパターンがあります。スキップリンクです。長いメニューのあるサイトでは、キーボードの利用者はどのページでもメニューのすべての項目を Tab で通らなければなりません。ページの最初に置き、メインコンテンツを指すリンクがあれば、1回のキー入力でそこを飛びこえられます。フォーカスを受けるまでは見た目の上で隠しておくこともできます。

確かめるのは2分で済みます。アドレスバーをクリックしてから、Tab をくり返し押してページ全体をたどります。すべてのコントロールにたどり着けるか、順序が読む順と合っているか、フォーカスの位置がいつも見えるか、Enter と Space がマウスのクリックと同じ働きをするかを確かめます。それから Shift+Tab で戻ります。たどり着けないコントロールや、フォーカスが見えなくなる場所があれば、それはバグです。

WCAG 2.1.1キーボード(A):すべてがキーボードで動く
WCAG 2.1.2キーボードトラップなし(A)
WCAG 2.4.7フォーカスの可視化(AA)
WCAG 2.4.11フォーカスの非隠蔽(最低限)、AA、2.2で新しく追加
WCAG 2.5.8ターゲットのサイズ(最低限):24×24 CSS px、AA
tabindex="-1"Tab の順序からは外れるが、スクリプトでフォーカスできる
ポイント
  • すべてがキーボードで動き、トラップがないこと(2.1.1、2.1.2)。
  • クリックできる div の代わりに button と a href を使います。
  • Tab の順序はHTMLに従います。tabindex は0と-1だけを使います。
  • フォーカスを見えるようにして隠さず、ターゲットは少なくとも 24×24 CSS px にします。
  1. フォーカスを次の要素へ移すキーはどれですか?
  2. div に onclick ハンドラーが付いています。何がいけないのですか?
    • キーボードでたどり着くことも押すこともできない
    • 遅すぎる
    • スタイルを付けられない
    • 何も問題はない
  3. tabindex="0" は何をしますか?
    • 要素をふつうの Tab の順序に加える
    • Tab の順序で最初にする
    • Tab の順序から外す
    • 無効にする
  4. MDNが勧める tabindex の値はどれですか?
    • 0と-1だけ
    • どんな正の数でも
    • 1から10
    • どれも決して使わない
  5. スタイルシートが、フォーカスされたすべての要素に outline: none を指定しています。満たせなくなる達成基準はどれですか?
    • 2.4.7 フォーカスの可視化
    • 1.1.1 非テキストコンテンツ
    • 1.4.3 コントラスト(最低限)
    • 3.3.2 ラベル又は説明
  6. 2.5.8が求めるターゲットの最小の大きさは、1辺あたり何CSSピクセルですか?
  7. 固定されたクッキーのバナーが、フォーカスされたボタンを完全におおっています。これに当たるWCAG 2.2の達成基準はどれですか?
    • 2.4.11 フォーカスの非隠蔽(最低限)
    • 2.4.3 フォーカス順序
    • 2.1.2 キーボードトラップなし
    • 1.4.11 非テキストのコントラスト
  8. スキップリンクは何をしますか?
    • くり返されるメニューを飛びこえてメインコンテンツへ移る
    • 次のページを飛ばす
    • 画像を隠す
    • キーボードを使えなくする
  9. フォーカスされたチェックボックスにチェックを入れるキーはどれですか?
    • Space
    • Tab
    • Escape
    • Shift
  10. フォーカスがウィジェットに入り、Tab で出られません。満たせなくなる達成基準はどれですか?
    • 2.1.2 キーボードトラップなし
    • 2.4.6 見出し及びラベル
    • 1.4.1 色の使用
    • 2.5.8 ターゲットのサイズ(最低限)
このコースの出典 (9)
  • W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
  • W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
  • W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
  • W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
  • MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
  • MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
  • MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

確認日: 2026-10-17