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

二歩目のフロントエンド・ウェブアクセシビリティ

 二歩目のフロントエンド・ウェブアクセシビリティ

Avatar for KAMIHARA Takumi

KAMIHARA Takumi

October 12, 2026

More Decks by KAMIHARA Takumi

Other Decks in Technology

Transcript

  1. 自己紹介 • 神原 拓海(かみはら たくみ) • GitHub: @camiha X: @_camiha

    • 所属 • 株式会社アンティー・ファクトリー • フロントエンドエンジニア • アクセシビリティスペシャリスト • 好きなこと • 自作キーボード、自作3Dプリンタ、 温泉、料理、音楽 2 / 64
  2. スクリーンリーダーとは • 視力がない・ほとんどない場合、画面の内容を把握できない • 画面の内容を、音声で読み上げて伝える必要がある • スクリーンリーダーを利用して、音声読み上げができる • PC-Talker, NVDA,

    VoiceOver, TalkBack • 日本であれば、PC-Talker ユーザーが多い • 第4回支援技術利用状況調査報告書 | 日本視覚障害者ICTネットワーク • https://jbict.net/survey/at-survey-04 8 / 64
  3. ヘッドレスライブラリでの、ドキュメント内言及 • Accessibility – Radix Primitives • Ultimately it's up

    to you to provide those labels so that users have the proper context when navigating your application. • 正しく操作できるラベルを提供するのは、開発者の役割 10 / 64
  4. レビューで指摘したことの一例 • SPA で画面遷移した際、ページタイトルが更新されない • 遷移したことが支援技術に伝わらない • リンクを button 要素で実装している

    • リンク一覧表示ができない • 右クリックで、リンクに応じたメニューが表示できない • aria-label で可視テキストを上書きする • 表示されている文言と、支援技術に伝わる文言が異なるケース • 音声コントロールでの操作に手間 16 / 64
  5. なるほど、じゃあ 生成 AI は? • 適切に ARIA を使って、名前をつけるのは生成 AI で出来るんじゃないか?

    • どの分野でも言われることですが • 学んだことが使えなくなっていくのは不安がある • その分野が取って代わられるのは心配 19 / 64
  6. 生成 AI とウェブアクセシビリティ • WebAIM: The WebAIM Million - The

    2026 report on the accessibility of the top 1,000,000 home pages • 人気ランキング(Tranco List)上位100万サイトを自動診断(WAVE) • 95.9% のページで WCAG 違反を検出 • 前年の調査から、ページあたりの平均エラー数は増加している • ARIA 属性を利用したコードは前年から増えている(1年で27%増加) • ARIA 属性を使っていないページより、使ってるページは平均エラー数が多い • 要因の一つに、Vibe coding があるのではないか、と締めくくっている 20 / 64
  7. 生成 AI とウェブアクセシビリティ • AIMAC: The AI Model Accessibility Checker

    • アクセシビリティの指示なしで、AI モデルにウェブページを生成 • axe-core による WCAG 2.2 の自動チェックをさせ、スコア化 • 日々改善されているが、問題は 0 になっていない • A11y LLM Eval Report • スキルを使うと品質は向上した • 完全には解決しない 21 / 64
  8. WCAG とは • Web Content Accessibility Guidelines • ウェブコンテンツのアクセシビリティに関する、国際的なガイドライン •

    現在のバージョンは WCAG 2.2 • 達成基準と呼ばれる、検証可能な項目がある • A, AA, AAA のレベル • レベル AA を目標にしていることが多い • 適合したからといって「すべての人が使える」わけではない • 「一人でも多くの人が使える」ようになることは確か 22 / 64
  9. 生成 AI とウェブアクセシビリティ • Screen Reader User Survey #11 Results

    • スクリーンリーダーユーザーの60.1%が、AI で画像の説明を生成 • Beyond Alt Text: Rethinking Visual Description in the Age of AI • 生成 AI が提供する画像説明が、ニーズを満たせてはいない • 説明に誤りがあるケース • 「〜が含まれる可能性があります」のような説明 • 周囲の文脈を踏まえて説明できていない • あくまでも補助的に活用し、人間が作成したものを優先すべき 23 / 64
  10. ここまでの整理(2) • 自動チェックの通過は、問題がないことの保証にはならない • WCAG の一部、機械的に判断できるところだけ • AI によるレビューも同様 •

    WCAG を満たしたから OK、ではない • AI にアクセシビリティの担保を求めるプロンプトを書いても解決できない • アクセシビリティの担保を求めることと、実際にそうであるかの確認は別物 24 / 64
  11. そもそも、アクセシビリティとは • アクセシビリティとは | ウェブアクセシビリティ基盤委員会(WAIC) • アクセスのしやすさ • 転じて、製品やサービスの利用しやすさ •

    さまざまな利用者が、さまざまなデバイスを使い、さまざまな状況でウェ ブを使うようになった今、あらゆるウェブコンテンツにとって、ウェブア クセシビリティは必要不可欠な品質 29 / 64
  12. 一時的な障害の例 • 文字のサイズが変更できる • メガネを忘れた時でも役に立つ • 動画に字幕があること • 聴覚に障害がある場合 •

    イヤホンを忘れた電車の中 • 大きいボタン • 手に震えがある • バスの中で振動が大きい 39 / 64
  13. グラデーションのようにとらえるアプローチ • ペルソナ・スペクトラム • Inclusive 101 - Microsoft Inclusive Design

    • ペルソナスペクトラムツール - パナソニックホールディングス • 身の回りの課題から、その先に何があるのか、というのを考える機会に • もちろん、全ての障害がグラデーションのように当てはまるとは思わない • この枠に当てはまらないものを排除する、という考えではない点に注意 40 / 64
  14. 私の話 • 色覚異常がある • 日本人男性の5% 日本人女性の0.2%(出典:公益社団法人 日本眼科医会) • 生まれつき、赤い色の区別が難しい(1型3色覚) •

    日常生活 • お肉焼けたか、わからないのは結構困ってる • エンジニアを初めてすぐの頃 • 「赤い文字にする」というデザインを反映できていなかった 42 / 64
  15. 問題のある例 • フォーム • 「赤字項目にエラーがあります」 • 色の判別ができないとエラーが分からない • 少し違うなーという手がかりから判別 •

    辛い • 赤字を使うのが NG というわけじゃない • 赤字のみでエラーを伝えているのが問題 • テキストを併記する 43 / 64
  16. 支援技術の使い方を学んで、操作してみる • スクリーンリーダーを操作してみる • #2 西本 卓也&辻 勝利「スクリーンリーダーは怖くない! NVDA &

    VoiceOver 10の基本テクニック」【GAAD Japan 2021】 • フットワーク軽く起動して、実装コードを検証するスキルは役立っている • 実際の使われ方を知ることも大事 49 / 64
  17. 支援技術の使い方を学んで、操作してみる • 音声読み上げが全てではないことも念頭におく • 他の支援技術で使いにくくなってしまうことも • スクリーンリーダーでの読み上げを改善する過程で、過剰に情報を詰め込ん でしまうケース • aria-label

    を頑張って書きすぎる • 視覚的に表示されているものより、スクリーンリーダーに伝わる情報の方 が多かった、なんてことも • アクセシビリティの目的を思い出して、振り返る 50 / 64
  18. ウェブアクセシビリティ試験をしてみる • ウェブページやアプリケーションが WCAG の達成基準を満たしているか確認 • 自動テスト • 手動テスト(目視・スクリーンリーダーで閲覧) •

    項目ごとに満たしているか、そうでないかを確認していく • レポートにまとめる • 私はこれで学んだところも多い • とはいえ、業務で試験できる環境が全てではない 51 / 64
  19. 試験を始めやすい形に分解してみる • 厳密にやるのはそこそこ大変 • 試験というボリュームを分解してみる • コンポーネント単位でのアクセシビリティレビューをしてみる • Storybook でコンポーネントを開き、スクリーンリーダーで操作

    • WCAG を読みながら評価していく • アクセシビリティ・ガイドラインの歩き方(初心者編) • Ameba Accessibility Guidelines • AI レビューは内容をしっかり確認できて、過不足を指摘できるのであれば 52 / 64
  20. コンポーネント単位で試験・改善してみる • ホバーした時、色が薄くなる • 達成基準 1.4.3 コントラスト (最低限) • 達成基準

    1.4.11 非テキストのコントラスト • ターゲットサイズが小さい • 達成基準 2.5.8 ターゲットのサイズ (最低限) • 達成基準 2.5.5 ターゲットのサイズ (高度) 53 / 64
  21. 確認する範囲を広げていく • そこからページ単位に • Storybook 単体で見た H3 • ページにしたら情報構造が壊れている •

    モバイルだけアコーディオンになるケースでよく指摘する • ランドマークが多すぎてスクリーンリーダーでジャンプしにくい • スクリーンリーダーを使ってみると、気付ける観点 • API 接続してわかることもある • エラーメッセージ、認証、制限時間 54 / 64
  22. ピックアップ:デジタル庁デザインシステムβ版 • テキストエリア • 文字数が上限を超えたとき、 エラーを表示する • ペーストした後に編集したい時 • 文字超過分が欠けてしまい、

    手間取る時がある • 切り取らずに、エラーを表示し て修正の提案 出典:デジタル庁デザインシステムβ版 (https://design.digital.go.jp/dads/components/textarea/) 56 / 64
  23. ピックアップ:GOV.UK Design System • Text input – GOV.UK Design System

    • <input type="number"> • ユーザー調査で必要性が確認されない限り使用しない • スピンボタンが出現する • スクロール時に誤って編集してしまう場合 • 対処法 • <input type="text" inputmode="numeric"> • スマホで数字のキーパッドを出現させるように 57 / 64 スクリーンショット:スピンボタンの例
  24. ピックアップ:GitHub's Primer Design System • Tooltip | Primer • デフォルトでは非表示なので、最終手

    段として利用する • Tooltip が引き起こす問題や、代替案 を解説している • Accessible noti cations and messages • トーストの利用は非推奨 fi 58 / 64 スクリーンショット:GitHub の Dashboard で、メニューボタン にホバーすることで、「Open menu」と記載されたツールチップ が表示されている