トピックを検索
その機能がないと使えないアクセシビリティ設定
ハイコントラストモードや一時停止の切り替えはどの規格も求めていませんが、用意したなら、薄いグレーの文字や止めたい動きの後ろではなく、その機能なしで届く形で置かなければなりません。
.tools button { font-size: 12px; color: #767676; } 問題
設定を必要とする人が、それを有効にする切り替えに届きません。切り替えが、設定の与えるものに頼っているためです。ここでは、コントラストのモードの切り替えが薄い文字で、一時停止の切り替えが動きの後ろにあります。
サイトによっては、独自の設定を用意しています。ハイコントラストモード、大きな文字、アニメーションの一時停止、字幕、やさしい版などです。どれも、そのままではサイトを使えない人のためのものです。そのため、設定を有効にする切り替えを使うのはまさにその人たちで、しかも設定がまだオフの状態、つまり設定で変えたいはずの見た目や配置のままで使うことになります。設定が与えるものを必要とする切り替えは、その設定を必要とする人には使えません。
小さな公立図書館 Riverside Library は、落ち着いた今風のサイトに二つの設定を用意しています。グレーの文字が読みにくい人のための、黒地に白い文字と黄色のリンクのハイコントラストモードと、数秒ごとに切り替わる今週のイベントのバナーがあると読めない人のための、アニメーションを一時停止する切り替えです。
ハイコントラストの切り替えは、ヘッダーのメニューの後ろにあり、ヘッダーのほかの小さな文字と同じ、12ピクセルの #767676 のグレーで、枠線もありません。ロービジョンの利用者が、開館時間を確かめにサイトを開きます。大きな見出しは読めます。ところが、ヘッダーの端にある切り替え、つまりページのほかの部分を読めるようにしてくれる唯一のものは、薄いにじみにしか見えません。画面拡大ソフトでページの左上だけを表示していると、画面の外にあって目に入りもしません。
一時停止の切り替えは読みやすく、問題は別のところにあります。切り替えはフッターにあり、イベントのバナーとページ全体の後ろにあります。横で何かが動いていると文章を読めない人は、動きを止めるたった一つの切り替えに届くまでに、バナーを読み過ごすか、バナーのすべてのリンクをTabで通り過ぎなければなりません。
まず、規格が求めていないことです。EN 301 549 は、ハイコントラストモード、文字サイズの切り替え、一時停止の切り替えなど、どんな設定もWebサイトに用意することを求めていません。サイトのデザイン自体は、設定があってもなくても、EN 301 549 の9章を通じてWCAG 2.1のレベルAとAAを満たす必要があります。つまり、標準の見た目のままで十分なコントラストがあり、拡大しても崩れないことが前提です。設定はその上に加えるものです。
規格が求めるのは5.2です。製品に説明されたアクセシビリティ機能がある場合、必要に応じた機能を「その必要を満たさない方法に頼らずに」有効にできることです。確かめ方は、どの設定でも同じです。その設定が何を与えるのかを考え、切り替えがそれを必要としていないかを確かめます。字幕の切り替えは聴力を、スクリーンリーダー向けのモードは視力を、キーボード操作のモードはマウスを必要としてはいけません。図書館の二つの切り替えは、二通りの形でこの確かめに失敗します。ハイコントラストモードは標準の見た目を読めない人のためのものなのに、その切り替えは標準の見た目でいちばん薄い文字で描かれています。一時停止は動きに耐えられない人のためのものなのに、その切り替えには動きを通り過ぎてからしか届きません。
この条項は、説明されたアクセシビリティ機能を持つWebコンテンツに適用されます。サイトがアクセシビリティ方針やヘルプのページで設定を説明していれば、それに当たります。EN 301 549 の12.1.1が、その情報を載せる場所として挙げているページです。WCAGにはない要件なので、WCAGの達成基準をすべて満たしたサイトでも、この点では不合格になり得ます。たとえばフッターの切り替えは、WCAG 2.2.2が求める、バナーを一時停止する方法そのものです。2.2.2の解説書は、その方法をどこに置くべきかについて何も述べていません。
この問題は、設定が想定するすべての人に及びます。どの人にも、その人のための設定があるため、同じ誤りは誰でも締め出し得ます。図書館の二つの切り替えで締め出されるのは、ロービジョンの人と、注意の困難を持つ人の多くを含む、動きのせいで読めなくなる人です。ほかの設定を同じように置くとほかの人がどう締め出されるかは、注記のとおりです。前庭障害のある人は、動きでめまいや吐き気を起こすことがあります。その人にとって、動きの後ろにある切り替えに届くということは、避けたいものを見続けることを意味します。
10グループ中10グループに影響
- 全盲 (影響あり)
- 弱視 (影響あり)
- 色覚 (影響あり)
- ろう (影響あり)
- 難聴 (影響あり)
- 発話 (影響あり)
- 手の操作 (影響あり)
- 届く範囲・力 (影響あり)
- 認知 (影響あり)
- 光過敏 (影響あり)
- 視覚が限られる 強いコントラストや大きな文字が必要な人には、ヘッダーの小さなグレーの行はにじんだ線にしか見えません。画面拡大ソフトでページの左上だけを見ているときは目に入らず、助けになるモードが有効にされないままです。
- 言語・認知・学習の能力が限られる 文章の横で何かが動いていると読めない人は、動きを止める切り替えに届くまでに、切り替わり続けるバナーとページ全体を通り過ぎなければなりません。長く詰まった段落の中でしか案内されないやさしい版も、同じように見落とされます。
- 視覚を使わない 一部のオーバーレイの起動ボタンのように、名前のないアイコンの奥にあるスクリーンリーダー向けのモードは、アイコンが見える人にしか見つけられません。
- 手の操作が限られる ホバーでしか開かないメニューの中のキーボード操作モードや、長いTabの順序の最後にある切り替えには、そのモードを必要とするキーボード利用者が届きません。
- 届く範囲・力が限られる ボタンを大きくする設定が小さなアイコンで有効にするものだと、ふるえのある人には、そのアイコンだけが押せない操作要素になります。
- 聴覚を使わない 字幕を表示する方法が動画の冒頭の語りでしか説明されていないと、ろうの人は必要な一つの説明を聞き取れません。
- 聴覚が限られる 話し声を聞き取りやすくする設定が、動画の冒頭の音声でしか案内されていないと、話し声を聞き分けにくい人は見落とします。
- 色を知覚しない 色覚に合わせた配色を、色でしか見分けられない色の丸の並びから選ぶ形だと、その色を見分けられない人は選べません。
- 光過敏性発作 点滅する効果を止める切り替えが点滅するバナーの後ろにあると、届くには先に点滅を見なければなりません。
- 発話を使わない 一部の電話の自動音声のように、声で頼んだ人にだけ文字のチャットを案内する形だと、話すことができない人は届きません。
チェックツールは、設定の切り替えをページ自体の基準で測り、その設定が何のためのものかでは測りません。ハイコントラストの切り替えのグレーは白に対して4.54:1で、WCAG 1.4.3が文字に求める4.5:1を満たすため、axe もほかのコントラストのチェックも、AAの基準では合格にします。一時停止の切り替えは名前があり、読みやすく、Tabで届くため、これも合格です。これらのボタンが設定への入り口であることは、どのチェックにも分かりません。この診断では、「ハイコントラスト」「アニメーションを停止」「文字サイズ」「High contrast」など、アクセシビリティの設定の名前を持つ操作要素がページにあると、その必要を念頭に人が確認できるよう、確認の手がかりとして報告します。その必要を持つ人が実際に届くかどうかは判断できません。
AIツールに「ハイコントラストの切り替えを追加して」「アニメーションを止める方法を追加して」と頼むと、多くのサイトと同じように、周りのリンクと同じ見た目でヘッダーに置いたり、ほかのリンクと一緒にフッターに置いたりすることがあります。その切り替えが誰のためのものかを尋ねる手段がありません。
試してみる
設定をオンにするまで、このサイトが使いにくいとします。その設定を有効にする切り替えを探してください。
- 問題1:強いコントラストがないと読めないとします。「ロービジョンの見え方」をオンにするとぼやけた見え方を大まかに再現できます。「ハイコントラスト」を探してください。
- 問題2:何かが動いていると読めないとします。目で探すか、Tabキーで、イベントのバナーを止めてください。
- 修正を適用します。どちらの切り替えも先頭にあります。「修正2」では、サイトの下にある端末の設定も試してください。
問題あり 修正できますか?
修正方法
アクセシビリティの設定は、それを必要とする人がその機能なしで届く場所に置き、端末に同じ設定があればそこからも有効にします。
- 1それぞれの設定が何のためのものかを考え、切り替えがそれを必要としないようにする。
- 2利用者が最初に見る場所、つまりそれが変える内容より前、ヘッダーの先頭とTabの順序の初めの方に置く。
- 3言葉で名前を付け、オンかどうかを示し、端末に対応する設定があればそれに従う。
設定で置き換えるはずの見た目で描いた切り替え
<header> <a href="/" class="logo">Riverside Library</a> <nav>…</nav> <div class="tools"> <button type="button" id="contrast" aria-pressed="false">ハイコントラスト</button> </div></header>設定を先頭に、オンにする前から使える形で置く
<header> <div class="tools"> <button type="button" id="contrast" aria-pressed="false">ハイコントラスト</button> <button type="button" id="motion" aria-pressed="false">アニメーションを停止</button> </div> <a href="/" class="logo">Riverside Library</a> <nav>…</nav></header><main> <div class="events">…</div> …</main>ハイコントラストの切り替えはヘッダーでいちばん薄く小さい文字で、しかも最後にあります。見つけるには、このモードが補うはずの視力が必要です。
どちらの切り替えも、設定を必要とする人が、設定をオンにする前から使えるようになります。二つとも、ヘッダーの先頭、つまり画面拡大ソフトが最初に映す場所であり、Tabで最初に届く場所に、バナーより前に置きます。動きを見続ける前に止められます。見た目は、ハイコントラストモードが文字を描くのと同じです。18ピクセルの太字で、黒い枠線の中に白地に黒の21:1、モードをオンにすると黒地に黄色です。
一つ目を使ってください。ハイコントラストモードと同じコントラストと大きさで、ヘッダーの先頭、バナーより前に置いた切り替えは、端末の設定に関係なく、サイトを訪れるすべての人に届きます。二つ目は一つ目に加える価値があります。必要なことをすでに端末に伝えている人が、サイトごとに伝え直さずに済むからです。ただし、それだけでは設定をしていない人が取り残されるため、十分ではありません。
サイトが用意するどの設定にも、同じ原則が当てはまります。有効にする方法が、その設定で補うものに頼ってはいけません。ほかのよくある例を挙げます。
- 小さな文字で書いた文字サイズの切り替えは、図書館のハイコントラストの切り替えと同じ誤りです。少なくとも本文の大きさで描き、ブラウザーの文字サイズの設定も効くように、サイトの文字を rem で指定します。ボックスは、拡大した文字が切れる、高さ固定のボックスのとおり、文字とともに広がるようにします。
- 「字幕」や「手話」の選択肢を動画の語りでしか説明しないと、それを必要とする人に届きません。見えるラベルを付けたボタンとして、プレーヤーのバーに置きます。
- やさしい版や「読み上げ」のボタンを長い段落の中でしか案内しないと、必要とする読み手が見落とします。短く平易な名前とアイコンを付けて、ページの先頭に置きます。
操作要素は、色のほかは設定がオンでもオフでも同じ見た目にして、設定をオフにしたいときにもう一度見つけられるようにします。状態は aria-pressed で示し、名前は変えません。「ハイコントラスト」が押されているか、押されていないかで示し、「標準のコントラスト」のように変わる名前にはしません。選んだ内容は Cookie やローカルストレージに保存し、次のページでも保たれるようにします。
バナーは、切り替えを使わなくても、端末で動きを減らすよう求めている人には止まって表示されるべきです。動きを減らす設定を無視するアニメーションで説明しています。また、一つのバナーしか止めない一時停止では、ページのほかの場所の動きには役に立ちません。切り替えで、サイトが動かすすべてのアニメーションを止めるようにします。
Windows のコントラスト テーマは仕組みが違います。サイト独自のモードがどうであっても、強制配色で、サイトの色を利用者自身の色に置き換えます。サイトはそれに備える必要があり、その方法はハイコントラストモードで消えるフォーカス・アイコン・選択状態で説明しています。サイト独自のハイコントラストモードはそれ以外の人のためのもので、だからこそ、その切り替えは見つけやすくなければなりません。
独自の設定パネルを持つ、画面に浮かぶアクセシビリティのオーバーレイは、この問題を解決しません。むしろ同じ誤りを繰り返すことがあります。起動ボタンは小さなアイコンで、パネルの切り替えも小さな文字です。最も大切なコントラスト、文字サイズ、動きの設定は、試験できるよう、サイト自体のデザインに組み込むほうが確実です。
AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。
修正の確認
マウスを使わない4つの確認
確認方法: ズーム、コントラストの測定、動きを減らす設定、キーボード
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。ヘッダー、設定、アニメーションのデザインを変えたときに、再度確認します。
制限
このガイドは、サイト独自のアクセシビリティ設定と、それを有効にする方法を扱います。サイトの標準の見た目のコントラスト(WCAG 1.4.3。ブランドカラーや写真の上でコントラストが足りない文字で扱います)、WCAG 2.2.2が求める一時停止(一時停止できない、流れる文字、カルーセル、アニメーションで扱います)、ハイコントラストモード自体でフォーカス、アイコン、選択状態をどう見えるように保つかは扱いません。EN 301 549 の5.2は製品が説明している機能だけに適用されるため、設定のないサイトはこの点で不合格になりません。ただし、一部の読み手が頼っている設定をやめる理由にはなりません。それぞれの設定が想定する人に、その人自身の端末と設定で試してもらってください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
参考資料
- etsi.org: en_301549v030201p.pdf(新しいタブで開きます)
- WCAG Understanding: contrast-enhanced(新しいタブで開きます)
- WCAG Understanding: pause-stop-hide(新しいタブで開きます)
- developer.mozilla.org: prefers-contrast(新しいタブで開きます)
- developer.mozilla.org: prefers-reduced-motion(新しいタブで開きます)
- developer.mozilla.org: aria-pressed(新しいタブで開きます)
- w3.org: user-stories(新しいタブで開きます)
コードを更新しても、使いやすさを保つために
ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。