shadcnui_コードは僕らの手の中
by
okupara
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
shadcn/ui コードは僕らの手の中 2023-11-17 NAGOYA React 勉強会@株式会社スタメン 名古屋本社
Slide 2
Slide 2 text
自己紹介 @okupara 株式会社Leaner Technologies デザインエンジニア
Slide 3
Slide 3 text
目次 shadcn/uiが 私の心を掴む理由 shadcn/uiの簡単な紹介 1 2
Slide 4
Slide 4 text
shadcn/uiの簡単な紹介
Slide 5
Slide 5 text
shadcn/uiとは・・・
Slide 6
Slide 6 text
shadcn/uiの導入 $npx shadcn-ui@latest add button 例えばButtonコンポーネントの場合、 下記のコマンドを打つことでプロジェクト内に実 装済みのButtonのtsxがコピーされる 別途イニシャライズは必要。詳しくは https://ui.shadcn.com/docs/installation
Slide 7
Slide 7 text
shadcn/uiの導入
Slide 8
Slide 8 text
shadcn/uiの導入 すぐ使えます
Slide 9
Slide 9 text
つまり・・・ shadcn/uiのコンポーネントと自分たちのソース コードの間にはライブラリとしての依存関係が ない
Slide 10
Slide 10 text
shadcn/uiの実装自体は薄い Buttonで40行くらい 複雑なコンポーネントのDropdownやToastでも 200行くらい 小さな責務に分割されていて、それぞれはシン プルで読みやすい
Slide 11
Slide 11 text
主なshadcn/uiの依存ライブラリ tailwind CSS radix-ui/primitives cva react-hook-forms (form関連を使う場合) tanstack-table (tableを使う場合) react-day-picker (Calendarを使う場合)
Slide 12
Slide 12 text
注意すべきこと Tailwind CSS前提。Tailwind CSSを採用した くない場合は使えない カスタマイズした際に、shadcn/ui自体のアッ プデートへの追従
Slide 13
Slide 13 text
shadcn/uiが 私の心を掴む理由
Slide 14
Slide 14 text
shadcn/ui採用の経緯 Vue2からReactへの移行 Vuetify2も使っていたのでその移行先をどう するか Vuetify2のレールに乗らない独自のレイアウ トも ※Vuetify2 = Vue2で使えるMaterial Designベースのライブラリ
Slide 15
Slide 15 text
移行の際の柔軟な要件 デザインのルックアンドフィールの変更につい ては融通がきくので完全再現する必要はない。 むしろこの機に色々改善できる
Slide 16
Slide 16 text
検討していた選択肢 既存のデザインシステムをカスタマイズして 使う 機能部分はHeadlessなコンポーネントライブ ラリを使ってスタイリング部分やvariantsは 頑張って自前でデザイン・実装する 1 2
Slide 17
Slide 17 text
デザインやvariantsを最初から洗い出して設計 しなおすのもそれなりに大変 機能性が低いものはHeadless系のコンポーネ ントライブラリにないことが多い Alertとか それぞれのデメリット - 選択肢 1
Slide 18
Slide 18 text
それぞれのデメリット - 選択肢 デザインシステム系のライブラリはコントロー ルできない部分への依存度が高くなる 仕様を変えたい場合やカスタマイズ時の苦労 Headless系より捨てにくい 2
Slide 19
Slide 19 text
つまり我々は・・・ 共有コンポーネントは自分達で作ったように完 全にコントロールしたい イチからデザイン・コンポーネント設計に時 間をかけずに、ある程度色々揃った状態から ゴリゴリ変更したい
Slide 20
Slide 20 text
shadcn/uiええやん プロジェクトにコピー&ペーストされるのでコ ードは僕らの手の中 良いプラクティスの設計・デフォルトで普段使 いできるくらいのクオリティでミニマムなデザ イン
Slide 21
Slide 21 text
Minimum-designed UI Kit
Slide 22
Slide 22 text
Minimum-designed UI Kit 色や形・レイアウトのバリエーションなど、 創造性的なところは最小限 個人的にはこのミニマムさには、カスタマイ ズの柔軟性への意図を感じています
Slide 23
Slide 23 text
Minimum-designed UI Kit full-design MUI Chakra-UI React-specturm etc... shadcn/ui Radix- ui/primitive Headless UI React-aria Ark UI non-design minimum-design
Slide 24
Slide 24 text
それなりに完成度・拡張性の高い独自のコンポ ーネントライブラリを最速で作り始めるための 雛形になってくれる 改めて良いところを一言でまとめると
Slide 25
Slide 25 text
コピペUIキットムーブメント? tailwind labsも現在Catalystというコピーし て使うUIキットを開発中です Catalyst発表のプレゼンではコマンドでコピ ペというより、DLしたものを手でコピペして いました
Slide 26
Slide 26 text
コピペUIキットムーブメント? https://youtu.be/CLkxRnRQtDE?si=FORy6ey_m-45eN0I&t=3507
Slide 27
Slide 27 text
Adam Wathan says... 数ヶ月ほど使っていれば、そのコンポーネン トはコピペして持ってきたことも忘れる レベル上げが終わった状態からゲームを始め られるような体験
Slide 28
Slide 28 text
コピペして持ってきたことも忘れる (追従の難しさへの反論) shadcn/uiへのアップデートが追従が難しいほ どカスタマイズしてるなら、それはもう完全に 独自のコンポーネント そもそもライブラリーを使用するというメンタ ルモデルの上にないので、追従の事をあんまり 気にする必要もないのでは?
Slide 29
Slide 29 text
一緒に仕事をしましょう!(採用PR) Leaner見積のデザインシステムの旅はまだ始 まったばかり。一緒にこの旅を楽しんでくれる 方・・・ Leanerのデザインエンジニアについて興味が あれば、お声がけください!
Slide 30
Slide 30 text
Let’s enjoy building good UI!! Thank you!