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
0
650
TailwindCSSでUIライブラリを作る際のハマりどころ
Meguro.css #10 で発表した資料です
did0es
May 10, 2024
Tweet
Share
More Decks by did0es
See All by did0es
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2.3k
5分でわかるPreactのVDOMで作るWebエディタ
shuta13
0
170
codemodとうまく付き合うには
shuta13
0
2.2k
プライベートクラウドのコンソール画面をNext.jsのApp Routerでフルリプレイスした話
shuta13
4
930
CyberAgent Developer Conference(CADC) 2023 LP開発の舞台裏
shuta13
0
240
Turborepo Code Generationによる、サイバーエージェントグループのフロントエンド開発の効率化
shuta13
4
2.6k
CADC 2023 LPにおけるライブ配信の裏側 | Momento Meetup #3
shuta13
0
150
Technologies for developing editors / Webエディタ開発を支える技術
shuta13
1
800
天下一 静的サイトホスティング 武道会 / World Static Site Hosting Tournament
shuta13
0
360
Other Decks in Technology
See All in Technology
ABEMAの本番環境負荷試験への挑戦
mk2taiga
5
1.3k
AWS CDK 入門ガイド これだけは知っておきたいヒント集
anank
5
750
AWS Well-Architected から考えるオブザーバビリティの勘所 / Considering the Essentials of Observability from AWS Well-Architected
sms_tech
1
100
公開初日に Gemini CLI を試した話や FFmpeg と組み合わせてみた話など / Gemini CLI 初学者勉強会(#AI道場)
you
PRO
0
1.3k
大量配信システムにおけるSLOの実践:「見えない」信頼性をSLOで可視化
plaidtech
PRO
0
390
SRE不在の開発チームが障害対応と 向き合った100日間 / 100 days dealing with issues without SREs
shin1988
2
2.1k
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
500
Copilot coding agentにベットしたいCTOが開発組織で取り組んだこと / GitHub Copilot coding agent in Team
tnir
0
200
Delegating the chores of authenticating users to Keycloak
ahus1
0
190
SREの次のキャリアの道しるべ 〜SREがマネジメントレイヤーに挑戦して、 気づいたこととTips〜
coconala_engineer
1
4.4k
伴走から自律へ: 形式知へと導くSREイネーブリングによる プロダクトチームの信頼性オーナーシップ向上 / SRE NEXT 2025
visional_engineering_and_design
3
460
Transformerを用いたアイテム間の 相互影響を考慮したレコメンドリスト生成
recruitengineers
PRO
2
440
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Visualization
eitanlees
146
16k
What's in a price? How to price your products and services
michaelherold
246
12k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Being A Developer After 40
akosma
90
590k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
108
19k
KATA
mclloyd
30
14k
Thoughts on Productivity
jonyablonski
69
4.7k
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 などを検討しましょう ・すいません...
ご清聴 ありがとうございました! ご質問などあれば懇親会でお願いします