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
Take into Accessibility in React
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
usagi-f
August 25, 2017
Programming
710
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Take into Accessibility in React
usagi-f
August 25, 2017
More Decks by usagi-f
See All by usagi-f
フロントエンド実装から見たAtomic Design開発のポイント
usagif
3
7k
platoを使ったコードメトリクス生成
usagif
0
320
How Github works and How Google works
usagif
0
130
良いUIをエンジニアに作ってもらうために、デザイナーができること
usagif
1
85
DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night
usagif
0
120
Frontend summary in 2015 summer
usagif
0
58
なるべく噛み砕いたGit基礎講習
usagif
1
87
position: fixed;を上手に飼う方法
usagif
2
380
Other Decks in Programming
See All in Programming
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
550
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
680
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
200
Agentic UI
manfredsteyer
PRO
0
160
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.5k
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
8
4.6k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
230
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
130
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
3Dシーンの圧縮
fadis
1
770
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
410
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building AI with AI
inesmontani
PRO
1
1.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.7k
A Soul's Torment
seathinner
6
2.9k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Faster Mobile Websites
deanohume
310
31k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Transcript
Take into Accessibility in React @usagi-f 2017-08-25 We Are JavaScripters!
@10th 1 / 26
Who are you ? 石橋 啓太 (Ishibashi Keita) @usagi-f Frontend
Engineer ( Technical Lead ) / UI Designer DMM.com Labo Co., Ltd. 2 / 26
アクセシビリティ、意識してますか? Accessibility, are you conscious now ? 3 / 26
Webアクセシビリティの重要な原則は、さまざまなユーザーのニ ーズ、好み、状況に柔軟に対応できるWebサイトとソフトウェア を設計すること https://www.w3.org/WAI/intro/accessibility.php 俗に a11y と表記されます。 4 / 26
現在Webは様々な領域で活用されている重要なリソースです。 アクセシブルなWebは、障がいを持つ人がより積極的に社会に参加 することを手助けします。 5 / 26
Reactでつくるアクセシブルコンポーネント Accessible component made with React 6 / 26
実は相性が良いReactとアクセシビリティ Controlable state/propsによるUIの容易な制御 Scalable ex. ) Higher Order Components Testable
状況に応じた表示を担保してくれる 7 / 26
ex. 1 : 画像コンポーネント image component 8 / 26
ex. 1 : 画像コンポーネント 見出しによるテキスト補助がある場合は、imgには alt="" という空 の指定をして、無視しても良い要素ということを伝える必要があ る。 <img
src="img/male.png" alt=" 男性の写真" /> <h3> 女性の写真</h3> <img src="img/female.png" /> // 空alt を忘れる。。 9 / 26
ex. 1 : 画像コンポーネント こんなReactコンポーネントをつくってみる const ImgComponent = (props) =>
{ return <img src={props.src} alt={props.alt} />; }; ImgComponent.defaultProps = { alt: '', }; export default ImgComponent; 10 / 26
ex. 1 : 画像コンポーネント defaultPropsのaltにあらかじめ '' が入ってるので気にする必要が なくなる。 <ImgComponent src="img/male.png"
alt=" 男性の写真"> <h3> 女性の写真</h3> <ImgComponent src="img/female.png"> 11 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント use WAI-ARIA 12 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント What's WAI-ARIA ? 支援技術が障害をもつ人に対し適切な情報を伝えられるようにす るために、ウェブコンテンツのアクセシビリティーは、ウィジェ ット、構造、動作に関するセマンティック情報を要求する。
Accessible Rich Internet Applications (WAI-ARIA) 1.1 日本語訳 https://momdo.github.io/wai-aria-1.1/ 13 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント aria-busy にbool値をpropsで渡すことで、状態が明示的になる <Message loading={this.state.loading} /> //
Message Component <p aria-busy={props.loading}> {props.loading ? 'Now Loading...' : 'Done!'} </p> <p aria-busy="true">Now Loading...</p> 14 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント 選択項目と合致している場合、aria-checked にtrueを渡す const selected = (value
=== current); <li role="radio" aria-checked={selected}>...</li> <ul> <li role="radio" aria-checked="true">...</li> <li role="radio" aria-checked="false">...</li> </ul> 15 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント 隠しておきたい要素に aria-hidden や tabindex="-1" を指定する ことにも使える
const selected = (value === current); <div aria-hidden={!selected}> // 非選択時にtrue を指定 <button tabindex={selected ? 0 : '-1'}> // focus 対象外に ... </button> </div> 16 / 26
ex. 2 : WAI-ARIAを活用したコンポーネント WAI-ARIAはCSSも簡潔にできる .message[aria-busy=true] { ... } .tabpanel[aria-checked=true]
{ ... } .selectElement[aria-hidden=true] { ... } is-*** のようなclassを付与しなくても、UIの状態ごとのスタイル を指定可能 17 / 26
ex. 3 : プレースホルダーアンカーリンク placeholder anchorlink 18 / 26
ex. 3 : プレースホルダーアンカーリンク href attribute この属性は、プレースホルダーリンクを生成するために省略でき ます (HTML5)。プレースホルダーリンクは従来のハイパーリンク に似ていますが、どこにも移動しません。
https://developer.mozilla.org/ja/docs/Web/HTML/Element/a 19 / 26
ex. 3 : プレースホルダーアンカーリンク ナビゲーションのマークアップ例(Aboutページにいる場合) <li><a href="/top">Top</a></li> <li><p>About</p></li> <!-- Bad...
--> <li><a href="/help">Help</a></li> <li><a href="/top">Top</a></li> <li><a>About</a></li> <!-- Good! --> <li><a href="/help">Help</a></li> 20 / 26
ex. 3 : プレースホルダーアンカーリンク // Bad... if (props.href) { return
<a href={props.href}>{props.label}</a>; } else { return <p>{props.label}</p>; } // Good! <a href={props.href || null}>{props.label}</a> 21 / 26
まとめ Summary (という名の主張) 22 / 26
アクセシビリティを意識することは決して特別なこ とじゃない To be conscious of accessibility is never a
advanced things. 例えば、WAI-ARIAはW3Cが策定している仕様の一つです。 これはヘッダーを <header> でマークアップしましょうという考え となんら違いはない。 23 / 26
アクセシビリティ ≠ セマンティックマークアップ Accessibility ≠ Semantic markup セマンティックなマークアップは、アクセシビリティを高める方法 の一つですが、 アクセシビリティはHTMLの分野だけの話ではない。
正しく情報にアクセスするにはもっと上流からのアプローチが不可 欠。 24 / 26
アクセシビリティはデザインから考えてみよう To think from design. Accessibility according to actual people
with Disabilities https://axesslab.com/accessibility-according-to-pwd/ 大量のテキストが含まれている (large chunks of text) フォントサイズが小さい (small font size) 低コントラスト (low contrast) 色でしか状態を判別できない (relying only on color) 25 / 26
Thank you 26 / 26