ユーザのためだけじゃない!エンジニアも嬉しいアクセシビリティ改善のための自動テスト
by
Tomoya Kashifuku
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ユーザのためだけじゃない! エンジニアも嬉しいアクセシビリティ改善のための自動テスト 2024年9月12日 Design Dontaku vol 4 株式会社マネーフォワード 樫福智哉
Slide 2
Slide 2 text
自己紹介 カシフクトモヤ 樫福智哉 𝕏: @cashfooooou 株式会社マネーフォワード “マネーフォワードクラウド経費”を作ってます 最近、ウクレレの練習を始めました 自撮り
Slide 3
Slide 3 text
デザイン面、実装面のアクセシビリティ アクセシビリティはデザインと実装の両輪で向上する デザイン 実装 ● コントラスト ● フォント ● 配置 ● キーボード操作 ● 支援技術 ● ユーザ設定の反映 (フォントサイズ、ダークテーマ)
Slide 4
Slide 4 text
アクセシビリティ改善は二の次? 実装が終わったあとにアクセシビリティの改善をしようとすると難しい すでに機能が完成している(ように感じる)ので、リリースされてしまう Tabキーでフォーカスできないから 直してほしいんだけど リリースが迫ってるので無理です マウスでなら問題なく使えますよ! div を使って実装されたボタン
Slide 5
Slide 5 text
アクセシビリティ改善は工程の後ろに回したくない 開発プロセスの終わりに予定を組むと、その通りには実施されない リリース デザイン 実装 アクセシビリティ改善 QAプロセス 予定 リリース 現実
Slide 6
Slide 6 text
アクセシビリティ改善は開発プロセスのもっと前に組み込める 改善は「しなきゃいけないもの」から「した方がやりやすい」になる アクセシビリティ改善をもっと前へ! リリース デザイン 実装 アクセシビリティ改善 QAプロセス これまで リリース デザイン アクセシビリティの 高い実装 これから QAプロセス
Slide 7
Slide 7 text
アクセシビリティを使った自動テスト フロントエンドのテストツールはアクセシビリティを活用するものが多い ● Testing Library ● Playwright 導入が楽な Playwright の活用方法を中心に紹介
Slide 8
Slide 8 text
Playwright の紹介 ● End to End (E2E) テストのツール ● ユーザの動作を再現しページが正しく動作していることをテストする
Slide 9
Slide 9 text
Playwright の紹介 ● End to End (E2E) テストのツール ● ユーザの動作を再現しページが正しく動作していることをテストする 該当のページにアクセスして
Slide 10
Slide 10 text
Playwright の紹介 ● End to End (E2E) テストのツール ● ユーザの動作を再現しページが正しく動作していることをテストする 「送信」という名前のボタンを見つ けてクリックし
Slide 11
Slide 11 text
Playwright の紹介 ● End to End (E2E) テストのツール ● ユーザの動作を再現しページが正しく動作していることをテストする 「送信しました」と表示される ことを確認する
Slide 12
Slide 12 text
テストがアクセシビリティ改善につながる理由 “いい実装” をしないとテストが通らない (例)buttonタグを使うとテストで要素にアクセスできる ❌ ✅
Slide 13
Slide 13 text
“いい実装” をするとアクセシビリティが高くなる ブラウザは “いい実装” をするといい機能を提供するように作られてる テストがアクセシビリティ改善につながる理由 ● Tabキーでフォーカスできる ● Enter/Space キーで実行できる ● disabled 属性だけで非活性にできる ● 支援技術が「ボタンである」と解釈できる ● どれもできない
Slide 14
Slide 14 text
テストがアクセシビリティ改善につながる理由 div タグを使って 実装できなくはないが... (React での実装) ● 自前実装をテストするのが大変 ● 全てのブラウザで動作するか 確 認するのは不可能 ● 想定してない使い方があるかも
Slide 15
Slide 15 text
テストがアクセシビリティ改善につながる理由 ● “いい実装” をしないとテストが通らない ● “いい実装” をするとアクセシビリティが高くなる テストを実装することで “いい実装” を強制させられる その結果、アクセシビリティが高くなる
Slide 16
Slide 16 text
正しいマークアップはコンピュータが正しく解釈できる(マシンリーダブル ) いい実装はマシンリーダブル ✅ いい実装 いい解釈 アクセシブルな いい機能 人が理解しやすい いいテスト
Slide 17
Slide 17 text
正しいマークアップを使うには ● Markuplint や eslint-plugin-jsx-a11y に機械的に解決できることは任せる ● MDN を参照する
Slide 18
Slide 18 text
やりすぎには注意 テストを通すためにユーザが価値を感じづらい実装は本末転倒 ● role属性を付与してロールを書き換える ○ type属性の活用や他のタグで代替できないか確認 ● aria-disabled属性で非活性にする ○ disabled属性で代替できないか確認 ブラウザで実際の動作を確認してみる よくわからない場合は “短い実装” を目指すといいかも
Slide 19
Slide 19 text
まとめ ● テストを導入すると正しいマークアップをしたくなる ● マシンリーダブルな実装はアクセシビリティも高い傾向にある ● 無理にがんばりすぎず、簡潔でわかりやすい実装を心がける