アクセシブル配色設計は「誰にとっても読める・分かる色設計」のこと
おしゃれな配色と、アクセシブルな配色は別物です。
アクセシブル配色設計は、
「見えにくい人・色の区別がつきにくい人・小さい画面で見る人」も含めて、
ちゃんと情報が伝わるように色を設計する考え方です。
ここでは、
コントラスト比の考え方
実務でよく使う CSS・Tailwind のパターン
「やりがちなNG」とその直し方
を、初心者向けにかみ砕いて話していきます。
コントラスト比の基本(ここを押さえないと始まらない)
コントラスト比って何?
文字色と背景色の「明るさの差」を数値化したものがコントラスト比です。
WCAG では、
通常のテキストは 4.5:1 以上
大きなテキスト(おおよそ 18px 以上・太字なら 14px 以上)は 3:1 以上
が推奨されています。
実務では「4.5:1 を目安にしておけば安全」と覚えておくと楽です。
実際のチェックは、Web のコントラストチェッカー(ツール)を使うのが前提ですが、
ここでは「どう CSS に落とし込むか」に集中します。
例1:ありがちな“薄すぎるグレー文字”を直す
NG 例(よくあるパターン)
<p class="text-gray-400 text-sm">
これ、実はかなり読みにくいグレーです。
</p>
HTML薄いグレーはおしゃれに見えますが、
背景が白だとコントラスト不足になりがちです。
改善例(Tailwind)
<p class="text-gray-700 text-sm">
コントラストを上げた読みやすいグレー。
</p>
<p class="text-gray-800 text-sm">
さらに安心したいならこのくらい。
</p>
HTML改善例(CSS)
.text-muted {
color: #4b5563; /* Tailwind の gray-700 相当 */
font-size: 0.875rem;
}
CSS<p class="text-muted">
読みやすさを優先したグレー。
</p>
HTML重要なのは「薄くしすぎない」こと。
特に本文テキストは、
gray-500 より薄い色は基本使わない、くらいのルールにしておくと安全です。
例2:ボタンの配色をアクセシブルにする
NG 例(背景と文字のコントラスト不足)
<button class="bg-yellow-300 text-white px-4 py-2 rounded">
文字が背景に埋もれがち
</button>
HTML黄色背景に白文字は、
見た目は柔らかいけれどコントラストが足りないことが多いです。
改善例(Tailwind)
<button class="bg-yellow-400 text-slate-900 px-4 py-2 rounded font-medium">
コントラストを確保したボタン
</button>
HTML背景が明るい色のときは、
文字色を「濃いグレー〜黒」に寄せるとコントラストが取りやすくなります。
CSS 版
.btn-primary {
background: #2563eb;
color: #ffffff;
padding: 0.6rem 1.4rem;
border-radius: 999px;
font-weight: 600;
}
CSS<button class="btn-primary">
アクセシブルな青ボタン
</button>
HTML青 (#2563eb) と白の組み合わせは、
コントラスト的にも安定して使いやすい定番です。
例3:リンクの「色だけに頼らない」設計
NG 例(色だけでリンクを区別している)
<p class="text-sm">
詳しくは <a href="#" class="text-blue-500">こちら</a> をご覧ください。
</p>
HTML色覚特性によっては、
「青っぽい文字」がリンクだと認識しづらいことがあります。
改善例(下線を足す・ホバーで変化をつける)
<p class="text-sm text-gray-800">
詳しくは
<a href="#"
class="text-blue-600 underline underline-offset-2 hover:text-blue-700">
こちら
</a>
をご覧ください。
</p>
HTMLCSS 版なら
.link {
color: #2563eb;
text-decoration: underline;
text-underline-offset: 0.15em;
}
.link:hover {
color: #1d4ed8;
}
CSS<a href="#" class="link">こちら</a>
HTML「色+形(下線)」でリンクだと分かるようにするのがポイントです。
例4:背景色とテキスト色の組み合わせテンプレート
ダーク背景 × 明るい文字(Tailwind)
<section class="bg-slate-900 text-slate-50 px-6 py-10">
<h2 class="text-2xl font-semibold mb-3">ダークセクション</h2>
<p class="text-slate-200 text-sm">
背景が暗いときは、文字はほぼ白に近い色を使うと安心です。
</p>
</section>
HTMLライト背景 × 濃い文字(Tailwind)
<section class="bg-white text-slate-900 px-6 py-10">
<h2 class="text-2xl font-semibold mb-3">ライトセクション</h2>
<p class="text-slate-700 text-sm">
背景が白のときは、本文は gray-700〜800 あたりが読みやすいです。
</p>
</section>
HTMLCSS 版なら
.section-dark {
background: #020617;
color: #f9fafb;
}
.section-light {
background: #ffffff;
color: #0f172a;
}
CSS<section class="section-dark">…</section>
<section class="section-light">…</section>
HTML「背景が暗いなら文字はかなり明るく」「背景が明るいなら文字はかなり暗く」
このシンプルな原則を崩さないだけでも、かなりアクセシブルになります。
例5:ステータスカラー(成功・警告・エラー)のアクセシブル設計
よくある NG:薄い色+白文字
<div class="bg-red-300 text-white text-sm px-3 py-2 rounded">
エラーですが、コントラストが足りない例
</div>
HTML改善例(Tailwind)
<div class="bg-red-50 text-red-800 text-sm px-3 py-2 rounded border border-red-200">
エラーのメッセージ(読みやすい配色)
</div>
<div class="bg-emerald-50 text-emerald-800 text-sm px-3 py-2 rounded border border-emerald-200 mt-2">
成功メッセージ(読みやすい配色)
</div>
HTML背景はかなり薄く、文字はかなり濃く。
これが「アクセシブルなステータスカラー」の基本パターンです。
CSS 版なら
.alert-error {
background: #fef2f2;
color: #b91c1c;
border: 1px solid #fecaca;
padding: 0.5rem 0.75rem;
border-radius: 0.5rem;
font-size: 0.875rem;
}
CSS<div class="alert-error">
エラーのメッセージ
</div>
HTML例6:ダークモードでもコントラストを崩さない
Tailwind での例
<div class="bg-white text-slate-900 dark:bg-slate-950 dark:text-slate-50 px-6 py-8">
<h2 class="text-xl font-semibold mb-2">ダークモード対応</h2>
<p class="text-sm text-slate-700 dark:text-slate-200">
ライトでもダークでも、文字と背景のコントラストが十分になるように色を選びます。
</p>
</div>
HTMLダークモードでは、
背景をかなり暗く(ほぼ黒に近く)、
文字をかなり明るく(ほぼ白に近く)することで、
ライトモードと同じくらいの読みやすさを維持できます。
アクセシブル配色設計の「考え方」のまとめ
色は“雰囲気”ではなく“情報”として設計する
このボタンは押せるのか
このテキストは重要なのか
このメッセージはエラーなのか
色は「意味」を伝えるために使うので、
見た目だけで選ぶと、
見えにくい人には情報が届かなくなります。
コントラストを「十分に」取ることを優先する
おしゃれさより、まず読めること。
その上で、
彩度を少し落とす
グレーを混ぜる
余白やタイポグラフィでデザイン性を足す
という順番で考えると、破綻しにくいです。
Tailwind を使うなら「安全な色レンジ」を決めておく
本文は text-gray-700〜800
背景は bg-white / bg-slate-900
ステータスは *-50 + *-800 の組み合わせ
こういう「自分なりの安全パレット」を決めておくと、
毎回コントラストを計算しなくても、
だいたいアクセシブルな配色になります。
そのまま使える「アクセシブルカード」テンプレート(Tailwind)
<div class="max-w-md mx-auto bg-white text-slate-900 dark:bg-slate-950 dark:text-slate-50
border border-slate-200 dark:border-slate-800
rounded-2xl p-6">
<h2 class="text-xl font-semibold mb-2">
アクセシブルなカード
</h2>
<p class="text-sm text-slate-700 dark:text-slate-200 mb-4">
背景と文字のコントラストを十分に取りつつ、グレーの階調で情報の優先度を表現しています。
</p>
<button class="px-4 py-2 rounded-full text-sm font-medium
bg-sky-600 text-white hover:bg-sky-500">
アクション
</button>
</div>
HTMLこの一枚の中に、
背景と文字のコントラスト
本文と補足のグレーの使い分け
ボタンのはっきりした配色
が全部入っています。
さいごに
アクセシブル配色設計は、
「制約」ではなく「デザインの土台」です。
ちゃんと読める・分かる配色を作った上で、
グラデーション・影・アニメーション・装飾を足していくと、
見た目も良くて、誰にとっても使いやすい UI になっていきます。

