カラーコントラストチェッカー
アクセシビリティのためにWCAG 2.1コントラスト比をテストします。
使い方
- 前景(テキスト)の色と背景の色を選択します。
- コントラスト比が即座に更新されます。
- 通常テキストと大きなテキストのWCAG等級(AA/AAA)を確認します。
- 「入れ替え」をクリックして色を交換します。
よくある質問
WCAGとは?
WCAG(Web Content Accessibility Guidelines)は、ウェブコンテンツをアクセシブルにするための国際標準です。レベルAAが最も一般的に要求される基準です。レベルAAAが最高です。
「大きなテキスト」とは何ですか?
大きなテキストは、最低18 pt(24 px)または太字で14 pt(18.66 px)と定義されています。読みやすいため、コントラスト要件が低くなります。
どのコントラスト比を目指すべきですか?
本文テキストには、少なくとも4.5: 1(AA)を目指してください。最良のアクセシビリティのためには、7: 1(AAA)を目指します。見出しと大きなテキストには少なくとも3: 1が必要です。
WCAGが実際に測定するもの
ウェブアクセシビリティにおける「コントラスト」は「色の見た目の違い」ではなく、2色間の相対輝度の正確な比率だ。輝度とは、典型的な視力を持つ観察者に色がどの程度明るく見えるかを近似した知覚的尺度だ。比率は1:1(輝度が同一で互いに見えない2色)から21:1(純粋な黒 #000000 と純粋な白 #ffffff)まで及ぶ。WCAGの3つの規範的な達成基準がこの比率を使用する:
- 1.4.3 コントラスト(最低限)、レベルAA:通常テキストで4.5:1以上、大きなテキストで3:1以上。
- 1.4.6 コントラスト(強化)、レベルAAA:通常テキストで7:1以上、大きなテキストで4.5:1以上。
- 1.4.11 非テストコントラスト、レベルAA(WCAG 2.1で追加):UIコンポーネントと意味のあるグラフィックオブジェクトに対して隣接色との3:1以上。
4.5:1という下限は恣意的ではない。WCAGの導出式は通常視力向けの3:1 ANSIベースラインを、視力20/40(法的「ロービジョン」の定義に使われる閾値)のユーザー向けに1.5倍した値を使用する。4.5 = 3 × 1.5。レベルAAAの7:1閾値は同じ論理を視力20/80程度まで拡張する。ロゴ、ブランド名、付随的または装飾的なテキストは免除されるが、それ以外のすべてが対象となる。
計算式
WCAGテクニックG18のコントラスト計算式は3ステップある。入力は8ビットのsRGBチャンネル値(0〜255)で、各値をまず0〜1の範囲に変換する:
- sRGBを線形化する(ガンマ曲線を元に戻す)。各チャンネル値Vに対して:V ≤ 0.04045の場合、V_linear = V ÷ 12.92;それ以外の場合、V_linear = ((V + 0.055) ÷ 1.055)^2.4。(古いWCAG文書では0.03928を使用していたが、W3Cは正式なsRGB仕様に合わせて0.04045に正誤表を更新した。数値的な差は無視できる。)
- 相対輝度を計算する:L = 0.2126·R + 0.7152·G + 0.0722·B(線形化済み)。係数はCIE 1931標準観察者の明所視感度関数に由来する。人間の目は緑(約71%)に最も敏感で、次いで赤(約21%)、青(約7%)の順だ。これが白背景上の純粋な青テキストが、色として大きく異なるにもかかわらずコントラストに失敗する理由だ。
- 比率を計算する:(L1 + 0.05) ÷ (L2 + 0.05)(L1が明るい色、L2が暗い色)。0.05オフセットは典型的なディスプレイの周辺光フレアをモデル化し、一方の色が黒に近い場合に比率が発散するのを防ぐ。
白背景上の黒の計算例:白はL = 1.0、黒はL = 0なので、比率は(1 + 0.05) ÷ (0 + 0.05) = 21。これはsRGBで可能な最大コントラストだ。
「大きなテキスト」とは何か
WCAGは大きなテキストを18ポイント(通常のウェイト)以上または14ポイント太字以上と定義している。W3C規定の1pt = 1.333pxでCSSピクセルに換算すると:
- 18pt = 24px 通常
- 14pt太字 = 18.66px 太字
ほとんどのブラウザのデフォルト本文テキストは16px / 12ptであり、大きなテキストではない。よくある誤りはすべての見出しを大きなテキストとして扱うことで、18px通常ウェイトで設定された <h3> は依然として4.5:1の通常テキストルールに該当する。
有名なエッジケース:白背景上の#767676
最小主義を追求するデザイナーは本文テキストに中程度のグレーを選びがちだ。目には同一に見える2つの値がWCAGの境界線の両側に位置する:
| 前景色 | 背景色 | 比率 | AA 通常 |
|---|---|---|---|
| #000000 | #ffffff | 21.00 | 合格(最大) |
| #595959 | #ffffff | ~7.0 | 合格 + AAA |
| #767676 | #ffffff | 4.54 | 合格(ぎりぎり) |
| #777777 | #ffffff | 4.48 | 不合格 |
| #959595 | #ffffff | 3.00 | 不合格(大きなテキストのみ) |
| #ffff00 | #ffffff | 1.07 | 不合格 |
1文字の16進シフト(#767676 と #777777 の差)が、同じ見た目のグレーを合格から不合格に変える。WCAGは比率を切り上げることを明示的に禁じているからだ。WebAIMは #777777 をAA基準を満たさない「よく使われるグレーの色調」と名指ししている。このひとつの落とし穴が実際のサイトスキャンで自動監査の失敗の相当な割合を占めている。
計算式の限界
相対輝度の計算式は高速で確定的だが、文書化されたいくつかの知覚的な欠陥がある:
- 対称性。WCAG 2は明るい背景に暗いテキストを置く場合と、暗い背景に明るいテキストを置く場合で同じ比率を返す。経験的な読書研究によると、ダークテキストと同等の読みやすさを感じるために、ライトテキストはより多くのコントラストを必要とする。これは瞳孔拡張と暗い背景上の明るいグリフの「ハレーション」が一因だ。WCAG 2 AAに合格するダークモードUIでも洗い流されたように感じることがある。
- 空間的盲点。計算式はフォントウェイト、ストローク太さ、大きなテキストの閾値を超えたフォントサイズを無視する。ヘアライン18pxフォントと900ウェイト18pxフォントは同一に扱われる。
- ダークモードの過剰合格。APCAドキュメントによると、計算式は暗い色のコントラストを系統的に過大評価する。WCAG 2の計算式では合格する2つの暗いグレーが実際のモニターでは視覚的に区別できないことがある。
APCA(Accessible Perceptual Contrast Algorithm)はWCAG 3向けにプロトタイプされている候補の代替手法だ。おおよそ−108から+106の単一の符号付きLc値を返し、極性を認識し、フォントウェイト・サイズの参照表を含む。APCAは現在ベータの非商用リファレンスであり、法的適合ターゲットではない(本番サイトは引き続きWCAG 2.1 / 2.2 AAを対象にすべきだ)。しかし特にダークモードでより正確な読みやすさチェックを提供する。Chrome DevToolsのカラーピッカーにAPCAプレビューが組み込まれている。
なぜこれが法的に重要か
WCAG 2.2は2023年10月5日にW3C勧告となったが、コントラスト基準は2.1から変更なく引き継がれている。色のコントラストはデジタルアクセシビリティ訴訟で最も多く引用される問題のひとつで、複数の法域で事実上義務化されている:
- 米国、Section 508(2017年改訂)はWCAG 2.0 AAと整合しており、4.5:1は連邦調達に対して拘束力を持つ。ADA Title IIIの裁判所判決は一般向け商業サイトの事実上の標準としてWCAG AAを繰り返し引用している。司法省は2024年4月に州・地方政府のウェブコンテンツをWCAG 2.1 AAに適合させることを義務付けるTitle II規則を採択し、今後10年内に段階的な期限を設けた。
- 欧州連合、EN 301 549はWCAG 2.1 AAを組み込んでいる。欧州アクセシビリティ法(指令2019/882)の適合期限は2025年6月28日で、ウェブサイト、モバイルアプリ、電子商取引、銀行、電子書籍などが対象だ。サービスの小規模事業者は免除される。加盟国の罰則は異なる。
- 英国、2010年平等法の「合理的調整」義務は民間・公共部門に適用される。公共機関はEN 301 549 / WCAG 2.1 AAを組み込んだ2018年アクセシビリティ規制に拘束される。
- カナダ、AODA(オンタリオ州)と連邦カナダアクセシビリティ法はWCAG 2.0 AAを要求しており、AODAの段階的な期限はすでに過ぎている。
色のコントラストと色覚障害
よく混同されるが、WCAGの比率は輝度ベースであり、ほとんどの色覚障害者にも有用だ。輝度から導出された4.5:1比率は、色相の手がかりが失われても強い知覚的シグナルに対応する。そのためコントラスト基準は独立した基準1.4.1 色の使用と並置されており、情報を色だけで伝えることを禁じている。コントラストは赤・緑のチャートが二色覚者に読めるかは教えてくれず、各色が個別にチャートの背景とコントラストをとっているかだけを教える。チャートや状態変化を持つUIには色の上にパターン、ラベル、または図形を重ねる必要がある。
実践的なチェックリスト
- 白背景上の本文テキスト:AAAには
#595959以上の暗さを保つ;#767676はAA通常テキストに合格する最も明るいグレーだ。 - ブランドの青:多くは3〜4.5の範囲に入る。
#1976d2は典型的なMaterial Blueで白背景に対しておおよそ4.59:1、AA通常テキストにぎりぎり合格する。#42a5f5はおおよそ2.6:1で不合格だ。 - フォームの枠線:白背景上の
1px solid #cccの枠線は約2.13:1で、1.4.11に不合格だ。#767676以上の暗さを使用する。 - フォーカスインジケーターは背景に対して3:1に達する必要がある。デフォルトのブラウザアウトラインはリセットCSSで閾値を満たす代替なしに上書きされることが多い。
- プレースホルダーテキストは技術的には付随的だが、ユーザーは実際に読む。4.5:1が適用されるかのように扱う。
- ダークモードは目で信頼しない。WCAG 2の比率は暗い背景を系統的に過剰合格させる。Chrome DevToolsでAPCAを使って相互確認する。
よくある質問
純粋な黄色が白背景で不合格になる理由は?
黄色(#ffff00)は白背景に対して1.07:1で、コントラストはほぼゼロだ。輝度計算式は緑を71%、赤を21%で重み付けするため、黄色(R+G)の輝度は白に非常に近い。一方、黒背景上の黄色は19.56:1で既知の最も読みやすい組み合わせのひとつだ。道路標識や安全ヘルメットの警告に使われる理由でもある。
常にAAAを目標にすべきですか?
いいえ。WCAG自体が述べている:「コンテンツによっては、すべてのレベルAAAの達成基準を満たすことが不可能なため、サイト全体のポリシーとしてレベルAAA適合を要求することは推奨されない。」AAはほぼどこでも法的なターゲットだ;AAAは高度な情報読書(長文コンテンツ、一般公衆向け政府文書、アクセシビリティ優先の出版物)向けだ。
自動ツールはすべてのコントラストの失敗を検出できますか?
いいえ。axe-core、Lighthouseなどの監査ツールはフラットカラー上のテキストの失敗を確実にフラグするが、背景画像上のテキスト、CSSグラデーション、疑似要素の背景、またはCSSボーダーカラーはテストできない。これらは「未完了」とフラグされ、手動レビューが必要だ。このようなライブピッカーは画像から支配的な背景色をサンプリングし、出荷前にテキスト・背景ペアだけを確認するのに独自に有用だ。
このツールは透明度・アルファをサポートしていますか?
このページは不透明な16進ペアを検査する。テキストまたは背景にアルファが使われている場合、実際のコントラストはその背後にある色に依存する。合成された前景色を最初に計算し、結果として得られる不透明な色を確認する必要がある。
何かサーバーに送信されますか?
いいえ。輝度の計算式と比率はブラウザで計算される;色はデバイスから出ない。ページは読み込み後オフラインで動作する。