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
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React Ariaを使ったアクセシブルなコンポーネント開発
Takayuki Miura
November 22, 2024
More Decks by Takayuki Miura
See All by Takayuki Miura
AI時代を生き抜く「冒険者」になるために
kp047i
0
96
2023年2月22日はじめてのIT勉強会
kp047i
0
220
ぬま大学第7期最終発表会報告資料
kp047i
0
100
Other Decks in Programming
See All in Programming
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
400
act2-costs.pdf
sumedhbala
0
120
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.7k
共通化で考えるべきは、実装より公開する型だった
codeegg
0
270
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
210
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
180
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
350
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
160
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
540
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
120
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
210
act1-costs.pdf
sumedhbala
0
240
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
820
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
310
RailsConf 2023
tenderlove
30
1.5k
How to Ace a Technical Interview
jacobian
281
24k
A designer walks into a library…
pauljervisheath
211
24k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Fireside Chat
paigeccino
42
4k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
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)