Upgrade to Pro — share decks privately, control downloads, hide ads and more …

できる!アクセシビリティ向上/droidkaigi2023-day2

 できる!アクセシビリティ向上/droidkaigi2023-day2

DroidKaigi 2023 Day2 「できる!アクセシビリティ向上」というタイトルで日本経済新聞社の小倉さんが発表しました #DroidKaigi (2023/09/15)
https://2023.droidkaigi.jp/timetable/495062/

More Decks by 日本経済新聞社 エンジニア採用事務局

Other Decks in Technology

Transcript

  1. ISO 9241-11における ユーザビリティ の定義 特定の利⽤状況において、特定のユーザーによって、 ある製品が、指定された⽬標を達成するために⽤いられる際の、 有効さ、効率、ユーザーの満⾜度の度合い JIS X 8341

    における アクセシビリティ の定義 様々な能⼒をもつ最も幅広い層の⼈々に対する製品, サービス,環境⼜は施設(のインタラクティブシステム)の ユーザビリティ Step1. 知るぞ!アクセシビリティ - 「アクセシビリティ」とは? 6
  2. ISO 9241-11における ユーザビリティ の定義 特定の利⽤状況において、特定のユーザーによって、 ある製品が、指定された⽬標を達成するために⽤いられる際の、 有効さ、効率、ユーザーの満⾜度の度合い JIS X 8341

    における アクセシビリティ の定義 様々な能⼒をもつ最も幅広い層の⼈々に対する製品, サービス,環境⼜は施設(のインタラクティブシステム)の ユーザビリティ Step1. 知るぞ!アクセシビリティ - 「アクセシビリティ」とは? 7
  3. • ⼗分なコントラストを取る → ⾒えにくさを軽減できる • 端末設定の ⽂字サイズ / 表⽰サイズ を拡⼤しても

    レイアウトが乱れないようにする Step1. 知るぞ!アクセシビリティ - 皆んなが「使える」アプリにするために 視覚 - アプリでできる考慮 13
  4. TalkBack を On / Off にする 【基本】 設定アプリ > [ユーザー補助]

    > [TalkBack] https://play.google.com/store/apps/details? id=com.google.android.marvin.talkback Step1. 知るぞ!アクセシビリティ - TalkBackを使ってみよう 21
  5. ショートカット で On / Off にする [TalkBackのショートカット] を設定する Step1. 知るぞ!アクセシビリティ

    - TalkBackを使ってみよう ショートカット例
 • 音量ボタン大と小の同時長押し
 • ユーザー補助機能ボタン
 23
  6. adbコマンドで On / Off にする Settings.Secure の設定値を変更 adb shell settings

    put secure enabled_accessibility_services {accessibility provider} • Onにするとき com.google.android.marvin.talkback /com.google.android.marvin.talkback.TalkBackService • Offにするとき null Step1. 知るぞ!アクセシビリティ - TalkBackを使ってみよう https://developer.android.com/reference/android/provider/Settings.Secure #ENABLED_ACCESSIBILITY_SERVICES 24
  7. Step1. 知るぞ!アクセシビリティ - TalkBackを使ってみよう 開発時に便利な設定 [TalkBack] > [設定] > [詳細設定]

    > [デベロッパー向けの設定] > [⾳声出⼒の表⽰] ONで画⾯下部に読み上げ内容が表⽰される。 → ⽂⾯上でのコミュニケーションに便利 ✨ ⾳声出⼒の表⽰, ON, スイッチ 31
  8. Step1. 知るぞ!アクセシビリティ スイッチアクセスを使ってみよう スイッチアクセスとは... • Androidデバイスを外部デバイスなどで操作する機能 • スイッチアクセスによる スキャン(※) と

    選択 により、 画⾯にタップすることなくデバイスを操作できる ※ 画⾯上の選択可能な項⽬を、⾃動で順番にハイライト表⽰ https://www.youtube.com/watch?v=rAIXE6ilRQ0 32
  9. https://www.ablenetinc.com/ blue2-bluetooth-switch/ スイッチデバイスの例 Step1. 知るぞ!アクセシビリティ - スイッチアクセスを使ってみよう https://www.ablenetinc.com/ micro-light-switch/ •

    2つのボタンで操作できる機器 • ごくわずかな⼒で操作できる機器 • 他にも、⾜で操作するものや、 スティック型のもの、 頭で押しやすいものなど、 多様なものがある 33
  10. Step1. 知るぞ!アクセシビリティ - スイッチアクセスを使ってみよう スイッチアクセス を On / Off にする

    【基本】 設定アプリ > [ユーザー補助] > [スイッチアクセス] https://play.google.com/store/apps/details? id=com.google.android.accessibility.switchaccess 36
  11. adbコマンドで On / Off にする Settings.Secure の設定値を変更 adb shell settings

    put secure enabled_accessibility_services {accessibility provider} • Onにするとき com.google.android.accessibility.switchaccess /com.android.switchaccess.SwitchAccessService • Offにするとき null Step1. 知るぞ!アクセシビリティ - TalkBackを使ってみよう https://developer.android.com/reference/android/provider/Settings.Secure #ENABLED_ACCESSIBILITY_SERVICES 38
  12. スイッチデバイスを持っていなくても 🙆 開発者向けに、Androidデバイスの⾳量ボタンを 割り当てることができるようになっている! [スイッチアクセス] > [設定] > > [スキャン⽤のスイッチを割り当てる]

    詳細は以下ドキュメント参照 https://developer.android.com/guide/topics/ui/accessibility/test ing#switch-access Step1. 知るぞ!アクセシビリティ - スイッチアクセスを使ってみよう 39
  13. Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜アクセシビリティタスク〜 他にも開発すべきことがあり、 アクセシビリティタスクの全てに今すぐ着⼿することは難しかった。 そこで、以下の観点で優先度を決定。 ①

    他の開発の合間に進めやすいか?   (画⾯単位、コンポーネント単位での対応 & リリースが可能か) ②Androidで他の代替⼿段を以てアプリを使⽤することができるか? (Androidユーザー補助機能など) 50
  14. TalkBack‧ スイッチアクセス ① OK ② なし Android14 表⽰崩れ ① OK

    ② タブレット   拡⼤機能 ダークモード ① 難しい ② ⾊反転機能 Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜アクセシビリティタスク〜 ① 他の開発の合間に進めやすいかどうか ② Androidで他の代替⼿段を以てアプリを使⽤することができるか 51
  15. TalkBack‧ スイッチアクセス ① OK ② なし Android14 表⽰崩れ ① OK

    ② タブレット   拡⼤機能 ダークモード ① 難しい ② ⾊反転機能 Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜アクセシビリティタスク〜 ① 他の開発の合間に進めやすいかどうか ② Androidで他の代替⼿段を以てアプリを使⽤することができるか 最優先 52
  16. シーン 画⾯名 現状動作 改善案 画⾯優先度 使える度 総合的優先度 初回導線 〇〇画⾯ ボタンが「ラ

    ベルなし」と 読まれる ボタン内容を わかるように する 個別記事 個別記事画⾯ ボトムシート が開けない 開けるように する 朝⼣刊 ⽇付選択画⾯ … … 各画⾯をTalkBackで実際に動かしてみて(⼿動テスト)、 改善点のある画⾯を以下のような表にリストアップしていった Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜TalkBackタスク〜 54
  17. 各項⽬で 画⾯的優先度 × 使える度 から 総合的優先度 を決定 Step2. 取り組んだ!アクセシビリティ -

    ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜TalkBackタスク〜 初回導線‧ 主要画⾯ ⾏えない遷移‧ 意味の通じない読み上げ 優先度 ⾼ × = PVが少ない画 ⾯ 操作は可能‧ 意味は通じる 優先度 低 × = 55
  18. シーン 画⾯名 現状動作 改善案 画⾯優先度 使える度 総合的優先度 初回導線 〇〇画⾯ …

    … ⾼ 絶望的 S 〇〇 〇〇画⾯ … … ⾼ ⼀応使える B 〇〇 〇〇画⾯ … … 中 使えない B 〇〇 〇〇画⾯ … … 低 ⼀応使える C Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 優先度決め 〜TalkBackタスク〜 優先度をレベル分け 56
  19. 開発フェーズに到達したら、粛々と対応するのみ💪 Step2. 取り組んだ!アクセシビリティ - ⽇経電⼦版のアクセシビリティ向上の流れ 開発 Before & After のTalkBackでの挙動を

    撮影してPRに添付するルール 対応内容を振り返りやすくすることで、 継続的なアクセシビリティ向上に繋がることを期待 60
  20. (参考)アクセシビリティチェックの⽅法 • ⼿動テスト TalkBackやスイッチアクセスなどを実際に操作する⽅法 • ツールを使⽤したテスト ユーザー補助検証ツールやlintなどに改善点を指摘してもらう⽅法 • ⾃動テスト Espressoなどのテストフレームワークを使⽤する⽅法

    • ユーザテスト 実際にアプリを使⽤したユーザからフィードバックを受ける⽅法 https://developer.android.com/guide/topics/ui/accessibility/testing Step3. 今⽇からできる!アクセシビリティ! - ツールからの指摘を修正してみる 72
  21. (参考)アクセシビリティチェックの⽅法 こ れ • ⼿動テスト TalkBackやスイッチアクセスなどを実際に操作する⽅法 • ツールを使⽤したテスト ユーザー補助検証ツールやlintなどに改善点を指摘してもらう⽅法 •

    ⾃動テスト Espressoなどのテストフレームワークを使⽤する⽅法 • ユーザテスト 実際にアプリを使⽤したユーザからフィードバックを受ける⽅法 https://developer.android.com/guide/topics/ui/accessibility/testing Step3. 今⽇からできる!アクセシビリティ! - ツールからの指摘を修正してみる 73
  22. ContentDescription ? • 主にアクセシビリティ⽬的で使⽤するプロパティ • 使⽤例 ◦ 画像やアイコンの代替テキスト(≒ Webのalt属性) ◦

    TalkBackでの読み上げを理解しやすくする 例えば、UI上では「¥1,000」と表現しているものを 読み上げでは「1,000円」とする Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる 77
  23. ① contentDescription = null Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる • null

    が適している例 🙆 ◦ 装飾⽬的の画像(画像右) ◦ テキストと内容が重複する画像 (画像左) 81
  24. ② contentDescription = ””(空⽂字) Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる 画像にフォーカスは当たるが、「ラベルなし」と読み上げられる。 ※

    この例のように、フォーカスは当たるが 適切な読み上げが付与されていない場合、 TalkBackは「ラベルなし」と読み上げる。 ラベルなし 82
  25. ② contentDescription = ””(空⽂字) Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる • 「ラベルなし」という読み上げでは理解が困難であり、

    アクセシビリティに⽋ける • ””(空⽂字)は基本的に指定すべきではない ◦ 明確に ① null か、③ 適切な⽂字列 を指定すべき 🙆 83
  26. ③ contentDescription = ” {適切な⽂字列} ” Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる

    画像にフォーカスが当たり、 contentDescriptionに指定した⽂字列が読み上げられる。 アルパカの⾚ちゃんは、 ⽣後3ヶ⽉で 歩けるようになる 84
  27. ③ contentDescription = ” {適切な⽂字列} ” Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる

    • ” {適切な⽂字列} ” とするべき例 🙆 ◦ ⽂字情報が⼊っている画像(⼀つ前のスライドの例) ◦ ボタンとなっている画像やアイコン (右図の例) どのような⽂字列を指定すべきか迷った時は、 Webのalt属性を参考にする(検索する)とサンプルが多い💡 85
  28. • nullの場合 ◦ そのnull指定は意図されたもの? • 空⽂字の場合 ◦ null or ⽂字列を指定する⽅が適切ではないか?

    Step3. 今⽇からできる!アクセシビリティ! - ContentDescriptionを⾒直してみる ContentDescription⾒直しのチェックポイント 86
  29. (参考)アクセシビリティチェック • ⼿動テスト TalkBackやスイッチアクセスなどを実際に操作する⽅法 • ツールを使⽤したテスト ユーザー補助検証ツールやlintなどに改善点を指摘してもらう⽅法 • ⾃動テスト Espressoなどのテストフレームワークを使⽤する⽅法

    • ユーザテスト 実際にアプリを使⽤したユーザからフィードバックを受ける⽅法 https://developer.android.com/guide/topics/ui/accessibility/testing Step3. 今⽇からできる!アクセシビリティ! - ⼿動テストをしてみる 89
  30. (参考)アクセシビリティチェック https://developer.android.com/guide/topics/ui/accessibility/testing こ れ • ⼿動テスト TalkBackやスイッチアクセスなどを実際に操作する⽅法 • ツールを使⽤したテスト ユーザー補助検証ツールやlintなどに改善点を指摘してもらう⽅法

    • ⾃動テスト Espressoなどのテストフレームワークを使⽤する⽅法 • ユーザテスト 実際にアプリを使⽤したユーザからフィードバックを受ける⽅法 Step3. 今⽇からできる!アクセシビリティ! - ⼿動テストをしてみる 90
  31. <html lang=”en”> となっていた 🙅 事例1:HTMLのlang属性 ⽇本語で書かれたHTMLページをWebViewで表⽰。 読み上げが聞き取れない。 英語や中国語(?)が混ざっているよう。 現象 原因

    解決策 <html lang=”ja”> とすることで、聞き取り可能となった 🙆 Step3. 今⽇からできる!アクセシビリティ! - ⼿動テストをしてみる 92
  32. 休刊画⾯のScrollViewにフォーカスが当たっていた 原因 親ViewGroup 朝⼣刊画⾯ ViewGroup 無料会員向け画⾯ ViewGroup 休刊画⾯ ViewGroup ScrollView

    LinearLayout View A View B View C Step3. 今⽇からできる!アクセシビリティ! - ⼿動テストをしてみる VISIBLE のまま GONE にセット 95
  33. 休刊画⾯のScrollViewのVisibilityを切り替えるようにした 解決策 親ViewGroup 朝⼣刊画⾯ ViewGroup 無料会員向け画⾯ ViewGroup 休刊画⾯ ViewGroup ScrollView

    LinearLayout View A View B View C GONE にセット Step3. 今⽇からできる!アクセシビリティ! - ⼿動テストをしてみる 96
  34. 最後に...! アクセシビリティ向上で勉強になったもの • DroidKaigi 2021, 2022 の Tiphaine さん の発表

    DroidKaigi 2021 - 2021年こそアクセシビリティと向き合おう / Tiphaine (ティフェン) [JA] DroidKaigi 2022 - 社内でのモバイルアクセシビリティ推進 | Tiphaine (ティフェン) [JA] • freee さんの勉強会 freee Tech Night 「モバイルアプリのアクセシビリティの問題はチームで解決!」 秋だ!モバイルアプリもアクセシビリティーやっていこう! --freeeのモバイルチェッックリストの紹介-- 103