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
did0es
May 10, 2024
Technology
820
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
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
1
840
ブラウザの投機的読み込みと投機ルールAPIを理解し、Webサービスのパフォーマンスを最適化する
shuta13
3
370
うわっ...私のSwagger、古すぎ...?grpc-gateway向けのSwaggerと向き合う
shuta13
0
170
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
390
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
8
880
Reconciliationの世界
shuta13
0
26
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.5k
5分でわかるPreactのVDOMで作るWebエディタ
shuta13
0
280
codemodとうまく付き合うには
shuta13
0
3.1k
Other Decks in Technology
See All in Technology
サイバー捜査員研修(前半)
nomizone
1
2k
ガバメント AI 源内を地方自治体は活用できるのか可能性と課題、期待について
takeda_h
1
390
事業価値と Engineering 2026年度版
recruitengineers
PRO
45
23k
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
790
第3回しろおびセキュリティスポンサーセッション
log0417
0
160
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
290
社内の7割が使うデータ基盤を、 データチーム2人で回すためにやったこと
koh_yoshi
4
1.3k
FPGAが実現する遠方宇宙の高空間分解能天体撮影 -大型地上望遠鏡の視力を補正する「補償光学」とは?-
komei_mt
0
220
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
160
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
270
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
160
Model Studio CLI × Token Plan
maigo999
0
130
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
440
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
530
Into the Great Unknown - MozCon
thekraken
41
2.7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
The SEO Collaboration Effect
kristinabergwall1
1
520
Skip the Path - Find Your Career Trail
mkilby
1
180
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 などを検討しましょう ・すいません...
ご清聴 ありがとうございました! ご質問などあれば懇親会でお願いします