クッキー同意のアクセシビリティ:同意バナーのWCAG 2.2準拠

キーボードユーザーが閉じられず、スクリーンリーダーがアナウンスできず、色覚障害のある訪問者が読めないクッキーバナーは、単に悪いUXというだけでなく、2つの面でコンプライアンス上の問題です。2025年6月に欧州アクセシビリティ法が施行されて以来、EUユーザーにサービスを提供する商業ウェブサイトの同意インターフェースはWCAG 2.1 Level AAを満たす必要があり、2026年にはWCAG 2.2が強く推奨されています。同意が「自由に、特定的に、情報に基づき、明確に」行われなければならないというGDPRの要件と組み合わせると、アクセシブルでないバナーは現在2重の法的リスクを負います。このガイドでは、2026年のWCAG準拠のクッキーバナーがどのようなものかを正確に説明します。

アクセシビリティと同意が今重なり合う理由

GDPRは、バナーを見てクリックできる人だけでなく、すべてのユーザーから同意を得られることを要求しています。欧州データ保護委員会は、データ主体がサイトに対応されていない障害のために同意インターフェースと有意義に対話できない場合、同意は有効に取得されていないと明確にしています。つまり、クッキーはそもそも読み込まれるべきではなかったということです。

アクセシビリティの面では、EU加盟国全体で国内法に取り込まれた欧州アクセシビリティ法(EAA)により、消費者サービスを提供する民間セクターのウェブサイトおよびアプリに対してWCAG 2.1 AAが最低基準となっています。ペナルティ制度は国によって異なりますが、通常は違反1件あたり5万ユーロから50万ユーロの範囲で、継続的な非準拠については市場撤退命令も追加されます。

クッキーバナーの主要WCAG要件

キーボード操作性

すべてのバナーコントロール(承認、拒否、設定の管理、閉じる)は、キーボードのみで到達・操作できなければなりません。ユーザーはTabキーで論理的な順序でボタンを移動し、EnterまたはSpaceで有効化できる必要があります。フォーカスは背景に対して最低3:1のコントラスト比で視覚的に確認できる必要があります。

モーダルバナーにおけるフォーカストラップ

バナーがページの他の部分との対話をブロックしている場合、ユーザーが選択するまでキーボードフォーカスはバナー内に閉じ込められなければなりません。ユーザーはTabキーでバナーから出て下層のページをスクロールできてはなりません。フォーカスが閉じ込められていてバナーが閉じるときは、フォーカスはバナーをトリガーした要素か適切なデフォルト位置に戻る必要があります。

スクリーンリーダーのアナウンス

バナーはアクセシブルな名前とロールを持つダイアログとしてアナウンスされなければなりません。`role="dialog"` または `role="alertdialog"` を使用し、`aria-labelledby` をバナーの見出しに向け、`aria-describedby` を説明文に向けます。

色のコントラスト

本文テキストは背景に対して4.5:1のコントラストを満たす必要があります。大きなテキスト(18pt以上または14ptの太字)は3:1が必要です。ボタンテキスト、アイコン、フォーカスインジケーターにはそれぞれのコントラスト最低値があります。白背景の薄いグレーの「拒否」ボタンは、監査で見られる頻繁なWCAG不合格例です。

色だけに依存しない手がかり

承認と拒否を区別するために色だけに頼らないでください。色覚障害のあるユーザーがボタンを区別できるよう、異なるラベル、アイコン、または形状を使用します。

ダークパターンとアクセシビリティ

WCAG 2.2はダークパターンを直接対象とする新しい基準を導入しています。同意にとって特に関連性があります:

RTLと国際化

アクセシビリティは右から左へ書く言語(アラビア語、ヘブライ語、ペルシャ語、ウルドゥー語)とスクリーンリーダーの発音にも及びます:

WCAG準拠のためのバナーテスト

単一のツールに頼らないでください。自動スキャンと実際の支援技術テストを組み合わせてください:

よく見られるアクセシビリティの問題

FlexyConsentがアクセシビリティをどのように実現するか

FlexyConsentはデフォルトでWCAG 2.2 AAを満たしています:

  • すべてのコントロールがキーボード操作可能で、3:1の視覚的なフォーカスインジケーターがあります。
  • `aria-labelledby` と `aria-describedby` を持つ適切な `role="dialog"`。
  • オプションのバナーに対してEscape-to-dismissのフォーカストラップ。
  • 拒否を含むすべてのテキスト要素に4.5:1以上のコントラスト。
  • アラビア語、ヘブライ語、ペルシャ語、ウルドゥー語ロケールの自動RTLフリップ。
  • 正確なスクリーンリーダー発音のために翻訳ごとに設定された `lang` 属性。
  • 400%でも使用可能なズーム対応レイアウト。
← ブログ すべて読む →