# アクセシブルなウェブページの作成 ![アクセシビリティについて](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.ja.png) > スケッチノート: [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid journey title Your Accessibility Learning Adventure section Foundation Understanding Users: 5: You Testing Tools: 4: You POUR Principles: 5: You section Build Skills Semantic HTML: 4: You Visual Design: 5: You ARIA Techniques: 4: You section Master Practice Keyboard Navigation: 5: You Form Accessibility: 4: You Real-world Testing: 5: You ``` ## 講義前のクイズ [講義前のクイズ](https://ff-quizzes.netlify.app/web/) > ウェブの力はその普遍性にあります。障害の有無にかかわらず、誰もがアクセスできることが重要です。 > > \- Sir Timothy Berners-Lee, W3Cディレクター、ワールドワイドウェブの発明者 驚くかもしれませんが、アクセシブルなウェブサイトを作ることで、障害を持つ人々を助けるだけでなく、実はウェブ全体をより良くすることができます! 街角のスロープに気づいたことがありますか?もともとは車椅子のために設計されたものですが、今ではベビーカーを使う人や荷物を運ぶ配達員、旅行者、そして自転車利用者にも役立っています。アクセシブルなウェブデザインも同じような仕組みです。一つのグループを助けるための解決策が、結果的に全員に利益をもたらすことがよくあります。すごいですよね? このレッスンでは、どのようにしてすべての人にとって使いやすいウェブサイトを作るかを探ります。ウェブ標準に組み込まれている実用的な技術を学び、テストツールを使って実践し、アクセシビリティがすべてのユーザーにとってウェブサイトをより使いやすくする方法を理解します。 このレッスンが終わる頃には、アクセシビリティを開発ワークフローの自然な一部にする自信がつくでしょう。思慮深いデザインの選択が何十億ものユーザーにウェブを開く方法を探る準備はできましたか?さあ、始めましょう! ```mermaid mindmap root((Web Accessibility)) Users Screen readers Keyboard navigation Voice control Magnification Technologies HTML semantics ARIA attributes CSS focus indicators Keyboard events Benefits Wider audience Better SEO Legal compliance Universal design Testing Automated tools Manual testing User feedback Real assistive tech ``` > このレッスンは[Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)で受講できます! ## 支援技術を理解する コードを書く前に、さまざまな能力を持つ人々が実際にウェブをどのように体験しているかを理解してみましょう。これは単なる理論ではありません。これらの実際のナビゲーションパターンを理解することで、より良い開発者になることができます! 支援技術は、障害を持つ人々がウェブサイトとやり取りするのを助ける驚くべきツールです。これらの技術がどのように機能するかを理解すると、アクセシブルなウェブ体験を作ることがずっと直感的になります。まるで他の人の目を通してコードを見ることを学ぶようなものです。 ### スクリーンリーダー [スクリーンリーダー](https://en.wikipedia.org/wiki/Screen_reader)は、デジタルテキストを音声や点字出力に変換する高度な技術です。主に視覚障害者が使用しますが、学習障害(例: ディスレクシア)のあるユーザーにも非常に役立ちます。 スクリーンリーダーは、賢いナレーターが本を読んでくれるようなものだと考えています。論理的な順序で内容を音読し、「ボタン」や「リンク」といったインタラクティブな要素を知らせ、ページ内を移動するためのキーボードショートカットを提供します。しかし、スクリーンリーダーがその魔法を発揮するためには、適切な構造と意味のあるコンテンツでウェブサイトを構築する必要があります。それが開発者であるあなたの役割です! **プラットフォーム別の人気スクリーンリーダー:** - **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/)(無料で最も人気)、[JAWS](https://webaim.org/articles/jaws/)、[Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon)(内蔵) - **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10)(内蔵で非常に優れた機能) - **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677)(内蔵) - **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca)(無料でオープンソース) **スクリーンリーダーがウェブコンテンツをナビゲートする方法:** スクリーンリーダーは、経験豊富なユーザーが効率的にブラウジングできる複数のナビゲーション方法を提供します: - **順次読み取り**: 本を読むように上から下へ内容を読み取る - **ランドマークナビゲーション**: ページセクション間を移動(ヘッダー、ナビゲーション、メイン、フッター) - **見出しナビゲーション**: 見出し間をスキップしてページ構造を理解 - **リンクリスト**: すべてのリンクをリスト化して迅速にアクセス - **フォームコントロール**: 入力フィールドやボタン間を直接移動 > 💡 **驚きの事実**: スクリーンリーダー利用者の68%が主に見出しでナビゲートしています([WebAIM調査](https://webaim.org/projects/screenreadersurvey9/#finding))。つまり、見出し構造はユーザーにとって地図のようなものです。正しく設定することで、コンテンツをより早く見つけられるように助けることができます! ### テストワークフローの構築 良いニュースです—効果的なアクセシビリティテストは圧倒される必要はありません!自動化ツール(明らかな問題を見つけるのに優れています)といくつかの手動テストを組み合わせると良いでしょう。以下は、1日を費やすことなく最も多くの問題を見つける体系的なアプローチです: **基本的な手動テストワークフロー:** ```mermaid flowchart TD A[🚀 Start Testing] --> B{⌨️ Keyboard Navigation} B --> C[Tab through all interactive elements] C --> D{🎧 Screen Reader Testing} D --> E[Test with NVDA/VoiceOver] E --> F{🔍 Zoom Testing} F --> G[Zoom to 200% and test functionality] G --> H{🎨 Color/Contrast Check} H --> I[Verify all text meets contrast ratios] I --> J{👁️ Focus Management} J --> K[Ensure focus indicators are visible] K --> L[✅ Testing Complete] style A fill:#e3f2fd style L fill:#e8f5e8 style B fill:#fff3e0 style D fill:#f3e5f5 style F fill:#e0f2f1 style H fill:#fce4ec style J fill:#e8eaf6 ``` **ステップバイステップのテストチェックリスト:** 1. **キーボードナビゲーション**: Tab、Shift+Tab、Enter、Space、矢印キーのみを使用 2. **スクリーンリーダーテスト**: NVDA、VoiceOver、またはNarratorを有効にして目を閉じてナビゲート 3. **ズームテスト**: 200%および400%のズームレベルでテスト 4. **色のコントラスト確認**: すべてのテキストとUIコンポーネントをチェック 5. **フォーカスインジケーターテスト**: すべてのインタラクティブ要素に視覚的なフォーカス状態があることを確認 ✅ **Lighthouseから始める**: ブラウザのDevToolsを開き、Lighthouseアクセシビリティ監査を実行し、結果を手動テストの重点領域のガイドとして使用します。 ### ズームと拡大ツール スマホでテキストが小さすぎるときにピンチしてズームしたり、明るい日光の下でノートパソコンの画面を見ようとしたりしたことがありますか?多くのユーザーは、毎日コンテンツを読みやすくするために拡大ツールを利用しています。これには、低視力の人、高齢者、そして屋外でウェブサイトを読もうとしたことがあるすべての人が含まれます。 現代のズーム技術は、単にものを大きくするだけではありません。これらのツールがどのように機能するかを理解することで、どの拡大レベルでも機能的で魅力的なレスポンシブデザインを作成することができます。 **現代のブラウザズーム機能:** - **ページズーム**: すべてのコンテンツを比例的に拡大(テキスト、画像、レイアウト)—これが推奨される方法 - **テキストのみズーム**: 元のレイアウトを維持しながらフォントサイズを拡大 - **ピンチズーム**: 一時的な拡大のためのモバイルジェスチャーサポート - **ブラウザサポート**: すべての現代ブラウザは機能を損なうことなく500%までのズームをサポート **専門的な拡大ソフトウェア:** - **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198)(内蔵)、[ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/) - **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/)(内蔵で高度な機能) > ⚠️ **デザインの考慮事項**: WCAGは、コンテンツが200%にズームされても機能的であることを要求しています。このレベルでは、水平スクロールは最小限で、すべてのインタラクティブ要素がアクセス可能である必要があります。 ✅ **レスポンシブデザインをテストする**: ブラウザを200%および400%にズームします。レイアウトはうまく適応していますか?過剰なスクロールなしですべての機能にアクセスできますか? ## 現代のアクセシビリティテストツール 支援技術を使ったウェブのナビゲーション方法を理解したところで、アクセシブルなウェブサイトを構築しテストするためのツールを探ってみましょう。 こう考えてみてください: 自動化ツールは明らかな問題(例: altテキストの欠如)を見つけるのに優れていますが、手動テストは実際の使用感を確認するのに役立ちます。これらを組み合わせることで、すべての人にとって機能するウェブサイトを作る自信が得られます。 ### 色のコントラストテスト 良いニュースです: 色のコントラストは最も一般的なアクセシビリティ問題の一つですが、修正が最も簡単です。良いコントラストは、視覚障害者からビーチでスマホを読もうとする人まで、すべての人に利益をもたらします。 **WCAGのコントラスト要件:** | テキストタイプ | WCAG AA(最低限) | WCAG AAA(強化) | |----------------|-------------------|------------------| | **通常のテキスト**(18pt未満) | 4.5:1のコントラスト比 | 7:1のコントラスト比 | | **大きなテキスト**(18pt以上または14pt以上の太字) | 3:1のコントラスト比 | 4.5:1のコントラスト比 | | **UIコンポーネント**(ボタン、フォームの境界線) | 3:1のコントラスト比 | 3:1のコントラスト比 | **必須テストツール:** - [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - カラーピッカー付きデスクトップアプリ - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - 即時フィードバック付きウェブベース - [Stark](https://www.getstark.co/) - Figma、Sketch、Adobe XD用デザインツールプラグイン - [Accessible Colors](https://accessible-colors.com/) - アクセシブルなカラーパレットを見つける ✅ **より良いカラーパレットを作成する**: ブランドカラーから始め、コントラストチェッカーを使用してアクセシブルなバリエーションを作成します。これらをデザインシステムのアクセシブルカラートークンとして文書化します。 ### 包括的なアクセシビリティ監査 最も効果的なアクセシビリティテストは、複数のアプローチを組み合わせたものです。単一のツールではすべてをキャッチできないため、さまざまな方法でテストルーチンを構築することで、徹底的なカバーを確保します。 **ブラウザベースのテスト(DevToolsに内蔵):** - **Chrome/Edge**: Lighthouseアクセシビリティ監査 + アクセシビリティパネル - **Firefox**: 詳細なツリービュー付きアクセシビリティインスペクター - **Safari**: Web Inspectorの監査タブでVoiceOverシミュレーション **プロフェッショナルなテスト拡張機能:** - [axe DevTools](https://www.deque.com/axe/devtools/) - 業界標準の自動テスト - [WAVE](https://wave.webaim.org/extension/) - エラーを強調表示する視覚的フィードバック - [Accessibility Insights](https://accessibilityinsights.io/) - Microsoftの包括的なテストスイート **コマンドラインとCI/CD統合:** - [axe-core](https://github.com/dequelabs/axe-core) - 自動テスト用JavaScriptライブラリ - [Pa11y](https://pa11y.org/) - コマンドラインアクセシビリティテストツール - [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - 自動アクセシビリティスコアリング > 🎯 **テスト目標**: Lighthouseアクセシビリティスコア95以上を基準とします。自動化ツールはアクセシビリティ問題の約30-40%しかキャッチしないため、手動テストは依然として重要です! ### 🧠 **テストスキルチェック: 問題を見つける準備はできていますか?** **アクセシビリティテストについての感想を聞かせてください:** - 今のところ最も取り組みやすいテスト方法はどれですか? - キーボードのみのナビゲーションを1日中使うことを想像できますか? - オンラインで個人的に経験したアクセシビリティの障壁は何ですか? ```mermaid pie title "Accessibility Issues Caught by Different Methods" "Automated Tools" : 35 "Manual Testing" : 40 "User Feedback" : 25 ``` > **自信を持とう**: プロのアクセシビリティテスターはまさにこの方法を使用しています。あなたは業界標準の実践を学んでいます! ## 最初からアクセシビリティを構築する アクセシビリティの成功の鍵は、最初から基盤に組み込むことです。「後でアクセシビリティを追加しよう」と考えるのは魅力的ですが、それは家を建てた後にスロープを追加しようとするようなものです。可能ですか?はい。簡単ですか?あまり簡単ではありません。 アクセシビリティを家の設計のように考えてみてください—最初の建築計画に車椅子のアクセシビリティを含める方が、後で全てを改修するよりもはるかに簡単です。 ### POURの原則: アクセシビリティの基盤 ウェブコンテンツアクセシビリティガイドライン(WCAG)は、POURという4つの基本原則に基づいています。心配しないでください—これらは堅苦しい学術的な概念ではありません!実際には、すべての人に機能するコンテンツを作るための実用的なガイドラインです。 POURを理解すると、アクセシビリティの決定がはるかに直感的になります。それはデザインの選択を導くメンタルチェックリストのようなものです。詳しく見てみましょう: ```mermaid flowchart LR A[🔍 PERCEIVABLE
Can users sense it?] --> B[🎮 OPERABLE
Can users use it?] B --> C[📖 UNDERSTANDABLE
Can users get it?] C --> D[💪 ROBUST
Does it work everywhere?] A1[Alt text
Captions
Contrast] --> A B1[Keyboard access
No seizures
Time limits] --> B C1[Clear language
Predictable
Error help] --> C D1[Valid code
Compatible
Future-proof] --> D style A fill:#e1f5fe style B fill:#e8f5e8 style C fill:#fff3e0 style D fill:#f3e5f5 ``` **🔍 知覚可能**: 情報は利用可能な感覚を通じてユーザーが知覚できる方法で提示される必要があります - 非テキストコンテンツ(画像、動画、音声)にテキスト代替を提供する - すべてのテキストとUIコンポーネントに十分な色のコントラストを確保する - - **異なるブラウザ、デバイス、支援ツールでテストする** - **高度な機能がサポートされていない場合でもコンテンツが適切に表示されるように構造化する** ### 🎯 **POUR原則チェック: 基礎を固める** **基礎についての簡単な振り返り:** - 各POUR原則に失敗するウェブサイトの機能を思い浮かべられますか? - 開発者として、どの原則が最も自然に感じられますか? - これらの原則は、障害のあるユーザーだけでなく、すべての人のデザインをどのように改善するでしょうか? ```mermaid quadrantChart title POUR Principles Impact Matrix x-axis Low Effort --> High Effort y-axis Low Impact --> High Impact quadrant-1 Quick Wins quadrant-2 Major Projects quadrant-3 Consider Later quadrant-4 Strategic Focus Alt Text: [0.2, 0.9] Color Contrast: [0.3, 0.8] Semantic HTML: [0.4, 0.9] Keyboard Nav: [0.6, 0.8] ARIA Complex: [0.8, 0.7] Screen Reader Testing: [0.7, 0.6] ``` > **覚えておいてください**: 高い効果で低い労力の改善から始めましょう。セマンティックHTMLとaltテキストは、最小限の労力で最大のアクセシビリティ向上をもたらします! ## アクセシブルなビジュアルデザインの作成 良いビジュアルデザインとアクセシビリティは密接に関連しています。アクセシビリティを考慮してデザインすることで、これらの制約がよりクリーンでエレガントなソリューションを生み出し、すべてのユーザーに利益をもたらすことがよくあります。 視覚能力やコンテンツを閲覧する条件に関係なく、すべての人に対応する魅力的なデザインを作成する方法を探ってみましょう。 ### 色と視覚アクセシビリティ戦略 色はコミュニケーションにおいて強力ですが、重要な情報を伝える唯一の方法にしてはいけません。色を超えたデザインは、より堅牢で包括的な体験を生み出し、さまざまな状況で機能します。 **色覚の違いを考慮したデザイン:** 男性の約8%、女性の0.5%が何らかの色覚の違い(一般に「色覚異常」と呼ばれる)を持っています。最も一般的なタイプは以下の通りです: - **デューター異常**: 赤と緑の区別が困難 - **プロト異常**: 赤が暗く見える - **トリタン異常**: 青と黄色の区別が困難(稀) **包括的な色戦略:** ```css /* ❌ Bad: Using only color to indicate status */ .error { color: red; } .success { color: green; } /* ✅ Good: Color plus icons and context */ .error { color: #d32f2f; border-left: 4px solid #d32f2f; } .error::before { content: "⚠️"; margin-right: 8px; } .success { color: #2e7d32; border-left: 4px solid #2e7d32; } .success::before { content: "✅"; margin-right: 8px; } ``` **基本的なコントラスト要件を超えて:** - 色覚異常シミュレーターで色の選択をテストする - 色分けとともにパターン、テクスチャ、または形状を使用する - インタラクティブな状態が色なしでも区別可能であることを確認する - 高コントラストモードでデザインがどのように見えるかを考慮する ✅ **色のアクセシビリティをテストする**: [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/)のようなツールを使用して、異なる色覚のユーザーにとってサイトがどのように見えるかを確認してください。 ### フォーカスインジケーターとインタラクションデザイン フォーカスインジケーターはデジタル版のカーソルのようなもので、キーボードユーザーがページ上でどこにいるかを示します。よく設計されたフォーカスインジケーターは、インタラクションを明確で予測可能にすることで、すべての人の体験を向上させます。 **最新のフォーカスインジケーターのベストプラクティス:** ```css /* Enhanced focus styles that work across browsers */ button:focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25); } /* Remove focus outline for mouse users, preserve for keyboard users */ button:focus:not(:focus-visible) { outline: none; } /* Focus-within for complex components */ .card:focus-within { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5); border-color: #4A90A4; } /* Ensure focus indicators meet contrast requirements */ .custom-focus:focus-visible { outline: 3px solid #ffffff; outline-offset: 2px; box-shadow: 0 0 0 6px #000000; } ``` **フォーカスインジケーターの要件:** - **視認性**: 周囲の要素とのコントラスト比が少なくとも3:1であること - **幅**: 要素全体を囲む最小2pxの厚さ - **持続性**: フォーカスが他の場所に移動するまで表示され続けること - **区別性**: 他のUI状態と視覚的に異なること > 💡 **デザインのヒント**: 優れたフォーカスインジケーターは、アウトライン、ボックスシャドウ、色の変更を組み合わせて、異なる背景やコンテキストでの視認性を確保します。 ✅ **フォーカスインジケーターを監査する**: ウェブサイトをタブで移動し、どの要素が明確なフォーカスインジケーターを持っているかを確認してください。見づらいものや完全に欠けているものはありませんか? ### セマンティックHTML: アクセシビリティの基盤 セマンティックHTMLは、支援技術にウェブサイトのGPSシステムを提供するようなものです。HTML要素をその目的に合った形で使用することで、スクリーンリーダー、キーボード、その他のツールがユーザーの効果的なナビゲーションを支援する詳細なロードマップを提供します。 私にとってしっくりきた例えはこれです: セマンティックHTMLは、明確なカテゴリと役立つ案内がある整理された図書館と、本がランダムに散らばっている倉庫の違いです。どちらも同じ本を持っていますが、どちらで探したいと思いますか?そうですよね! ```mermaid flowchart TD A[🏠 HTML Document] --> B[📰 header] A --> C[🧭 nav] A --> D[📄 main] A --> E[📋 footer] B --> B1[h1: Site Name
Logo & branding] C --> C1[ul: Navigation
Primary links] D --> D1[article: Content
section: Subsections] D --> D2[aside: Sidebar
Related content] E --> E1[nav: Footer links
Copyright info] D1 --> D1a[h1: Page title
h2: Major sections
h3: Subsections] style A fill:#e3f2fd style B fill:#e8f5e8 style C fill:#fff3e0 style D fill:#f3e5f5 style E fill:#e0f2f1 ``` **アクセシブルなページ構造の構築ブロック:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

``` **セマンティックHTMLがアクセシビリティを変える理由:** | セマンティック要素 | 目的 | スクリーンリーダーの利点 | |------------------|---------|----------------------| | `
` | ページまたはセクションのヘッダー | 「バナーランドマーク」 - トップへの迅速なナビゲーション | | `