Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
アクセシビリティを考慮した UI/CSS フレームワーク・ライブラリ選定 @BAR フロントえんどう #2 「CSS Library / Framework 」 やじはむ 2024/04/17
Slide 2
Slide 2 text
↑ロリスさん 自己紹介 やじはむ / yajihum ・株式会社COMPASS のフロントエンドエンジニア ・公教育で使われるプロダクトを開発 ・エンジニア3 年目 ・最近はパフォーマンスやアクセシビリティに興味がある ・好きなCSS フレームワークはTailwind CSS
Slide 3
Slide 3 text
UI/CSS フレームワーク・ライブラリを どういう基準で選定するか
Slide 4
Slide 4 text
・人気度、将来性 ・エコシステムの充実度 ・パフォーマンス ・カスタマイズのしやすさ ・実装の手軽さ ・言語やフレームワークとの相性 ・メンテナンスのしやすさ などなど...
Slide 5
Slide 5 text
・人気度、将来性 ・エコシステムの充実度 ・パフォーマンス ・カスタマイズのしやすさ ・実装の手軽さ ・言語やフレームワークとの相性 ・メンテナンスのしやすさ ・アクセシビリティへの対応のしやすさ ←これ入れたい
Slide 6
Slide 6 text
なぜ?👺
Slide 7
Slide 7 text
1. 長期的な計画が必要 アクセシビリティは非機能要件の1 つ 企画〜調達〜設計・実装・テスト〜リリースの全ての 過程で考慮する必要がある 後からやればいいやは結構大変
Slide 8
Slide 8 text
2. 実装が大変 aria 属性の付与 キーボード操作 デバイスに応じた制御 見やすくわかりやすいデザイン わかりやすい仕様・UX
Slide 9
Slide 9 text
3. 必要とされる知識の多さ 期待される結果がどんなコンポーネントかによって 異なる かつ、コンポーネント単位だけでなくそれらを合わ せた時の挙動も考える必要がある
Slide 10
Slide 10 text
実装をいかに楽に行えるかが重要 とにかく手間やコストがかかる
Slide 11
Slide 11 text
技術選定の時から どんなUI/CSS フレームワーク・ライブラリなら 実装しやすいかを考えておく アクセシビリティ対応を楽に行うためには
Slide 12
Slide 12 text
UI ライブラリ
Slide 13
Slide 13 text
Radix UI (Radix Primitives) ・⭐️14.1k ・ヘッドレス ・shadcn/ui( ⭐️56.2k) の内部で使用 ・28 コンポーネント ・パッケージサイズ:使用するコンポーネントによる (例:一番大きいSelect で 30.04 kB )
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
状態に合わせてdata 属性が付与される
Slide 16
Slide 16 text
NextUI ・⭐️19.1k ・Tailwind CSS ベース ・最初からスタイルが当たっている ・内部でReact Aria を使用 ・パッケージサイズ: 504.5kB(@nextui-org/react) +43.7kB(framer-motion)
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
React Aria Components ・⭐️11.6k (react-spectrum ) ・Adobe が提供 ・ヘッドレス ・react-aria でフックも提供 ・粒度が低くカスタマイズのしやすさは大きい ・アクセシビリティへの対応度は一番高そう ・パッケージサイズ: 167.6kB(react-aria-components) +126.8kB(react-aria)
Slide 19
Slide 19 text
CSS ライブラリ・フレームワーク
Slide 20
Slide 20 text
・data 属性に対してスタイルを当てられる ・擬似クラスを使用できる
Slide 21
Slide 21 text
CSS Modules Tailwind CSS Panda CSS vanilla-extract stylex data 属性 擬似クラス ⭐️ - 78.5k 4.6k 9.2k 8k 前提:React Server Components で使用可能
Slide 22
Slide 22 text
・全部使えるので基本的にどのCSS フレームワーク・ライブラリ でも問題なし ・状態に応じたスタイルが煩雑にならないような書き方ができる ものが良さそう ・後はサポートしている擬似クラスの量や、Utility First, CSS in JS 、コンポーネントは別でスタイルのみの提供があるかどうか、 Type Safe かどうかなどの違い
Slide 23
Slide 23 text
plugin: tailwindcss-react-aria-components data-[selected]:bg-blue-400 ↓ selected:bg-blue-400 で書ける
Slide 24
Slide 24 text
終わりに
Slide 25
Slide 25 text
・デザインシステムを作りたいならReact Aria ・効率的に実装したいならRadix UI やNextUI など ・CSS フレームワーク・ライブラリは何でも良さそう