JavaScriptでランダムに色を生成したいと思いました。
乱数はMath.random()で生成できます。 これを使って、RGBの値を生成することはできますが、 安直に生成すると灰色っぽい色になってしまいます。
ここはやはり、明るさや彩度は固定して色相だけどランダムにしたいところでしょう。
JavaScriptで色を操作するライブラリを探しました。
http://stackoverflow.com/questions/8022885/rgb-to-hsv-color-in-javascript
を参照して、見つけたよさそうなライブラリ2つ。
- https://github.com/eligrey/color.js --- Star数76
- https://github.com/bgrins/TinyColor --- Star数89
TinyColorは現在もアクティブに開発されているようで、安心できます。 一方、color.jsは3年前のコミットが最後です。正確には、README.mdは更新されているので、放置されているわけではなく、コードが枯れているのだと思います。
今回は、color.jsを使いました。理由は、今回やりたことについては十分機能があり、コードもきれいで短いからです。
多機能を求める場合は、TinyColorを使うと思います。こちらは、node.jsでも使えるように書かれています。
ランダムに色を生成するには、次のようにしました。
function genRandomColor() {
var hue = Math.random();
var saturation = 1.0;
var lightness = 0.5;
return Color.hsl(hue, saturation, lightness).hexTriplet();
}
色操作のライブラリはもっと探せばいろいろあるかもしれません。また、機会があれば。
コメント