🎨

配色に悩まない時代へ:カラースキーム自動生成ツールを作った

に公開

はじめに

「この青に合う色って何だろう...」

Webアプリを作っていると、必ずぶつかる壁がある。配色だ。

メインカラーは決まった。でも、アクセントカラーは?ボタンのホバー色は?エラー表示の色は?考え始めると、なかなか手が進まなくなる。

かといって、適当に選ぶと後で「なんか統一感がないな...」という残念な結果になりがち。

今回は、この問題を解決するために作ったカラースキーム生成ツールについて、設計思想から実装まで詳しく紹介する。


ツールはこちら → Color Scheme Generator

なぜカラースキームが重要なのか

配色が与える印象

色は、サイトやアプリの印象を大きく左右する。

同じレイアウト、同じ機能でも、配色が違えば全く異なる印象を与える。落ち着いた色なら信頼感、鮮やかな色なら活気、パステルカラーなら優しさ。

この「印象」をコントロールするのが、配色の役割だ。

調和の取れた配色とは

色彩理論には、「調和」という考え方がある。

色相環(カラーホイール)上での位置関係によって、相性の良い色の組み合わせが決まる。これを知っているかどうかで、配色の質が大きく変わってくる。

関係 角度 特徴
補色 180° 強いコントラスト
三色 120° バランスの良い多色
四色 90° 多彩で動きのある
類似色 30° 自然な調和

ツールの設計思想

入力はシンプルに

操作は徹底的にシンプルにした。

カラーピッカーで色を選ぶか、HEXコードを入力する。それだけ。設定項目を増やせば柔軟性は上がるが、その分「どう設定すればいいの?」という迷いも増える。

このツールは「配色に悩んでいる人」のためのものだ。悩みを増やしてどうする。

5つのスキームを同時に提示

生成するカラースキームは5種類。

  1. Monochromatic(単色配色)
  2. Complementary(補色配色)
  3. Triadic(三色配色)
  4. Tetradic(四色配色)
  5. Analogous(類似色配色)

なぜ5つなのか。

1つだけだと選択肢がなく、10個もあると選べなくなる。5つというのは、「比較検討できるけど、迷いすぎない」絶妙なラインだと考えた。

横にスクロールして並べて見られるようにしたのも、比較しやすさを意識した結果だ。

リアルタイム生成

ベースカラーを変えると、スキームが即座に更新される。

「この色だとどうなるかな?」を気軽に試せることで、探索的な使い方ができる。目的の色が決まっていなくても、触っているうちに「あ、これいいかも」が見つかる。

各スキームの詳細

Monochromatic(単色配色)

同じ色相で、明度と彩度だけを変化させたパレット。

ベースカラー
→ 明度 +20%
→ 明度 -15%
→ 明度 +30%、彩度 -20%
→ 明度 -25%、彩度 +10%

統一感が強く、フォーマルな印象を与えやすい。企業サイトやコーポレートカラーの展開に向いている。

失敗しにくい反面、単調になりがちという面もある。アクセントとして他のスキームの色を1色だけ加える、という使い方も効果的だ。

Complementary(補色配色)

色相環で正反対(180度)に位置する色同士の組み合わせ。

青とオレンジ、赤と緑のような関係だ。コントラストが強く、お互いを引き立て合う。

注意点として、両方を同じ面積で使うとうるさくなる。一方を主役、もう一方をアクセントにするのがコツ。

Triadic(三色配色)

色相環を三等分した位置にある色の組み合わせ。

赤・青・黄のような関係(正確には120度ずつ離れた色)。バランスが良く、活気のある印象になる。

ロゴデザインやイラストでよく使われる配色パターンだ。

Tetradic(四色配色)

色相環を四等分した位置にある4色の組み合わせ。

色数が多いため、ダッシュボードのグラフや複数カテゴリーの色分けに向いている。

ただし、4色を均等に使うとごちゃごちゃするので、1色をメイン、2色をサブ、1色をアクセントという配分がおすすめ。

Analogous(類似色配色)

色相環で隣り合う色(±30度)を使った配色。

自然界に多く見られる配色パターンで、穏やかで調和の取れた印象を与える。紅葉のグラデーション、海と空の色合いなど。

落ち着いた雰囲気を出したいときに最適だ。

実装のポイント

HSL色空間での計算

色相の回転には、HSL(Hue, Saturation, Lightness)色空間を使っている。

HEXやRGBでは色相を直接操作しにくいが、HSLなら色相(H)の値を変えるだけで済む。

// HEXからHSLへの変換
const hexToHsl = (hex: string) => {
  // RGB値を0-1の範囲に正規化
  const r = parseInt(hex.slice(1, 3), 16) / 255
  const g = parseInt(hex.slice(3, 5), 16) / 255
  const b = parseInt(hex.slice(5, 7), 16) / 255

  const max = Math.max(r, g, b)
  const min = Math.min(r, g, b)
  let h = 0, s = 0, l = (max + min) / 2

  if (max !== min) {
    const d = max - min
    s = l > 0.5 ? d / (2 - max - min) : d / (max + min)
    // 色相の計算...
  }

  return { h: h * 360, s: s * 100, l: l * 100 }
}

なぜ5色ずつなのか

各スキームで5色を生成している理由は、実用性のバランスだ。

3色だと物足りない場面が多く、7色以上だと情報過多になる。5色あれば、メイン・サブ・アクセント・背景・テキストと、基本的な用途をカバーできる。

明度バリエーションの追加

単に色相を回転させるだけでなく、各スキームには明度のバリエーションも含めている。

// Triadicの例
const triadicColors = [
  baseColor,
  hslToHex((hsl.h + 120) % 360, hsl.s, hsl.l),
  hslToHex((hsl.h + 240) % 360, hsl.s, hsl.l),
  hslToHex(hsl.h, hsl.s, Math.min(90, hsl.l + 20)),      // 明るめ
  hslToHex((hsl.h + 120) % 360, hsl.s, Math.max(10, hsl.l - 15)),  // 暗め
]

これにより、同じスキーム内でも濃淡を使い分けられる。

こんな使い方がおすすめ

デザインの方向性を探る

「なんとなくこの色がいいな」という直感からスタートして、どのスキームがしっくりくるか試す使い方。

5パターンを見比べることで、自分が求めている雰囲気が明確になることもある。

プレゼン資料の配色

スライド作成時に、一貫性のある配色を揃えたいとき。Monochromatic(単色)を使えば、統一感のある資料が簡単に作れる。

既存デザインのリファクタリング

「なんか色がまとまってないな」と感じるサイトを改善するとき。現在のメインカラーを入力して、理論に基づいた配色と比較してみる。

おわりに

配色は、センスの問題だと思われがちだ。

でも実際には、色彩理論という「ルール」がある。そのルールを知っていれば、誰でもそれなりに調和の取れた配色ができる。

このツールは、その理論を手軽に使えるようにしたものだ。

「この色に合うのは何色?」という問いに対して、理論に基づいた答えを瞬時に得られる。あとは、その中から自分の感覚に合うものを選べばいい。

配色で悩む時間を減らして、本当に考えるべきことに集中しよう。

ツールはこちら → Color Scheme Generator

Discussion