Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TailwindCSSでUIライブラリを作る際のハマりどころ
Search
did0es
May 10, 2024
Technology
850
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TailwindCSSでUIライブラリを作る際のハマりどころ
Meguro.css #10 で発表した資料です
did0es
May 10, 2024
More Decks by did0es
See All by did0es
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
1
610
【前編】このAPIいつ使うん?あの機能なに?V8のドキュメント、全部読んでみた
shuta13
0
170
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
1
1.1k
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
420
うわっ...私のSwagger、古すぎ...?grpc-gateway向けのSwaggerと向き合う
shuta13
0
240
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
440
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
8
960
Reconciliationの世界
shuta13
0
38
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.5k
Other Decks in Technology
See All in Technology
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
160
Agent Loopを組み込んだ アンビエントなAI機能を実現する / Ambient AI fetures with Agent Loop
nekorush14
0
120
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
6
2.8k
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
320
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
160
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
270
アクセラレーターで実現するServiceNow活用の高速化 / ServiceNow World Forum 2026
visional_engineering_and_design
0
110
AIがGISを代替する日:〜すべてをAIが創る時代に、私たちがFOSS4Gに関わる意味〜
lehupa
0
170
新卒エンジニア、 介護士になる
ryu1013
1
660
"AWSはちょっと苦手"でも大丈夫。AWS Blocks で手軽に作る Flutter のバックエンド #FlutterKaigi
tacck
PRO
0
120
なぜ東京にいる私が、新潟の技術コミュニティを運営するのか by 八雲慎之助
yakumo
0
210
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
490
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Docker and Python
trallard
47
4.2k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Embracing the Ebb and Flow
colly
88
5.2k
Testing 201, or: Great Expectations
jmmastey
46
8.4k
GitHub's CSS Performance
jonrohan
1033
470k
Facilitating Awesome Meetings
lara
57
7.2k
The agentic SEO stack - context over prompts
schlessera
0
990
HDC tutorial
michielstock
2
990
Designing for Timeless Needs
cassininazir
1
540
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
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 などを検討しましょう ・すいません...
ご清聴 ありがとうございました! ご質問などあれば懇親会でお願いします