SlideShare a Scribd company logo
1 of 21
Download to read offline
アクセシビリティから考える
Reactアプリの品質向上
クラスメソッド 持田 徹
自己紹介
● もっちー @motchie 持田 徹
● 2018年7月入社
● CX事業本部Delivery部デリバリーマネー
ジャー
● 受託開発案件のプロジェクトマネージャー
・ スクラムマスター
● 2002年からアクセシビリティの研究・
執筆・講演・コンサルティング
2
アクセシビリティ(a11y)とは?
● アクセス可能な度合い、アクセスしやすさ
● 障害者や高齢者を含む、より多くのユーザーが、
より多くの利用環境から、より多くの場面で利用で
きるようにしていきたい
● より多くの人が利用できる状態=「アクセシブル」
3
アクセシビリティはソフトウェア品質評価の要素
4
独立行政法人情報処理推進機
構(IPA)技術本部 ソフトウェ
ア高信頼化センター(SEC)
『つながる世界のソフトウェア
品質ガイド あたらしい価値提
供のための品質モデル活用の
すすめ | 書籍・刊行物』より
Q. Reactアプリを
アクセシブル(高品質)にするには?
A. スクリーンリーダについて
知ることがカギ
5
ITの支援技術(Assistive Technology; AT)
PCやスマホなどを使う際に支援が必要なユーザーに、
そのニーズに合う機能を提供するソフトウェアや
ハードウェア、デバイスなどの総称
● スクリーン・リーダー(VoiceOver, TalkBack など)
● 画面拡大、色反転、ジョイスティック、トラックボール、
キーボードガード、...
6
macOSのVoiceOverの基本
● 起動と終了: Command+F5キー
● VoiceOverカーソル: 読み上げ・操作対象を選ぶ
● VoiceOver修飾キー:
Caps Lock または Control+Option に設定
○ VO+F8: VoiceOver修飾キーとF8の組み合わせ
● VoiceOverローター(VO+U):
○ Webページ内の特定の場所への移動を簡単に
7
macOSのVoiceOverのデモ
8
Accessibility Object Model(AOM)/Tree
9
from: Accessibility Object Model | aom
主なAccessibility node properties
10
名前(name)
「アクセシブルな」名前。label要素で関連づけ
られる場合も。
description
説明。nameより詳細な説明。title属性などで
付与される。
役割(role)
ボタン、リストといった役割。この値によって振
る舞いが変わる。必ず存在する項目。
状態(state)
オブジェクトがチェックされている、展開されて
いるなどの状態をあらわす。
Chrome DevToolsでのAOMの確認方法
11
画面はHTMLのセマンティクスで表現する
12
from: What Is
Semantic Markup
and Why You
Should Use It | by
Sumudu
Siriwardana |
CodeX | Medium
例題: このコードサンプルの問題点は?
import React, { useState } from "react";
function App() {
return (
<header>
<LikeButton />
</header>
);
}
function LikeButton() {
const [count, setCount] = useState(999);
return <span>♥ {count}</span>;
}
export default App;
13
from: Reactでいいねボタンを作ろう の途中のサ
ンプルを改変
Reactコンポーネントで考慮すべき点(1)
● JSXは、コンポーネントが、どんなHTMLセマンティクスで表現さ
れるのがベストかを考慮して実装する。「とりあえずdiv、とりあえ
ずspan」は避ける
● 画面全体がHTML Standardに準拠しているか常に確認する
● アクセシビリティの問題は機械チェックだけでは検知できない。
「Storybookにa11yチェックプラグインを入れたらOK」などの
「アクセシビリティは理解したくない、仕組みでカバーする」運用
は、現在のところできない。人による設計やチェックが必須
14
Q. タブ、ハンバーガーメニューなどは、
HTMLでは表現できないのですが...?
15
A.WAI-ARIAを使います
16
● W3CのWeb Accessibility Initiativeが策定する
Accessible Rich Internet Applications (WAI-ARIA)
仕様
● HTMLにない役割、性質、状態をrole属性、aria-*属性を使っ
て追加・拡張することができる
● role=”tab”、role=”tabpanel”、role=”tablist”、...
● かなり高機能、ただし乱用はかえってアクセシビリティを低下さ
せてしまう
ARIA Authoring Practices Guideについて
17
from: ARIA Authoring
Practices Guide |
APG | WAI | W3C
Reactコンポーネントで考慮すべき点(2)
● キーボード操作、フォーカスマネジメント、色のコントラスト、
TabIndex、適切なWAI-ARIAの利用など、アクセシブルなコン
ポーネント開発には考慮点が多いため、自分でUIを作ることは極
力避ける
● dialog要素、Popover APIなど最新HTMLの恩恵を利用する
● 既存のReact Component Librariesにある
”Accessibility out of the box”は鵜呑みにしない方がよい
● UnstyledなHeadless UI、AdobeによるReact Ariaを組
み合わせる方向か
18
その他に考慮すべき点
● スクリーンリーダーでは、見た目上のページが切り替わったことに
気づくことができないため、React Helmetなどを用いてペー
ジタイトルを適宜変更する
○ Astro3.2などには、<ViewTransitions /> に”Route
Announcer”が追加された
● 動的に画面が更新される部分には、ARIA live regionsを利用
して支援技術に更新を通知する
19
少しずつ始めていきましょう!
● JSXでのマークアップをセマンティックに、Roleを意識する
● 画面全体のHTMLが仕様に準拠するように
● HTMLで表現できない部分は、最低限のWAI-ARIAで
● 独自UIは避け、アクセシブルなコンポーネントライブラリを利用
● 動的な更新部分はARIA live regionsを利用
● ページ遷移はRoute Announcerで通知
● スクリーンリーダーでテスト、キーボード操作、文字拡大 etc.を確
認
20
ありがとうございました!
21

More Related Content

Similar to アクセシビリティから考えるReactアプリの品質向上

IA Workshop, Introduction to Information Architecture (2002)
IA Workshop, Introduction to Information Architecture (2002)IA Workshop, Introduction to Information Architecture (2002)
IA Workshop, Introduction to Information Architecture (2002)Nobuya Sato
 
アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?Kiro Harada
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」naoki ando
 
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0正善 大島
 
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Google Cloud Platform - Japan
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Reiko Rikuno
 
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術Yusuke Uchida
 
リクルート式サービス開発 カスタマーの本音×人工知能
リクルート式サービス開発 カスタマーの本音×人工知能リクルート式サービス開発 カスタマーの本音×人工知能
リクルート式サービス開発 カスタマーの本音×人工知能Recruit Technologies
 
Cloud Native and Agile Approach
Cloud Native and Agile ApproachCloud Native and Agile Approach
Cloud Native and Agile ApproachShinya Yanagihara
 
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜Toru MOCHIDA
 
Future customer experience
Future customer experienceFuture customer experience
Future customer experienceKatsuhiro Aizawa
 
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術Saori Baba
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組みYuta Shimada
 
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)IT VALUE EXPERTS Inc.
 
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方agileware_jp
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来Yoshihito Kuranuki
 
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へチケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へakipii Oga
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイルYoshihito Kuranuki
 

Similar to アクセシビリティから考えるReactアプリの品質向上 (20)

IA Workshop, Introduction to Information Architecture (2002)
IA Workshop, Introduction to Information Architecture (2002)IA Workshop, Introduction to Information Architecture (2002)
IA Workshop, Introduction to Information Architecture (2002)
 
アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
 
超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0超高速開発の基礎概念 20141119 0
超高速開発の基礎概念 20141119 0
 
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps] Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
Social GAME における AI 活用事例 [第 4 回 Google Cloud INSIDE Games & Apps]
 
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
Redmineの活用事例‐多様なプロジェクト管理に対するツールの適用
 
DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術DRIVE CHARTを支えるAI技術
DRIVE CHARTを支えるAI技術
 
リクルート式サービス開発 カスタマーの本音×人工知能
リクルート式サービス開発 カスタマーの本音×人工知能リクルート式サービス開発 カスタマーの本音×人工知能
リクルート式サービス開発 カスタマーの本音×人工知能
 
Cloud Native and Agile Approach
Cloud Native and Agile ApproachCloud Native and Agile Approach
Cloud Native and Agile Approach
 
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜
そのアプリ、目を閉じても使えますか? 〜 アクセシビリティの基礎と対応の考え方 〜
 
Future customer experience
Future customer experienceFuture customer experience
Future customer experience
 
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術
UX生トーク vol.6 機能組織の価値発揮!UX改善のディレクション術
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
 
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)
デジタル化の波を乗りこなすために(itSMF Japan Conference/Expo 2018講演資料)
 
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方
【導入事例】Lychee Redmineユーザーが語る!トラブル予防としての使い方
 
20190117 teamup
20190117 teamup20190117 teamup
20190117 teamup
 
「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来「納品のない受託開発」にみるソフトウェア受託開発の未来
「納品のない受託開発」にみるソフトウェア受託開発の未来
 
20190807_Aidemy Azure AI ご紹介
20190807_Aidemy Azure AI ご紹介20190807_Aidemy Azure AI ご紹介
20190807_Aidemy Azure AI ご紹介
 
チケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へチケット駆動開発の解説~タスク管理からプロセス改善へ
チケット駆動開発の解説~タスク管理からプロセス改善へ
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイル
 

More from Toru MOCHIDA

クラスメソッドが目指すアクセシビリティの方向性
クラスメソッドが目指すアクセシビリティの方向性クラスメソッドが目指すアクセシビリティの方向性
クラスメソッドが目指すアクセシビリティの方向性Toru MOCHIDA
 
ダイバーシティを実現するアクセシビリティの基礎と実践
ダイバーシティを実現するアクセシビリティの基礎と実践ダイバーシティを実現するアクセシビリティの基礎と実践
ダイバーシティを実現するアクセシビリティの基礎と実践Toru MOCHIDA
 
写真・動画を解析するAmazon Rekognitionの基礎と実装
写真・動画を解析するAmazon Rekognitionの基礎と実装写真・動画を解析するAmazon Rekognitionの基礎と実装
写真・動画を解析するAmazon Rekognitionの基礎と実装Toru MOCHIDA
 
Amazon Echo Showの ユーザー補助機能
Amazon Echo Showのユーザー補助機能Amazon Echo Showのユーザー補助機能
Amazon Echo Showの ユーザー補助機能Toru MOCHIDA
 
Amazon Alexaスキルとデバイスのアクセシビリティを考える
Amazon Alexaスキルとデバイスのアクセシビリティを考えるAmazon Alexaスキルとデバイスのアクセシビリティを考える
Amazon Alexaスキルとデバイスのアクセシビリティを考えるToru MOCHIDA
 
アクセシブルな音声・動画プレイヤーのご紹介
アクセシブルな音声・動画プレイヤーのご紹介アクセシブルな音声・動画プレイヤーのご紹介
アクセシブルな音声・動画プレイヤーのご紹介Toru MOCHIDA
 
オープンソースのアクセシビリティ・チェックツール
オープンソースのアクセシビリティ・チェックツールオープンソースのアクセシビリティ・チェックツール
オープンソースのアクセシビリティ・チェックツールToru MOCHIDA
 
アクセシビリティの基礎
アクセシビリティの基礎アクセシビリティの基礎
アクセシビリティの基礎Toru MOCHIDA
 
電子書籍のアクセシビリティ
電子書籍のアクセシビリティ電子書籍のアクセシビリティ
電子書籍のアクセシビリティToru MOCHIDA
 
ACRI最新通信ダイジェスト
ACRI最新通信ダイジェストACRI最新通信ダイジェスト
ACRI最新通信ダイジェストToru MOCHIDA
 
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)Toru MOCHIDA
 
WCAG勉強会@関西について
WCAG勉強会@関西についてWCAG勉強会@関西について
WCAG勉強会@関西についてToru MOCHIDA
 
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~Toru MOCHIDA
 
最近のウェブアクセシビリティの動向とCMSでの対応について
最近のウェブアクセシビリティの動向とCMSでの対応について最近のウェブアクセシビリティの動向とCMSでの対応について
最近のウェブアクセシビリティの動向とCMSでの対応についてToru MOCHIDA
 
アクセシビリティ・イントロダクション
アクセシビリティ・イントロダクションアクセシビリティ・イントロダクション
アクセシビリティ・イントロダクションToru MOCHIDA
 
ウェブアプリケーションのアクセシビリティ入門
ウェブアプリケーションのアクセシビリティ入門ウェブアプリケーションのアクセシビリティ入門
ウェブアプリケーションのアクセシビリティ入門Toru MOCHIDA
 
JIS X 8341-3:2010時代のWebアプリケーション開発
JIS X 8341-3:2010時代のWebアプリケーション開発JIS X 8341-3:2010時代のWebアプリケーション開発
JIS X 8341-3:2010時代のWebアプリケーション開発Toru MOCHIDA
 
KOFで社会貢献のチャンスを得よう
KOFで社会貢献のチャンスを得ようKOFで社会貢献のチャンスを得よう
KOFで社会貢献のチャンスを得ようToru MOCHIDA
 

More from Toru MOCHIDA (19)

クラスメソッドが目指すアクセシビリティの方向性
クラスメソッドが目指すアクセシビリティの方向性クラスメソッドが目指すアクセシビリティの方向性
クラスメソッドが目指すアクセシビリティの方向性
 
ダイバーシティを実現するアクセシビリティの基礎と実践
ダイバーシティを実現するアクセシビリティの基礎と実践ダイバーシティを実現するアクセシビリティの基礎と実践
ダイバーシティを実現するアクセシビリティの基礎と実践
 
写真・動画を解析するAmazon Rekognitionの基礎と実装
写真・動画を解析するAmazon Rekognitionの基礎と実装写真・動画を解析するAmazon Rekognitionの基礎と実装
写真・動画を解析するAmazon Rekognitionの基礎と実装
 
Amazon Echo Showの ユーザー補助機能
Amazon Echo Showのユーザー補助機能Amazon Echo Showのユーザー補助機能
Amazon Echo Showの ユーザー補助機能
 
Amazon Alexaスキルとデバイスのアクセシビリティを考える
Amazon Alexaスキルとデバイスのアクセシビリティを考えるAmazon Alexaスキルとデバイスのアクセシビリティを考える
Amazon Alexaスキルとデバイスのアクセシビリティを考える
 
アクセシブルな音声・動画プレイヤーのご紹介
アクセシブルな音声・動画プレイヤーのご紹介アクセシブルな音声・動画プレイヤーのご紹介
アクセシブルな音声・動画プレイヤーのご紹介
 
オープンソースのアクセシビリティ・チェックツール
オープンソースのアクセシビリティ・チェックツールオープンソースのアクセシビリティ・チェックツール
オープンソースのアクセシビリティ・チェックツール
 
アクセシビリティの基礎
アクセシビリティの基礎アクセシビリティの基礎
アクセシビリティの基礎
 
電子書籍のアクセシビリティ
電子書籍のアクセシビリティ電子書籍のアクセシビリティ
電子書籍のアクセシビリティ
 
ACRI最新通信ダイジェスト
ACRI最新通信ダイジェストACRI最新通信ダイジェスト
ACRI最新通信ダイジェスト
 
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)
アクセシビリティ概要(Silverlightを囲む会 in 大阪#6)
 
WCAG勉強会@関西について
WCAG勉強会@関西についてWCAG勉強会@関西について
WCAG勉強会@関西について
 
WCAG2について
WCAG2についてWCAG2について
WCAG2について
 
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~
アプリケーションのアクセシビリティ~WCAGからARIA、RIAまで~
 
最近のウェブアクセシビリティの動向とCMSでの対応について
最近のウェブアクセシビリティの動向とCMSでの対応について最近のウェブアクセシビリティの動向とCMSでの対応について
最近のウェブアクセシビリティの動向とCMSでの対応について
 
アクセシビリティ・イントロダクション
アクセシビリティ・イントロダクションアクセシビリティ・イントロダクション
アクセシビリティ・イントロダクション
 
ウェブアプリケーションのアクセシビリティ入門
ウェブアプリケーションのアクセシビリティ入門ウェブアプリケーションのアクセシビリティ入門
ウェブアプリケーションのアクセシビリティ入門
 
JIS X 8341-3:2010時代のWebアプリケーション開発
JIS X 8341-3:2010時代のWebアプリケーション開発JIS X 8341-3:2010時代のWebアプリケーション開発
JIS X 8341-3:2010時代のWebアプリケーション開発
 
KOFで社会貢献のチャンスを得よう
KOFで社会貢献のチャンスを得ようKOFで社会貢献のチャンスを得よう
KOFで社会貢献のチャンスを得よう
 

アクセシビリティから考えるReactアプリの品質向上