Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
React / TypeScriptでのカラーピッカーの実装戦略
Search
t-jimbo
November 23, 2025
Programming
0
77
React / TypeScriptでのカラーピッカーの実装戦略
TSKaigi Hokuriku 2025でのLT資料です。
https://hokuriku.tskaigi.org/talks/40
t-jimbo
November 23, 2025
Tweet
Share
More Decks by t-jimbo
See All by t-jimbo
高い開発生産性を実現するために取り組んだMagicPodの利活用
jimbo
0
3k
Other Decks in Programming
See All in Programming
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
490
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.9k
Codex の「自走力」を高める
yorifuji
0
1.1k
RAGでハマりがちな"Excelの罠"を、データの構造化で突破する
harumiweb
9
2.6k
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
510
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
260
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
390
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
540
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
440
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
250
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
340
Featured
See All Featured
Crafting Experiences
bethany
1
81
Accessibility Awareness
sabderemane
0
74
New Earth Scene 8
popppiees
1
1.7k
The agentic SEO stack - context over prompts
schlessera
0
680
AI: The stuff that nobody shows you
jnunemaker
PRO
3
360
A Soul's Torment
seathinner
5
2.4k
Six Lessons from altMBA
skipperchong
29
4.2k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
270
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
100
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
520
Transcript
© PLAID, Inc. React / TypeScriptでの カラーピッカーの実装戦略 t-jimbo © PLAID,
Inc. 2025.11.23 | TSKaigi Hokuriku 2025
© PLAID, Inc. ⾃⼰紹介 2 写真 t-jimbo Takuma Jimbo /
神保 拓眞 Software Engineer Nubrick / Lab Dept. PLAID, Inc.
© PLAID, Inc. 3 カラーピッカーの話 Figma
© PLAID, Inc. <input type="color"> 4 MDN Web Docs
© PLAID, Inc. <input type="color"> 5 Pros ‧実装コスト ‧アクセシビリティ ‧各Platform最適化
Cons ‧デザインの統⼀‧カスタマイズ
© PLAID, Inc. ライブラリ 6 uiwjs/react-color React⽤で唯⼀使えそうだったやつ 軽量でカスタマイズしやすい まだ名が売れていない
© PLAID, Inc. ライブラリ 7 いろいろある
© PLAID, Inc. ライブラリ 8 が、どれも決定的とは⾔えない現状 • カスタマイズ性 • Star数
/ DL数 • メンテナンスの継続性 • バンドルサイズ • 実装コスト とりあえず今回はuiw/react-colorを選んだ
© PLAID, Inc. 9 カラーコードいろいろ
© PLAID, Inc. カラーコード 10 いろいろある • HEX (e.g. #FF4769) •
RGB • HSV / HSB • HSL • XYZ / CIE 1931 • OKLAB • OKLCH • etc.
© PLAID, Inc. HSV 11 よく⾒るSlider + 2DピッカーのUI • Hue(⾊相)
• Saturation(彩度) • Value / Brightness(明度) ※CSSには hsv() といったメソッドは無い 明度 暗 明 彩度 ⾊相 低 ⾼ Figma
© PLAID, Inc. HSL 12 HSVと似てるけどちょっと違う • Hue(⾊相) • Saturation(彩度)
• Lightness(輝度) これはCSS対応 hsl(0, 0, 88) 輝度 暗 明 彩度 ⾊相 低 ⾼ Figma
© PLAID, Inc. モダンなやつ 13 OKLCH • Lightness(明度) ◦ RGBの平均値ではなく、
⼈間の知覚する明るさ • Chroma(明るさを加味した彩度) • Hue(⾊相) ここ数年でCSS対応 oklch(0.7, 0.1, 272) oklch.com
© PLAID, Inc. 14 どう実装する?
© PLAID, Inc. どう実装する? 15 決め⼿に⽋けるライブラリ事情 いろんなカラーコード形式 • 汎⽤的で強いHEX, RGB
• 視覚的に扱いやすいHSV, OKLCH, ... 機能‧UIも変わりうる • テーマカラーパレット • スポイトツール • グラデーション
© PLAID, Inc. どう実装する? 16 決め⼿に⽋けるライブラリ事情 いろんなカラーコード形式 • 汎⽤的で強いHEX, RGB
• 視覚的に扱いやすいHSV, OKLCH, ... 機能‧UIも変わりうる • テーマカラーパレット • スポイトツール • グラデーション
© PLAID, Inc. どう実装する? 17 UI、機能は⽐較的変更しやすい ライブラリも乗り換えられる アプリケーションのインターフェースを変えるのは難しい
© PLAID, Inc. どう実装する? 18 UI、機能は⽐較的変更しやすい ライブラリも乗り換えられる アプリケーションのインターフェースを変えるのは難しい 境界をちゃんとつくる
© PLAID, Inc. どう実装する? 19 DB App ColorPicker UI、機能は⽐較的変更しやすい ライブラリも乗り換えられる
アプリケーションのインターフェースを変えるのは難しい 境界をちゃんとつくる
© PLAID, Inc. UI、機能は⽐較的変更しやすい ライブラリも乗り換えられる アプリケーションのインターフェースを変えるのは難しい 境界をちゃんとつくる どう実装する? 20 DB
App ColorPicker SV picker Hue slider Alpha slider
© PLAID, Inc. アプリケーションで扱うカラーコードは? どう実装する? 21 DB App ColorPicker SV
picker Hue slider Alpha slider
© PLAID, Inc. どう実装する? 22 type Any Color = `#${string}`
| RgbaColor | HsvaColor | HslaColor | ...
© PLAID, Inc. どう実装する? 23 type Any Color = `#${string}`
| RgbaColor | HsvaColor | HslaColor | … つらい
© PLAID, Inc. どう実装する? 24 アプリケーションではRGBAが使いやすい • 光の三原⾊ • Webを含む多くの環境でサポート
• 計算処理がしやすい • sRGB以外の⾊空間への対応も⽐較的できる • HEXはstringのparseがちょっと⾯倒
© PLAID, Inc. どう実装する? 25 DB App ColorPicker RGBA SV
picker Hue slider Alpha slider アプリケーションではRGBA(またはHEX)が使いやすい
© PLAID, Inc. どう実装する? 26 DB App ColorPicker RGBA SV
picker Hue slider Alpha slider ColorPickerコンポーネントでは?
© PLAID, Inc. どう実装する? 27 RGB → HSVは⼀意に決まらない SV 2D
Pickerを実装するには、内部状態を HSVA で保持するのがよい react-colorful / ColorPicker.tsx
© PLAID, Inc. どう実装する? 28 DB App ColorPicker RGBA HSVA
SV picker Hue slider Alpha slider ColorPickerコンポーネント内部では、状態をHSVAで保持する
© PLAID, Inc. どう実装する? 29 ColorPicker HSVA
© PLAID, Inc. ColorPicker内部のUIや機能‧依存するライブラリが変わっても対応できる どう実装する? 30 DB App ColorPicker RGBA
HSVA HSL picker LCH picker LLM palette
© PLAID, Inc. まとめ 31 • カラーピッカーの実装⽅法は多様で最適解がない • 現状は2Dピッカーが主流だが、将来の拡張が考えられる •
型を決めて腐敗防⽌層を設けるのがよさそう