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
69
0
Share
React Ariaを使ったアクセシブルなコンポーネント開発
Takayuki Miura
November 22, 2024
More Decks by Takayuki Miura
See All by Takayuki Miura
AI時代を生き抜く「冒険者」になるために
kp047i
0
57
2023年2月22日はじめてのIT勉強会
kp047i
0
210
ぬま大学第7期最終発表会報告資料
kp047i
0
99
Other Decks in Programming
See All in Programming
KMP × Kotlin 2.3 - How Android Got Slower While iOS Builds Improved by 47%
rio432
0
150
UaaL×Androidアプリのメモリ計測 — Memory Profilerの先へ
rio432
0
140
ソフトウェア設計の結合バランス #phperkaigi
kajitack
0
490
Making the RBS Parser Faster
soutaro
0
680
〜バイブコーディングを超えて〜 チームで実験し続けたAI駆動開発
tigertora7571
0
200
when storing skills in S3 file
watany
3
1.4k
tRPCの概要と少しだけパフォーマンス
misoton665
2
270
Agentic Elixir
whatyouhide
0
440
ふにゃっとしない名前の付け方 〜哲学で茹で上げる、コシのあるソフトウェア設計〜
shimomura
0
110
Explore CoroutineScope
tomoeng11
0
180
サークル参加から学ぶ、小さな事業の回し方
yuzneri
0
150
決定論 vs 確率論:Gemini 3 FlashとTF-IDFを組み合わせた「法規判定エンジン」の構築
shukob
0
160
Featured
See All Featured
The SEO identity crisis: Don't let AI make you average
varn
0
460
GitHub's CSS Performance
jonrohan
1032
470k
Abbi's Birthday
coloredviolet
2
7.5k
Writing Fast Ruby
sferik
630
63k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
300
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
540
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
Marketing to machines
jonoalderson
1
5.2k
KATA
mclloyd
PRO
35
15k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
Rails Girls Zürich Keynote
gr2m
96
14k
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)