# アクセシブルなウェブページの作成 ![アクセシビリティについて](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.ja.png) > スケッチノート: [Tomomi Imura](https://twitter.com/girlie_mac) ## 講義前クイズ [講義前クイズ](https://ff-quizzes.netlify.app/web/) > ウェブの力はその普遍性にあります。障害の有無にかかわらず、誰もがアクセスできることが重要な側面です。 > > \- ティム・バーナーズ=リー卿、W3Cディレクター、ワールド・ワイド・ウェブの発明者 驚くかもしれませんが、アクセシブルなウェブサイトを作ることで、障害を持つ人々を助けるだけでなく、実際にはすべての人にとってウェブをより良いものにすることができます! 街角のスロープを見たことがありますか? もともとは車椅子のために設計されたものですが、今ではベビーカーを使う人や、荷物を運ぶ配達員、キャリーバッグを持つ旅行者、自転車利用者など、さまざまな人々に役立っています。アクセシブルなウェブデザインも同じです。特定のグループを助けるための解決策が、結果的にすべての人に利益をもたらすことがよくあります。すごいですよね? このレッスンでは、どのようにしてすべての人が利用できるウェブサイトを作成するかを探求します。ウェブ標準にすでに組み込まれている実用的な技術を学び、テストツールを使って実践し、アクセシビリティがすべてのユーザーにとってウェブサイトをどれだけ使いやすくするかを確認します。 このレッスンを終える頃には、アクセシビリティを開発ワークフローの自然な一部にする自信がつくでしょう。思慮深いデザインの選択が、何十億ものユーザーにウェブを開放する方法を探求する準備はできましたか? それでは始めましょう! > このレッスンは [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 graph 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] ``` **ステップバイステップのテストチェックリスト:** 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テキストの欠如)を見つけるのに優れていますが、実際の使用感を確認するためには手動テストが必要です。これらを組み合わせることで、すべての人にとって機能するウェブサイトを作成する自信が得られます。 ### 色のコントラストテスト 良いニュースです: 色のコントラストは最も一般的なアクセシビリティの問題の1つですが、修正が最も簡単な問題でもあります。良いコントラストは、視覚障害を持つユーザーからビーチでスマホを読もうとする人まで、すべての人に利益をもたらします。 **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%しか検出できないことを忘れないでください—手動テストは依然として重要です! ## 基礎からアクセシビリティを構築する アクセシビリティの成功の鍵は、最初から基礎に組み込むことです。「後でアクセシビリティを追加しよう」と考えるのは魅力的ですが、それは家を建てた後にスロープを追加しようとするようなものです。可能ではありますが、簡単ではありません。 アクセシビリティを家の設計と考えてみてください—最初の建築計画に車椅子対応を含める方が、後で全てを改修するよりもはるかに簡単です。 ### POUR原則: アクセシビリティの基盤 ウェブコンテンツアクセシビリティガイドライン(WCAG)は、POURという4つの基本原則に基づいています。心配しないでください—これらは堅苦しい学術的な概念ではありません! 実際には、すべての人が利用できるコンテンツを作成するための実用的なガイドラインです。 POURを理解すれば、アクセシビリティに関する意思決定がはるかに直感的になります。それは、デザインの選択を導くための心の中のチェックリストのようなものです。それでは、分解してみましょう: **🔍 知覚可能(Perceivable)**: 情報は、ユーザーが利用可能な感覚を通じて知覚できる方法で提示されなければなりません - 非テキストコンテンツ(画像、動画、音声)にテキスト代替を提供する - すべてのテキストとUIコンポーネントに十分な色のコントラストを確保する - マルチメディアコンテンツにキャプションやトランスクリプトを提供する - コンテンツが200%まで拡大しても機能するように設計する - 情報を伝えるため 色はコミュニケーションにおいて強力なツールですが、重要な情報を伝える方法として色だけに頼るべきではありません。色を超えたデザインは、より堅牢で包括的な体験を提供し、さまざまな状況で機能します。 **色覚の違いを考慮したデザイン:** 男性の約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は、明確なカテゴリと役立つ案内がある整理された図書館と、本がランダムに散らばっている倉庫の違いのようなものです。どちらも同じ本があるけれど、どちらで探したいと思いますか?その通りです! **アクセシブルなページ構造の構成要素:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

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