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
React Ariaを使ったアクセシブルなコンポーネント開発
Search
Takayuki Miura
November 22, 2024
Programming
0
58
React Ariaを使ったアクセシブルなコンポーネント開発
Takayuki Miura
November 22, 2024
Tweet
Share
More Decks by Takayuki Miura
See All by Takayuki Miura
2023年2月22日はじめてのIT勉強会
kp047i
0
170
ぬま大学第7期最終発表会報告資料
kp047i
0
87
Other Decks in Programming
See All in Programming
昭和の職場からアジャイルの世界へ
kumagoro95
1
360
Pythonでもちょっとリッチな見た目のアプリを設計してみる
ueponx
1
530
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
240
iOSエンジニアから始める visionOS アプリ開発
nao_randd
3
130
Rails アプリ地図考 Flush Cut
makicamel
1
110
Unity Android XR入門
sakutama_11
0
150
SwiftUI Viewの責務分離
elmetal
PRO
1
220
Domain-Driven Transformation
hschwentner
2
1.9k
ファインディの テックブログ爆誕までの軌跡
starfish719
2
1.1k
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
0
190
Honoとフロントエンドの 型安全性について
yodaka
5
330
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
It's Worth the Effort
3n
184
28k
A designer walks into a library…
pauljervisheath
205
24k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
YesSQL, Process and Tooling at Scale
rocio
171
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Bash Introduction
62gerente
610
210k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
The World Runs on Bad Software
bkeepers
PRO
67
11k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Done Done
chrislema
182
16k
Writing Fast Ruby
sferik
628
61k
Transcript
React Ariaを使ったアクセシブルな コンポーネント開発 2024/11/22 Sendai Frontend Meetup #14 株式会社Hajimari 三浦鷹将
自己紹介 三浦鷹将 kappy(@kp047i) 株式会社Hajimariのエンジニア TSKaigi 2024/2025 スタッフ 先月東京 → 仙台に引っ越しました
今日話すこと
React Ariaとは React Ariaを使ってコンポーネントを開発すると きのポイント ほぼReactの話になってしまいます 🙇♂️
React Ariaとは
React Ariaとは Adobeが提供している、HeadlessなUIコンポーネントとReact Hooksのライ ブラリ アクセシビリティや国際化、さまざまなデバイスでの動作をサポートしてお り、デザインシステムを構築する開発者がスタイリングなどに専念できる
React Ariaの特徴 - アクセシビリティ アクセシビリティに関する実装はWAI-ARIA Authoring Practicesに従ってい る スクリーンリーダーやキーボードナビゲーションに対応 フォームに関するコンポーネントには表示用のラベルとARIAラベルがな
い場合に警告が出る 全てのコンポーネントを様々なデバイス、ブラウザ、スクリーンリーダーで テスト macOSのSafariとChromeのVoiceOver Windows の Firefox および Chrome でのJAWS Windows 版 Firefox および Chrome のNVDA iOS の VoiceOver Android の Chrome でのTalkBack
様々なデバイスやプラットフォームで一貫したインタラクション マウス、タッチ、キーボード、スクリーンリーダーに対応したアプリケ ーションが作れる clickではなくpressというイベントを扱う キーボードのenterの押下やスマホでのタッチ操作等のイベント を抽象化 他にもhoverやfocusなどのイベントもデバイス間の違いを吸収 React Ariaの特徴 -
インタラクション :hoverや:activeなどの擬似クラスではなく JSのstateからスタイルを変更することを推奨している
React Stately React Aria React Aria Components React Ariaに関するパッケージ State
Hook Behavior Hook Component ※ React SpectrumというAdobeのデザインシステムも存在
React Stately(State Hook) WebやReact Nativeで使用できる 各コンポーネントの状態管理とコアロジックをプラットフォームに依存しな い形で実装 CollectionやSelectなどの複雑なロジックを再利用できる 静的なコンポーネント等では使われていない
React Aria Hooks(Behavior Hook) インタラクションやアクセシビリティを 管理 キーボードやタッチなどの動作を定義 ARIA属性の指定 独立して使えたりも、React Statelyと組
み合わせても使える
React Aria Components React Aria HooksとReact Aria Statelyを基にしたHeadlessなUIコンポー ネントライブラリ スタイリング
CSS Modules CSS in JS Tailwind
React Aria Componentsを 使うときのポイント
Composition中心の設計 小さなコンポーネントを組み合わせてより 複雑なUIに対応する 再利用性 Contextを利用して選択状態や、リストの 開閉状態を子コンポーネントに伝えている 状態に応じて見た目を変えたい時には Render Propsを用いてchildrenが引数を受 け取る形も可能
Collection ListやTable, Menuなどの複数のアイテムを扱 うコンポーネントで使用する概念 キーボードでのナビゲーションや、パフォー マンス向上のための仕組みをサポート 静的コレクション 固定のアイテム 動的コレクション fetchしたデータやユーザーの操作で変化
するアイテム アイテムにidを付与してレンダリング結果 をキャッシュ
スタイリング 任意の方法でスタイリングできる
実際に使ってみて
実際に使ってみて 複雑なアクセシビリティ対応を任せられるので他の開発に専念しや すい 段階的に導入できそう 企業が開発元なのでOSSが活発だし安心感がある 初めてのコントリビュートができた 🎉 ライブラリの関係性や特性を理解しないといけないのが少し大変
参考 [React Aria](https://react-spectrum.adobe.com/react- aria/index.html) [React Aria で実現する次世代のアクセシビリティ - Speaker Deck](https://speakerdeck.com/ryo_manba/react-aria-deshi-
xian-suruci-shi-dai-noakusesibiritei) [React Aria でアクセシブルなコンポーネントを作成する] (https://azukiazusa.dev/blog/react-aria-accessible- component/#%E3%81%BE%E3%81%A8%E3%82%81)