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
TailwindCSSでUIライブラリを作る際のハマりどころ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
did0es
May 10, 2024
Technology
790
0
Share
TailwindCSSでUIライブラリを作る際のハマりどころ
Meguro.css #10 で発表した資料です
did0es
May 10, 2024
More Decks by did0es
See All by did0es
うわっ...私のSwagger、古すぎ...?grpc-gateway向けのSwaggerと向き合う
shuta13
0
130
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
340
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
8
840
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.5k
5分でわかるPreactのVDOMで作るWebエディタ
shuta13
0
250
codemodとうまく付き合うには
shuta13
0
2.9k
プライベートクラウドのコンソール画面をNext.jsのApp Routerでフルリプレイスした話
shuta13
4
990
CyberAgent Developer Conference(CADC) 2023 LP開発の舞台裏
shuta13
0
300
Turborepo Code Generationによる、サイバーエージェントグループのフロントエンド開発の効率化
shuta13
5
2.8k
Other Decks in Technology
See All in Technology
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
79k
No Types Needed, Just Callable Method Check
dak2
1
1.9k
260422_Sansan_Tech_Talk__関西_vol.3_データ活用のリアル__矢田__.pdf
sansantech
PRO
0
120
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
290
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
37k
Expiration of Secure Boot Certificates for vSphere Virtual Machines
mirie_sd
0
110
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
150
[OAWTT26][THR1028] Oracle AI Database 26ai へのアップグレード:ベストプラクティスと最新情報
oracle4engineer
PRO
1
110
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
120
AI: Making Admin and Users, Lives Better
kbmsg
0
110
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
170
Practical TypeProf: Lessons from Analyzing Optcarrot
mame
0
1.1k
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
240
Skip the Path - Find Your Career Trail
mkilby
1
110
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
220
Discover your Explorer Soul
emna__ayadi
2
1.1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1k
Designing Experiences People Love
moore
143
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Become a Pro
speakerdeck
PRO
31
5.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
250
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Transcript
TailwindCSSで UIライブラリを作る際の ハマりどころ 2024/05/10 did0es
自己紹介 did0es(Hirai Shuta) SWE @ CyberAgent, Inc. Main organizer @
Meguro.es X: https://x.com/did0es GH: https://github.com/shuta13
目次 1. 背景 2. ハマりどころ 3. まとめ
背景
Webフロントエンドエンジニアが少ない (様々な登壇で言及している話なので耳タコかもですが) 自身の所属している組織はインフラチームです ・フロントエンドエンジニアが2人しかいない ・主にインフラの管理画面を開発する ・AWSやGCPのコンソールを思い浮かべてください ・2人で進捗を最大化する必要がある
Web SDK化計画 開発に必要なものを全てSDKにして配ってしまおう ・必要なSDKをインストールして組み合わせるだけでWebサービスができる ・DIY原則 SDK化しているもの ・UI ・ロジック(React Hooksや共通処理) ・OAS
・Dependencies などなど...
Web SDK化計画 開発に必要なものを全てSDKにして配ってしまおう ・必要なSDKをインストールして組み合わせるだけでWebサービスができる ・DIY原則 SDK化しているもの ・UI ・ロジック(React Hooksや共通処理) ・OAS
・Dependencies などなど...
UIの共通化 従来は外部のUIライブラリを使用していた ・MUI v5とNextUI v1を使っていた ・アプデがつらすぎる ・特に NextUI v1 は
alpha 版だった ・UI ライブラリで alpha 版... 上記のライブラリと互換性のあるUIライブラリを作る ・全てのプロジェクトで React を使っているので React 製 ・CSS をゴリゴリ書いても良かったが... ・プロダクト全体で使う TailwindCSS を流用
UIの紹介
ハマりどころ
Preflightの衝突 TailwindCSSにはPreflightという初期化・正規化機能がある ・modern-normalize を包含したもの TailwindCSSをコンパイルすると1つのCSSファイルになる ・これを使う側で読み込むとStyleが反映される クライアントサイドでこのCSSファイルと TailwindCSS を読み込むと衝突 ・初期化・正規化が2回走り、CSSファイルの内容を上書きする
・詳細度バトルに敗北すると上書きされる
Preflightの衝突の解決方法 使う側で Preflight を無効にする https://tailwindcss.com/docs/preflight#disabling-preflight
classNameの衝突 こちらも TailwindCSS と UI ライブラリを併せて使うときに発生 ・TailwindCSS を入れた側で theme を
extend できなくなる ・正確には UI ライブラリ側にある className しか使えなくなる UI ライブラリを使う側では TailwindCSS のドキュメントから 逸脱したことをやりたくない ・ユーザーはあまりフロントエンドに詳しくない場合もある ・独自 className しか使えない状況は避けたい
classNameの衝突の解決方法 UIライブラリ側で prefix を片っ端からつけていく ・手動でやるとぶっ倒れるかもしれないので自動化 ・codemodを書いた(CSSの話から逸れるので省略)
まとめ
TailwindCSSを使う前に 以下を確認しましょう ・本当に TailwindCSS が必要ですか? ・CSS 構文のブラウザサポートを見てみましょう ・className prefix は設定しましたか?
・Preflight が重複していませんか? ・重複しても大丈夫なCSSを書く or 自前の normalize にする そもそも... ・本当にUIライブラリを自作する必要がありますか? ・TailwindCSS ベースが良いなら daisyUI などを検討しましょう ・すいません...
ご清聴 ありがとうございました! ご質問などあれば懇親会でお願いします