まっしろけっけ

めもてきなやーつ

色を扱うColorCodeというgemを作った

経緯

デザイナーさんに「こんなことやりたいんですけど・・?できます・・?」と聞かれ
ちょっと調べたら出来そうだったので「出来そうですよ!」と返事したらやることになった。

実装方法を考えてたら今回作成したようなロジックを思いつき
gemとして作ればいいんじゃね?ってなった。

設計も終わり作り始める直前に、もしかしたら同じようなgemあるのでは?と思いつき調べたら
colorというgemがあった。軽く見ただけだが同じような設計になっている気がした。
がしかしメンテされてない + 自分と他人のRubyのコードを比較する機会が
今の仕事てきな環境だと少ないので作ってからcolorの方のソースも読んで比較すれば
勉強になるかなと思って作ることにした。

※デザイナーさんがやりたいことはこのColorCodeと
これから作るもう一つのgemを使って行う予定

概要

color_code | RubyGems.org | your community gem host

github.com

RGBとHSL色空間を相互に変換出来るClassです。

install

gemなのでgemコマンドでinstallできます。
Gemfileに追記でもおk

$ gem install color_code
使い方

RGB class

rgb = ColorCode::RGB.new(r: 255, g: 0, b: 0)
rgb.to_s # => '#ff0000'
rbg.to_hash # => { r: 255, g: 0, b: 0 }
rgb.to_hsl # => #<ColorCode::HSL>

HSL class

hsl = ColorCode::HSL.new(h: 0, s: 100, l: 50)
hsl.to_s # => '#ff0000'
hsl.to_hash # => { h: 0, s: 100, l: 50 }
hsl.to_rgb # => #<ColorCode::RGB>

その他に関して後々examplesとかを追加しようと思います。
コード量が少ないのでコードを読んだ方が早い気もしますが・・・

まとめ

RGBはもちろん知っていましたが
HSL色空間に関して知識が乏しかったのでこの機会に学べたのはよかった。
たぶんcolorのgemを使っていたらそこまでHSL色空間を理解せずに使ってしまった気がする。
gemのcolorがどのように実装しているのかはこれから見るので実装の違いを見つけて
楽しもうと思いますw