SassやLESSなどのCSSプリプロセッサで色を変数定義するときの命名規則を考えてみる

## はじめに

SassやLESSといったCSSプリプロセッサでは変数定義ができますが、色を変数定義できると汎用的に使えて便利ですよね。しかし、色名の命名をどうするかは悩ましいところがありました。

そこで、色名を変数定義する時の命名規則を考えてみました。

## 直面していた課題

### 同系色で微妙に明暗の違う色を区別するのが大変だった

例えば微妙に明るさの違う灰色をいくつも使う場合、```gray```に相対的な単語(```light```、```dark```、```deep```、```shallow```など)をつけていました。

しかし、それだとすぐに命名の引き出しが尽きてしまうという課題がありました。

### そもそも区別できる英語の色名を考えるのが大変だった

とはいえ、相対的な単語以外の名前をつけるにも、どんな名前にするかはとても悩ましいところがありました。
例えば```red```、```blue```といった基本色名は頭に浮かんできますが、朱色とか藍色といった色名は英語でどう表現するんだ！という難しさがありました。

## 命名規則

そこでこんな命名規則を考えてみました。

* 色名は```[基本色名]_[詳細色名]```で表す
* 基本色名はColor Wheelの6色（```red```, ```orange```, ```yellow```, ```green```, ```blue```, ```violet```）と白黒灰3色(```white```, ```black```, ```gray```) を合わせた9色を使う
* 詳細色名はHEXカラーコードを色名検索Webサービスで検索してヒットした色名を使う

ちなみにColor Wheelとはこんなやつです。原色の色相の変化を円状に表したものです。ほとんど誰もが知っている色で構成されていますね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/a4699ede-f68f-040b-1dc7-2821f7a13fe1.png)

参考:<a href="http://www.yorkblog.com/hot/2014/10/06/principles-of-light-and-color-illuminate-our-understanding-of-the-greenhouse-effect-and-global-warming/color-wheel/" target="_blank" rel="nofollow noopener">Global Hot Topic | color wheel</a>

色名検索Webサービスは、微妙に違う色も区別できる英語の色名を提供してくれるサービスを使います。僕がよく使っているのは<a href="http://www.htmlcsscolor.com/" target="_blank" rel="nofollow noopener">HTML CSS Color Picker</a>です。

## 命名例

上記の命名規則で、微妙に色味の違う青と灰色をいくつか定義してみました。

キャプチャは上記の<a href="http://www.htmlcsscolor.com/" target="_blank" rel="nofollow noopener">HTML CSS Color Picker</a>を使っています。

### ```$blue_lochmara = '#316a9e'```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/35d6b1ba-0b43-d0fb-7966-415d5a1e4b61.png)


### ```$blue_regal = '#1f4465'```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/9d0e1f15-9d99-ab8a-d1c3-7a78ed1f33a2.png)


### ```$blue_wedgewood = '#4c6984'```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/f5c348ce-ce22-0640-e8a6-70c773d1a89d.png)


### ```$gray_silver = '#bbbbbb'```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/2a21f7bd-04c1-4b9a-e55f-d540c97cc296.png)


### ```$gray_gainsboro = '#dddddd'```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/6fda2c31-bced-af24-679d-848a6ada779c.png)


### ```$gray_wisper = '#eeeeee' ```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/566e4646-4d28-554a-b024-9fbd45b6be81.png)


## 良かったところ

* 同系色で微妙に違う色も区別しつつ定義できるようになった
* 詳細色の色名だけだと何色かわかりづらかったが、基本色をプレフィックスでつけることでどんな色かイメージしやすくなった
* 色名検索でヒットした色名をそのまま使えば良くなり、色名で悩むことがなくなった

## 参考になりそうな色名検索Webサービス

しっくり来る色名が見つからないときは、少し色味や明暗を変えて再検索する方法もありますが、別の色名検索Webサービスを使ってみるのもいいかもしれません。
いくつか参考になりそうな色名検索サービスを載せておきます。

### <a href="http://www.htmlcsscolor.com/" target="_blank" rel="nofollow noopener">HTML CSS Color Picker</a>

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/150239bd-45dc-d1df-5e86-58173b83dd83.png)


ヘッダーのフォームにHEXカラーコードを入れて検索すると、色サンプルと色名を表示してくれます。対応色数は書いてありませんが、いい感じの色名を提示してくれるので、僕はこちらを主に使っています。

### <a href="https://codepen.io/meodai/full/mEvZRx" target="_blank" rel="nofollow noopener">CodePen - Find one of 17'000+ color names</a>

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/fe7b373c-6be7-5a51-731a-b7c467eee71d.png)

CodePen上でHEXカラーコードを入力するとリアルタイムで色サンプルと色名を表示してくれます。17,000色以上の色名に対応しているらしいです。

ちなみにコードは<a href="https://github.com/meodai/color-names" target="_blank" rel="nofollow noopener">GitHub</a>に公開されているようです。

### <a href="http://chir.ag/projects/name-that-color/#6195ED" target="_blank" rel="nofollow noopener">Name that Color</a>

![image.png](https://qiita-image-store.s3.amazonaws.com/0/222030/62e43262-4d86-4347-6bfb-3e624cdcba63.png)

こちらもHEXカラーコードをフォームに入力すると色サンプルと色名を表示してくれます。
またこちらは左部のColorWheelと明暗をドラッグしてリアルタイムに調節することも出来るようです。

## 終わりに

他の人がコードを読むことを想定して、どんな色名検索サービスを使っているかはReadMeとかコードのコメントとかに付記しておくと良いかもしれません。```lochmara```とか```gainsboro```とか、それだけだと何色かわからないですよね。。