コントラスト比チェッカー(WCAG輝度)

前景色と背景色を入力すると、以下で現在のWCAG相対輝度とコントラスト比(AA/AAA)が計算されます。プレビュー下の右側のスウォッチは、現代のWCAG計算式が各色をどう『見る』かを示し、左側のスウォッチは1953年の放送技術者のルマ計算式が同じ色に対して示したであろう結果を表します — 新旧を直接比較できます。

インタラクティブシミュレーションを読み込んでいます...

なぜ緑が赤や青より重視されるのか — そしてなぜ法律は今も1953年の計算式を使うのか 🖖

輝度計算式の重み付け(現在は緑重視の0.2126、1953年当時は0.299/0.587/0.114)は恣意的なものではありません。これらはCIE 1931標準観測者に由来しており、人間の目の錐体反応と視感効率曲線が、赤や青よりも緑の光にはるかに敏感であることを明らかにしています。NTSCは1953年、まさにこの種の重み付き合計を必要としていました。新しいカラー放送が、すでに各家庭にある何百万台もの白黒テレビでも正しいグレースケール映像として映るようにするためです — 『ルマ』は知覚的な理想として考案されたのではなく、後方互換性のためのハックとして生まれたのです。この歴史は今日でも重要です。なぜなら、上でチェックしたWCAG 2のコントラスト比は法的な効力を持つ基準であり(ADAやEN 301549で引用されています)、それでも視覚科学者からは欠陥があると見なされているからです。暗い背景に明るい文字のコントラストを過小評価し、明るい背景に暗い文字のコントラストを過大評価することが知られており — このサイト自体がデフォルトでダークテーマを採用していることを考えると、まさに直結する問題です。WCAG 3の草案にある後継案APCAは、この非対称性を適切にモデル化していますが、それが正式に採用されるまでは、上記の計算式こそが実際に満たすことを求められる基準であり続けます。

コントラスト比が本当に測るもの 🖖

このツールが示す数値は相対輝度の比です:(L1 + 0.05) / (L2 + 0.05)。ここで L1 は明るい色、L2 は暗い色を表します。値は 1:1(同一で見分けのつかない色)から 21:1(純白の上の純黒)まで変化します。両方に足される 0.05 は丸めではなく、実際の画面が室内から反射する弱い環境光を表したもので、そのため『純黒』でさえ決してゼロにはなりません。WCAG AA を満たすには、本文で 4.5:1、大きな文字で 3:1 を目指しましょう。

法律に凍結された誤植 🖖

この式は各 sRGB チャンネルを区分的な曲線で線形化し、ある閾値で線形部分からガンマ指数へ切り替わります。WCAG 2 はその切り替えを 0.03928 に置いていますが、本来の sRGB 規格では 0.04045 です。WCAG の値は誤植で、数値が修正される前の初期の sRGB 草案から書き写されたものであり、以来、国際的に引用されるアクセシビリティ法規に固定されたままです。この誤差が結果を動かすのは 10⁻⁴ 未満なので、誰も文言を直そうとしていません。

全プロセスの詳細解説

  1. #e2e6f0のテキストと#1a1d27の背景のコントラスト比 5 ステップ

    #e2e6f0 のテキストと #1a1d27 の背景の間のコントラスト比を求めよ — これは本ページ自身の配色である。各チャンネルを単純平均すると 5.55 になる。WCAG では 13.46 となる。2倍半の違いがどこから生じるのかを突き止めよ。

    1. 定義は一見単純である。2つの輝度の比率であり、純粋な黒でゼロ除算が発生しないよう、それぞれに 0.05 の補正が加えられている。重み付けは均等ではなく、これが最初の驚きである — 緑には青の10倍もの輝度が割り当てられている。

    2. 2つ目の驚きは、チャンネル値をそのまま使用できないことである。画像ファイル内のバイト値はガンマ符号化されている。128 は光量が半分であることを意味するのではなく、およそ5分の1であることを意味する。区分定義の数式はこの符号化を元に戻すものであり、自作のコントラストチェックを作成する誰もが省略してしまうステップである。

    3. 両方の色をその数式に通してみる。明るい色は 0.79、暗い色は 0.0124 になる — バイト値としては約 7 倍しか離れていないのに、物理的な光量では 63 倍もの開きがある。

    4. そして 0.05 のオフセットにより、その 63 が 13.46 にまで圧縮され、これがパネルに表示される数値となる。このオフセットは飾りではない。黒を表示しているときでさえ画面が反射する光をモデル化しており、明かりのついた部屋ではダークテーマが無限のコントラストを達成できない理由がここにある。

    5. この重み付けは、デザイナーがよく抱く不満を説明している。純粋な緑と純粋な青はどちらも単一チャンネルの最大値であるが、緑は輝度の 0.7152 を占めるのに対し、青はわずか 0.0722 に過ぎない。

    解答

    ツールには 13.46 : 1 と表示され、AAの 4.5 や AAAの 7 を余裕でクリアしている。手計算で行う理由はガンマ補正のステップにある。これをスキップしてチャンネルを平均化した場合、このペアのスコアは 5.55 となる — これでも合格ラインではあるが、2.4 倍も誤っており、より値の近いペアでは、その誤差が合格と不合格を分けることになる。重み付けがもう半分の理由である。緑は同じチャンネル値の青より9.9倍明るいため、黒背景の青テキストはカラーピッカーでの見かけよりもはるかに見づらく、白背景の黄テキストはデザイナーの予想よりはるかに見やすい。 #0000ff と #000000 を比較して、その比率を読み取ってみよ。

参考文献 (2)

例題