mcpField
I
include

include

github.com/ghaidaデザイン・UI2292.8k 回インストール今日更新
リポジトリ

include について

includeは、WCAGの指針を実践的な画面設計に落とし込むデザイナー向けのアクセシビリティスキルです。スクリーンリーダー体験、キーボード操作、コントラスト、タッチターゲット、支援技術によるテストを扱います。

主な機能

  1. 01WCAG 2.2を設計ガイダンスに変換
  2. 02スクリーンリーダーの読み上げ順とランドマークの計画
  3. 03キーボード操作とフォーカス管理の確認
  4. 04コントラスト、テキスト代替、タッチターゲットの評価
  5. 05支援技術を使った手動テストの計画

活用シーン

  1. 01アクセシビリティレビューやWCAGチェックの実施
  2. 02キーボードとスクリーンリーダーの操作フロー設計
  3. 03フォームラベル、エラー文、色の使い方の確認
  4. 04支援技術を使う手動テスト項目の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ghaida/intent --skill include

インストール後、Claude Code で/includeを入力して読み込まれたか確認します。

詳細

インクルージョン — すべての人のためのデザイン

概要

アクセシビリティは機能ではありません。ひとつの工程でもありません。デザインが「完成」した後に「追加」するものでもありません。能力、デバイス、状況、文脈にかかわらず、すべての人が作られたものを使えるようにするデザインの専門領域です。

世界では10億人が障害を抱えています。この数字だけでも、アクセシビリティが重要かどうかを議論する余地はありません。しかし、アクセシビリティは永続的な障害だけに関わるものではありません。人が経験するさまざまな状況を考慮することでもあります。片腕で赤ちゃんを抱き、もう片方の手でスマートフォンを使う親。直射日光の下で画面を読む通勤者。騒がしいカフェにいて音声を再生できないユーザー。眼科手術から回復中の人。5年前と同じようには目が見えなくなった年配の経営者。複数の手順があるフォームに集中しようとするADHDのある10代の若者。

誰もが状況的または一時的な機能低下を経験します。アクセシビリティを考慮したデザインは、「配慮が必要な」人だけでなく、こうしたすべての人にとって使いやすい体験を生み出します。歩道の縁石切り下げは車いす利用者のために設計されましたが、ベビーカーやスーツケース、配達用カート、自転車を利用する人も使っています。優れたアクセシブルなデザインも同じように役立ちます。

このスキルでは、アクセシビリティをコンプライアンス上の負担ではなく、デザインの品質として捉えます。ただし、法的な現実を避けては通りません。多くの法域でWCAGへの準拠が法的に義務付けられています(米国のADA、欧州アクセシビリティ法、政府機関向けのセクション508、世界各地の同様の法律など)。アクセシビリティを無視することは、デザイン上の失敗であると同時に、法的リスクでもあります。

このスキルを有効にするタイミング: アクセシビリティ監査、インクルーシブデザインのレビュー、WCAG準拠の確認、スクリーンリーダーのテストに関するガイダンス、キーボード操作の設計、色のコントラスト評価、タッチターゲットのレビュー、または「誰もが使えるか?」という問いが生じるあらゆる場面。

スキルファミリー

Include は、Intent のスキルシステム全体と連携します。アクセシビリティはあらゆることに関わります。すべてのスキルが生み出す成果物は、アクセシブルでなければなりません。

  • /journey — フローは、マウスやタッチだけでなく、キーボードのみを使うユーザー、スクリーンリーダーを使うユーザー、スイッチアクセスを使うユーザー、音声コントロールを使うユーザーにも機能する必要があります。/journey が設計するすべてのフローについて、入力方法に依存しないかを確認します。ドラッグ&ドロップ操作を設計した場合は、キーボードでの代替手段があることを確認します。ジェスチャーベースのモバイルフローを設計した場合は、シングルポインターで操作できる代替手段があることを確認します。

  • /articulate — 明確な文章は、アクセシブルな文章でもあります。平易な言葉、短い文、意味の伝わるリンクテキスト(「こちらをクリック」ではなく「アクセシビリティレポートを読む」)、説明的な見出し、入力内容を伝えるラベルが重要です。コピーの作成は/articulateが担当し、アクセシビリティを高める要素についてはあなたが助言します。

  • /organize — ナビゲーション構造は、支援技術が解析できるものでなければなりません。ランドマーク(ヘッダー、ナビゲーション、メイン、フッター)、見出しの階層(レベルを飛ばさないH1からH6まで)、スキップリンク、パンくずリストは、アクセシビリティに直接関わる情報アーキテクチャ上の判断です。/organizeが情報アーキテクチャを設計する際は、スクリーンリーダーで理解しやすい体験につながることを確認します。

  • /fortify — エッジケースへの対策は、アクセシビリティと重なる部分があります。遅い接続、小さな画面、片手での操作、極端に長いコンテンツを考慮した設計は、レジリエンスの向上であると同時に、インクルーシブデザインでもあります。重複を避けるために連携しましょう。アクセシビリティの方法論はあなたが担当し、状態やストレステストの方法論は相手が担当します。

  • /evaluate — アクセシビリティ評価は、すべてのUX評価の一部です。/evaluateがヒューリスティック評価を行う際、複数のヒューリスティックでアクセシビリティ違反が明らかになります。あなたの詳細なアクセシビリティの方法論は、相手の評価フレームワークに活用されます。アクセシビリティ関連カテゴリーの指摘は、あなたに引き継がれます。

  • /specify — スクリーンリーダーでの操作フローのドキュメント、キーボードナビゲーションのマップ、修正計画は、引き継ぎパッケージに含めます。ARIAロール、キーボード操作パターン、フォーカス管理の動作、スクリーンリーダーへの通知は、あれば望ましい注釈ではありません。ビルダーがそれをもとに構築するため、成果物に含め、パッケージのエントリーページから参照できるようにします。

  • /blueprint — システムアーキテクチャはアクセシビリティに影響します。通知システムにはARIAライブリージョンが必要です。リアルタイム更新には、配慮した通知が必要です。無限スクロールには、代替ナビゲーションが必要です。/blueprintがシステムを設計する際は、アーキテクチャ上の判断がアクセシビリティを損なう箇所や、向上させる箇所を指摘します。

  • /philosopher — 「これまで考えもしなかった、排除されている人は誰でしょうか?」哲学者は、「すべての人」という定義に含まれる前提を明らかにする手助けをします。想定していないユーザーグループ、考慮していない利用状況、インクルーシブデザインでありながら取り残す可能性のある人々について考えます。


主な機能

1. デザイナーのためのWCAG 2.2

ウェブコンテンツアクセシビリティガイドライン(WCAG)は、アクセシビリティに関する共通の用語と最低基準を定めています。しかし、WCAGは適合性のテスト向けに書かれており、デザイン上の意思決定向けではありません。このセクションでは、WCAGの4つの原則を、実践的なデザインガイダンスに置き換えて説明します。

知覚可能 — すべてのユーザーが情報を知覚できますか?

色のコントラスト:通常のテキストでは最低4.5:1、大きなテキスト(18pt以上、または14pt以上の太字)とUIコンポーネントでは3:1の比率が必要です。ライトモードとダークモードの両方でコントラストを確認します。理論上の背景ではなく、実際の背景に対して確認します。テキストが画像の上に表示される場合は、最もコントラストが低くなる状況を考慮する必要があります。

テキストによる代替:意味のある画像には、その画像が伝える情報と同じ情報を伝える代替テキストが必要です。装飾画像には空のalt属性(alt="")を指定し、スクリーンリーダーが読み飛ばせるようにします。複雑な画像(グラフ、図解、インフォグラフィック)には、短い代替テキストと、より詳しい説明の両方が必要です。アクションに使うアイコンには、アクセシブルな名前が必要です。 メディア:動画には字幕が必要です(自動生成された字幕は完成品ではなく、あくまで出発点です)。音声コンテンツには文字起こしが必要です。アニメーションには一時停止コントロールが必要です。音声付きで自動再生するコンテンツがあってはなりません。

色に依存しないこと:色だけで情報を伝えてはいけません。赤と緑のステータスインジケーターは、色覚異常のある男性の8%には見分けられません。形、アイコン、ラベル、またはパターンを追加してください。「必須項目は赤色で示します」では不十分ですが、「必須項目はアスタリスク(*)で示します」なら問題ありません。

リフロー:データテーブルのように二次元レイアウトが必要なコンテンツを除き、コンテンツは400%のズームでも横スクロールなしでビューポートに収まるようにリフローする必要があります。ブラウザーの幅を320pxに設定してテストしてください。コンテンツが切れたり重なったりする場合、デザインに問題があります。

操作可能 — すべてのユーザーがインターフェイスを操作できますか?

キーボードで操作できること:すべてのインタラクティブ要素に、キーボードだけで移動して操作できる必要があります。Tabキーで移動します。EnterキーまたはSpaceキーで実行します。複合ウィジェット内では矢印キーを使います。Escapeキーで閉じます。代替手段なしに、マウスのホバー、右クリック、複数の指を使ったジェスチャーを必要とする操作があってはなりません。

キーボードトラップがないこと:Tabキーで常にページ内を前方に移動でき(Shift+Tabキーでは後方に移動でき)、モーダルダイアログ内だけが許容されるフォーカストラップです。そのモーダルはEscapeキーで閉じられなければなりません。

時間制限:セッションタイムアウトや時間制限のある操作がある場合、ユーザーは制限時間を延長する、無効にする、または期限切れの少なくとも20秒前に警告を受けることができなければなりません。例外は、時間制限が不可欠なリアルタイムイベント(オークション、試験)です。

発作を引き起こさないこと:1秒間に3回を超えて点滅するものがあってはなりません。これは任意ではなく、医療上の安全に関わる問題です。動画コンテンツ、アニメーションイラスト、トランジション効果に適用されます。

タッチターゲット:WCAG 2.2に基づく最小サイズはCSSピクセルで24x24です。主要な操作には44x44pxを推奨します。隣接するターゲット間には最低8pxの間隔を空けてください。これらの最小値は、運動機能に障害のある人、片手でスマートフォンを使う人、指が大きい人、移動中の乗り物にいる人を考慮したものです。

ナビゲーションをスキップすること:すべてのページで、フォーカス可能な最初の要素として「メインコンテンツにスキップ」というリンクを設けてください。スクリーンリーダーやキーボードを使うユーザーが、コンテンツにたどり着くためにナビゲーション全体をTabキーで移動する必要があってはなりません。

理解可能 — すべてのユーザーがコンテンツとインターフェイスを理解できますか?

読みやすさ:対象読者に合わせて書いてください。一般消費者向け製品では、中学2年生程度の読解レベルを目標にしてください。専門ツールでは、より高いレベルを目標にしてもかまいませんが、説明やエラーメッセージは可能な限り簡潔にしてください。短い文を使い、専門用語を避けてください。技術用語は初出時に定義してください。

一貫したナビゲーション:ナビゲーションは、すべてのページで同じ場所に同じ順序で表示してください。ユーザーは各要素の場所を頭の中で把握するようになります。ページごとにナビゲーションの位置を変えると、その把握が崩れ、認知障害のあるユーザーは特に戸惑います。

予測可能な操作:リンクをクリックすると、ページが遷移するべきです。ドロップダウンを変更しても、フォームを自動送信してはいけません。ホバーによって取り消せない操作が実行されてはいけません。予期しないコンテキストの変化を避け、ユーザーが常に操作を把握できるようにしてください。

入力支援:すべてのフォーム入力には、目に見えるラベルが必要です(プレースホルダーテキストだけでは不十分です。プレースホルダーはフォーカスすると消えるためです)。必須項目は送信前に示さなければなりません。エラーメッセージでは、該当するフィールドと問題を特定してください。フィールド名だけでなく、「MM/DD/YYYY」のように入力形式の例を示してください。

堅牢 — 現在および将来の支援技術でも動作しますか?

有効なHTML構造:セマンティックHTMLが基盤です。ボタンにはbutton、リンクにはa、見出しには見出し要素、リストにはリスト要素を使ってください。セマンティックHTMLを使えば、追加の対応なしに、支援技術へ構造と目的を伝えられます。 ARIA を正しく使う:ARIA(Accessible Rich Internet Applications)は HTML のセマンティクスを補完するものであり、置き換えるものではありません。ARIA の第一の原則は、ネイティブの HTML 要素で同じことができる場合は ARIA を使わないことです。第二の原則は、誤った ARIA は ARIA を使わない場合よりも悪いということです。Enter キーや Space キーの押下に対応していない role="button" を持つ div は、role のない div よりも悪いものです。スクリーンリーダーにはボタンだと伝えるのに、ボタンのようには動作しないからです。

実際の支援技術を使ったテスト:自動化ツールで検出できるアクセシビリティの問題は約 30%です。残る 70%、つまり不合理な読み上げ順序、わかりにくい操作パターン、コンテキストの欠如、不適切なフォーカス管理などを見つけるには、実際の支援技術を使った手動テストが必要です。

2. スクリーンリーダー体験の設計

スクリーンリーダーのアクセシビリティは、画像に代替テキストを追加するだけのものではありません。インターフェースにおける視覚に頼らない体験全体を設計することです。

読み上げ順序。 DOM の順序は視覚的な順序と一致していますか? CSS の flexbox の order、絶対位置指定、グリッドレイアウトによって、視覚的な順序と読み上げ順序が異なる場合があります。スクリーンリーダーは DOM の順序で読み上げます。最も重要なコンテンツが視覚的には先頭にあるのに DOM では末尾にある場合、スクリーンリーダーのユーザーはそれを最後に読み上げられます。

ランドマーク。 スクリーンリーダーのユーザーは、header、nav、main、complementary(サイドバー)、contentinfo(フッター)などのランドマークを使って移動します。適切なランドマークがあるページなら、スクリーンリーダーのユーザーはナビゲーション、メインコンテンツ、フッターに直接移動できます。ランドマークのないページでは、上から下へ順に読み進める必要があります。各ページには main ランドマークを 1 つだけ設けてください。ナビゲーションには nav 要素を使ってください(複数あっても問題ありません。aria-label で「Primary navigation」や「Footer navigation」のように名前を付けてください)。

見出しの階層。 スクリーンリーダーのユーザーは、ほかのどの方法よりも見出しを使って移動します。ページタイトルには H1、主要なセクションには H2、その中の小見出しには H3 を使います。レベルを飛ばさないでください(H2 を使わずに H1 から H3 に進まないでください)。視覚的なスタイルを適用するために見出し要素を使わないでください。見出しのように見えても構造上の見出しではない場合は、CSS を使ってください。構造上の見出しである場合は、どのような見た目にしたいかにかかわらず、見出し要素を使ってください。

ライブリージョン。 ページを再読み込みせずに更新される動的コンテンツ(通知、チャットメッセージ、フォームの入力検証メッセージ、自動更新データ、進捗インジケーターなど)には、aria-live リージョンが必要です。ユーザーが操作していないときまで待てる更新(新しいチャットメッセージ、株価など)には、aria-live="polite" を使ってください。ユーザーの操作を中断してでも知らせるべき緊急の更新(エラーメッセージ、重大なアラートなど)に限り、aria-live="assertive" を使ってください。assertive を使いすぎると、スクリーンリーダーがあらゆるものを中断するため、非常に使いにくくなります。

フォームのラベル付け。 すべての入力には、プログラムで認識できるラベルが必要です。input の ID を指す for 属性を持つ label 要素、aria-label、または aria-labelledby を使ってください。プレースホルダーテキストはラベルではありません。関連する入力(ラジオボタンやチェックボックスなど)のグループは、グループ名を示す legend 要素を含む fieldset で囲む必要があります。住所、市区町村、州、郵便番号のフィールドを囲む legend に「配送先住所」と記載すれば、スクリーンリーダーのユーザーに必要なコンテキストを伝えられます。

状態の伝達。 インタラクティブな要素は現在の状態を伝える必要があります。展開/折りたたみ(aria-expanded)、選択/未選択(aria-selected)、チェック済み/未チェック(aria-checked)、現在のページ(aria-current="page")、無効状態(aria-disabled または disabled 属性)などです。状態が伝わらなければ、スクリーンリーダーのユーザーはトグルをクリックしても、何かをオンにしたのかオフにしたのかわかりません。

非表示のコンテンツ。 装飾画像には aria-hidden="true" または空の alt テキストを設定します。スクリーンリーダーのユーザーだけに見せるコンテンツ(アイコンだけのボタンに付ける説明的なラベルなど)には、コンテンツを DOM 内に残したまま画面上では見えなくする visually-hidden CSS クラスを使います。スクリーンリーダー専用のコンテンツに display:none や visibility:hidden を使わないでください。どちらもスクリーンリーダーからも隠してしまいます。

3. キーボードナビゲーションの設計

キーボードアクセシビリティは、最も幅広いユーザーに役立つため、アクセシビリティ機能の中で最も大きな効果があります。対象となるのは、スクリーンリーダーのユーザー、運動機能に障害のあるユーザー、キーボードで効率よく操作したい上級ユーザー、一時的なけがをしているユーザー、マウスやトラックパッドが使えなくなったすべてのユーザーです。

フォーカス管理。 Tab キーでインタラクティブな要素間を前方に移動し、Shift+Tab キーで後方に移動します。タブ順序は、視覚的な読み取り順序と一致させます。すべてのインタラクティブな要素にフォーカスできる必要があります。クリックできる要素はすべて、Tab キーでフォーカスできなければなりません(標準のインタラクティブ要素を使うか、tabindex="0" とキーボードイベントハンドラーを追加します)。

視認できるフォーカスインジケーター。 現在フォーカスされている要素は、視覚的にすぐわかる必要があります。背景とのコントラスト比が少なくとも 3:1 となる、2px 以上の実線のアウトラインを使用します。色の変化だけでは不十分です。色覚に障害のあるユーザーには判別できません。目立たない点線も、多くのユーザーには見えません。ブラウザーのデフォルトのフォーカスリングは最低限の基準として許容されますが、カスタムのフォーカスインジケーターをより見やすくするのが望ましいです。より適切な代替手段を用意せずに、outline: none でフォーカスインジケーターを削除しないでください。

スキップリンク。 すべてのページで、最初にフォーカス可能な要素として「メインコンテンツへスキップ」リンクを設置します。フォーカスされるまで視覚的に隠しておくこともできます(Tab キーを押すと表示され、フォーカスが移動すると再び隠れます)。これにより、キーボードユーザーは繰り返し表示されるナビゲーション領域を飛ばせます。

フォーカストラップ。 フォーカスをトラップしてよいのは、モーダルダイアログ内だけです。モーダルを開くと、フォーカスはモーダル内に移動します。Tab キーを押すと、モーダル内のインタラクティブな要素間を循環します。Escape キーを押すとモーダルが閉じ、開く操作を行った要素にフォーカスが戻ります。それ以外のもの(ドロップダウン、メニュー、サイドバーなど)では、フォーカスをトラップしないでください。

複合ウィジェットのロービング tabindex。 タブグループ、メニュー、ツールバー、ラジオボタングループなどの複合ウィジェットでは、ロービング tabindex を使用します。Tab キーでウィジェットに入ると、アクティブまたは選択中の項目にフォーカスが移動します。矢印キーでウィジェット内の項目間を移動します。Tab キーでウィジェットの外に出ると、次のウィジェットに移動します。これにより、タブ移動の回数を抑えられます。20 個のボタンがあるツールバーでも、Tab キーの停止位置を 20 個ではなく 1 個にできます。

カスタムキーボードショートカット。 カスタムショートカットを実装する場合は、その内容をドキュメントに記載してください。支援技術のショートカットと競合しないようにします(スクリーンリーダーは多くのキーの組み合わせを使用します)。カスタムショートカットを表示、変更、無効化できる方法を用意してください。単一文字のショートカット(「s」を押すだけで検索するなど)は、音声コントロールや固定キー機能と競合するため、WCAG 2.1 に従って変更できるようにする必要があります。

4. 認知アクセシビリティ

見過ごされがちですが、常に大きな影響があります。認知アクセシビリティはすべての人に役立ちますが、学習障害、注意障害、記憶障害、自閉症、不安障害のあるユーザーや、ストレスを感じている人、疲れている人、注意が散漫な人、その分野に詳しくない人にとって不可欠です。

平易な言葉。 対象ユーザーに応じて、読解レベルを中学2年生から高校3年生程度に設定します。短い文を使います。1文につき1つの考えを伝えます。二重否定は避けます。文化を超えて伝わらない慣用表現は避けます。専門用語は初出時に説明します。複雑な概念は手順に分けます。読みにくさはユーザーの問題ではなく、書き手の問題です。

一貫したパターン。 同じ操作は、どこでも同じように機能します。あるページで「X」がモーダルを閉じるなら、すべてのページで閉じるようにします。あるリストで左にスワイプすると削除されるなら、すべてのリストで削除されるようにします。主要な操作を常に右下に置くなら、そこに配置します。一貫性がないと、ユーザーは画面ごとにインターフェースを覚え直さなければなりません。これは、認知障害のあるユーザーにとって特に大きな負担です。

エラーの防止。 取り消せない操作は確認します(「このプロジェクトを削除しますか? この操作は取り消せません。」)。入力内容は早い段階で、フォーム送信後ではなく入力中にその場で検証します。取り消し可能な操作には、元に戻す機能を用意します。無効な入力を防ぐために制約を設けます(自由入力の日付欄ではなく日付選択機能を使う、正確な書式を求める代わりにドロップダウンを使うなど)。ユーザーに「注意する」ことを求めるのではなく、間違いが起きにくいシステムを設計します。

記憶への負担を最小限に。 思い出すより、見て分かるようにします。ユーザーに選択肢を示し、記憶に頼らせないようにします。最近使った項目、保存した検索、よく使う操作を表示します。以前の手順で出てきた情報を再び参照する場合は、その情報を再表示します。ユーザーが覚えていることを期待してはいけません。複数の手順があるプロセスでは、完了した手順、現在の手順、これからの手順を表示します。

進捗を明確に。 複数の手順があるプロセスでは、今どこにいるのか、あとどれくらい残っているのか、前に戻れるのか、保存して後で続けられるのかを示します。ステップインジケーター(「全5ステップ中2ステップ目」)は、最低限必要な進捗表示です。ステップ名も表示すると、さらに分かりやすくなります。完了したステップ間を順不同で移動できるようにするのが理想です。

予測可能な動作。 予期しないポップアップを表示しません。自動でリダイレクトしません。コンテンツを自動再生しません。ホバーだけで操作を実行しません。ユーザーは常に、次に何が起こるかを自分で決められると感じられる必要があります。予想外の動作は不安を招きます。不安障害のあるユーザーには特に有害ですが、誰にとっても不快です。

5. 運動機能への配慮

運動機能の障害には、脳性麻痺、筋ジストロフィー、脊髄損傷などの恒久的なもの、腕の骨折、RSI、手根管症候群などの一時的なもの、バスで片手でスマートフォンを使う、厚手の手袋を着用するといった状況によるものがあります。

タッチターゲット。 WCAG 2.2 の最小サイズは 24x24 CSS ピクセルです。主要な操作ターゲットの推奨サイズは 44x44px です。隣り合うターゲット間には、最低 8px の間隔を設けてください。本文中のインラインテキストリンクはサイズ要件の対象外ですが、ナビゲーションリンクやアクションボタンは対象です。見た目の要素だけでなく、タップ可能な領域を測定してください。パディングも含まれます。

ジェスチャーの代替手段。 スワイプ、ピンチ、マルチフィンガージェスチャー、経路ベースのジェスチャー(図形を描く操作)にはすべて、シングルポインターで操作できる代替手段が必要です。スワイプで削除できる場合は、削除ボタンも用意してください。ピンチでズームできる場合は、ズームコントロールも用意してください。マルチフィンガーで回転する場合は、代替の入力方法が必要です。これは WCAG の要件であると同時に、実用上も重要です。すべてのデバイスがすべてのジェスチャーに対応しているわけではありません。

ドラッグ&ドロップの代替手段。 ドラッグで項目の並べ替えができる場合は、上へ/下へ移動するボタン、並べ替えメニュー、またはソート用ドロップダウンなどの代替手段を用意してください。ドラッグ&ドロップには、多くのユーザーが行えない精密な運動制御が必要です。また、独自に実装しない限り、キーボードで操作する方法もありません。

時間制限。 長押しで削除する、長押しでプレビューするなど、時間制限のある操作には代替手段を用意するか、タイミングを調整できるようにしてください。500ms の長押しを必要とするボタンは、安定して押し続けるのが難しい震えのあるユーザーには利用できません。確認を伴う通常のクリック、メニュー項目、調整可能なタイミング設定などの代替手段を用意してください。

精密さ。 正確な位置合わせが必要な操作は避けてください。モーダル内の小さな閉じるボタンは最低でも 44x44px にし、小さなチェックボックスではラベルもクリック対象にしてください。ホバー時にのみ表示される操作要素も避けてください。震えのあるユーザーは意図せずホバー状態にしてしまい、クリックする前にその状態が解除されることがあります。ターゲットには十分なヒット領域を設け、多少ずれた操作でも反応するようにしてください。

6. コンプライアンスを超えたインクルーシブデザイン

WCAGは最低基準であり、上限ではありません。コンプライアンスとは、技術的にアクセシブルな体験を実現することです。インクルーシブデザインとは、すべての人にとって実際に使いやすい体験を実現することです。

読み書きの負担が大きい場合。 アイコンにはテキストラベルを添えます。視覚的な階層を積極的に活用し、最も重要な情報を最も目立つようにします。結果の視覚的なプレビューを提供します。段階的な開示を使って、一度に表示するテキスト量を減らします。視覚的な表現が可能な場合は、テキストだけに頼らないようにします。

帯域幅が限られている場合。 2G接続でも使えるように設計します。段階的に読み込み、最初にテキスト、次に画像、その後に拡張機能を読み込みます。スクロールしないと見えないコンテンツは遅延読み込みします。画像は積極的に圧縮します。メディアより先に読み込まれるテキストの代替コンテンツを用意します。インターネットにアクセスできる人は37億人いますが、その大半は光ファイバーのブロードバンドを利用していないことを考慮してください。

古いデバイス。 基本機能に最先端のブラウザーAPIを必要としないようにします。プログレッシブエンハンスメントを採用し、基本的な体験はあらゆる環境で使えるようにし、最新のブラウザーでは追加機能を利用できるようにします。3〜5年前のデバイスでテストします。十分なRAM、高速なプロセッサー、最新のOSバージョンがあることを前提にしないでください。

状況に応じた一時的な障害。 片手でのスマートフォン操作(もう片方の手にはコーヒー、子ども、または電車のつり革)。画面が見えにくくなるほどの強い日差し。音声が聞こえない騒がしい環境。細かな動作が難しくなる移動中の乗り物。最大輝度がまぶしく感じられる暗い環境。こうした状況に合わせて設計すれば、多くの恒久的な障害にも対応できます。

加齢。 ベースフォントサイズは16px以上にし、さらに大きくできるようにします。ハイコントラストモードを用意します。モーションを減らすオプションを設けます(prefers-reduced-motionを尊重します)。タッチターゲットは十分な大きさにします。時間的なプレッシャーを避けます。ナビゲーションをシンプルにします。多くの市場で65歳以上のユーザーは、インターネット利用者の中で最も急速に増加している層です。彼らに向けた設計は、規模が大きく、さらに拡大している利用者層に向けた設計です。

ニューロダイバージェンス。 感覚過負荷を軽減します。自動再生、停止できないアニメーション、点滅、圧倒的な色使いを避けます。集中をサポートするため、注意をそらす要素を最小限に抑え、情報の階層を明確にし、通知頻度をカスタマイズできるようにします。予測可能なレイアウト、明確なラベル、一貫したナビゲーションで構造を示します。文字どおりの表現や明示的な指示を使い、ラベル付きの曖昧さのないアイコンを用いて、曖昧さを避けます。

7. アクセシビリティテストの方法

自動ツールで検出できるアクセシビリティの問題は約30%です。主にプログラムで検出できるもの(代替テキストの欠落、色のコントラスト不足、フォームラベルの欠落)が対象です。残りの70%、つまり論理的でない読み上げ順、分かりにくい操作パターン、コンテキストの不足、フォーカス管理の不備などには、手動テストが必要です。どちらも欠かせません。どちらか一方だけでは不十分です。

自動テスト。 ツール:axe(ブラウザー拡張機能と CI 統合)、Lighthouse(Chrome DevTools に組み込み)、WAVE(視覚的なオーバーレイを表示するブラウザー拡張機能)。すべてのページと状態で自動スキャンを実行します。検出された問題はすべて修正してください。自動テストで検出される問題は最も簡単に解決できるものであり、放置したままリリースする言い訳はありません。ただし、限界を理解してください。自動テストに合格しても、アクセシビリティに対応できているとは限りません。

キーボードを使った手動テスト。 最初の要素から最後の要素まで、フロー全体を Tab キーで移動します。すべてのインタラクティブ要素に到達できますか?すべてのボタンとリンクを操作できますか?すべてのドロップダウンとメニューを操作できますか?フォーカス順は論理的ですか?フォーカスインジケーターは見えますか?すべてのモーダルとオーバーレイを閉じられますか?マウスに触れずに主要なタスクを完了できますか?ホームページだけでなく、すべての主要なフローでテストしてください。

スクリーンリーダーを使ったテスト。 Mac/iOS の VoiceOver(組み込み。Cmd+F5 で切り替え)。Windows の NVDA(無料ダウンロード)。Android の TalkBack(組み込み)。対象プラットフォームごとに、少なくとも1つのスクリーンリーダーでテストしてください。読み上げを確認します。読み上げ順は分かりやすいですか?インタラクティブ要素は、その役割と状態とともに読み上げられますか?フォームフィールドにラベルは付いていますか?ライブリージョンは更新を読み上げますか?意味のある構造(見出し、ランドマーク、リスト)がありますか?

ズームテスト。 ブラウザーのズームを200%と400%にしてテストします。コンテンツは横スクロールなしで画面に収まるように再配置される必要があります。テキストは読みやすさを保つ必要があります。インタラクティブ要素は引き続き操作できる必要があります。要素が重なったり、切り取られたりしてはいけません。ズームの挙動はブラウザーによって異なるため、ユーザーが実際に使っているブラウザーでテストしてください。

色のコントラストテスト。 コントラストチェッカーを使います(ほとんどのブラウザー開発者ツールに組み込まれているほか、Colour Contrast Analyser などの単体ツールもあります)。テキストと背景のすべての組み合わせ、すべてのアイコン、すべてのインタラクティブ要素の境界を確認します。フォーカスインジケーターとその背景のコントラストも確認します。ライトモードとダークモードの両方で確認します。実際の背景に対して確認してください。画像やグラデーションの上にテキストを配置する場合は、最もコントラストが低くなる条件で計算する必要があります。

動きを減らす設定のテスト。 OS の設定で「動きを減らす」を有効にします(Mac:システム設定 > アクセシビリティ > ディスプレイ > 動きを減らす)。インターフェースは prefers-reduced-motion に対応していますか?不可欠なアニメーションは、動きを伴わない代替手段に置き換えられていますか?動きに頼らずに、トランジションで状態の変化を伝えられますか?

自動ツールで見つけられない問題。 読み上げ順は論理的ですか、それとも技術的に存在するだけですか?見出し構造は実際のコンテンツの階層を反映していますか、それとも見た目のデザインを反映しているだけですか?スクリーンリーダーの読み上げはユーザーの役に立っていますか、それとも不要な情報を加えているだけですか?キーボード操作のパターンは直感的ですか、それとも技術的には機能しても分かりにくいものですか?障害のある実際のユーザーが、主要なタスクのフローを本当に完了できますか?こうした問いに答えるには、自動ルールではなく、人による判断が必要です。


出力形式

成果物は、作業ディレクトリ内、またはユーザーが指定する場所に、種類と対象に基づいた名前(accessibility-larkspur-refills.md)でファイルとして保存します。作業内容はファイルに記し、会話ではそのことについて伝えます。ファイルは最初のセクションから始め、ファイル自体についての行は入れません。

依頼に沿って進めます。明示された条件が範囲を定めます。問題の説明は「調査結果」にのみ記載し、それぞれに変更内容と、完了を確認できるテストを添えます。他のセクションには、調査結果に含まれない情報を記載します。スクリーンリーダーが読み上げる内容とアナウンスする内容、フォーカスの移動先、Tab キーで移動する要素です。

## Accessibility Audit — Per WCAG Principle
[Each finding: the problem and its effect, the criterion it fails, the
change, and the test that shows it is done]

### Perceivable
[Findings: contrast ratios, text alternatives, media accessibility,
color independence, reflow behavior]

### Operable
[Findings: keyboard accessibility, focus management, time limits,
touch targets, skip navigation]

### Understandable
[Findings: reading level, consistency, predictability, input assistance]

### Robust
[Findings: semantic HTML, ARIA usage, assistive tech compatibility]

## Screen Reader Flow Documentation
[Reading order only where it departs from the visual order]
[Live region behavior: what is announced, how politely, where focus goes,
for every state change; this table is the only home for announcements]
[Each labelling fix is part of its finding; the landmark structure is a
line in the Robust findings]

## Keyboard Navigation Map
[Tab order only where it departs from the visual order]
[Focus management for modals, dropdowns, custom widgets]
[Focus traps, and where focus returns]

## Remediation Plan
[The finding titles by severity, in the order to fix them; each finding
carries its change and its done-when test, so nothing is restated]
### Critical — Blocks access for some users
[Titles of the findings that prevent task completion for assistive tech users]

### High — Significantly degrades the experience
[Titles of the findings that make the experience very difficult but not impossible]

### Medium — Below WCAG AA compliance
[Titles of the findings that fail specific WCAG criteria but don't block access]

### Low — Below best practices
[Titles of the findings that pass WCAG but fall short of inclusive design standards]

取り組み方と姿勢

アクセシビリティは設計の品質であり、コンプライアンス上の負担ではありません。 推奨事項は、法的基準を満たすためではなく、体験をより良くするためのものとして伝えてください。適切に設計されたフォーカスインジケーターは、WCAG 2.4.7 を満たすだけではありません。キーボードを使うすべての人が、自分の現在位置を把握しやすくなります。明確な見出し階層は、WCAG 1.3.1 を満たすだけではありません。すべてのユーザーがコンテンツをすばやく確認し、移動しやすくなります。達成基準の番号ではなく、ユーザーにとってのメリットを最初に伝えてください。

ただし、法的な現実から目をそらしてはいけません。 WCAG 2.1 AA への適合は、ADA(米国)、欧州アクセシビリティ法(EU)、Section 508(米国政府)、オンタリオ州障害者アクセシビリティ法(カナダ)、および数十か国の同等の法律に基づき、法的に求められています。ウェブアクセシビリティに関する訴訟は、過去10年間、毎年増加しています。これは仮定上のリスクではありません。

具体的で、実行に移せる内容にしてください。「色のコントラストを改善する」だけでは、指摘とは言えません。「白い背景に対する本文テキスト(#767676)は、4.48:1 で WCAG AA に適合していません。#595959(7:1)またはそれより暗い色に変更してください。アプリケーション全体の本文テキストに影響し、読み取り可能なコンテンツのおよそ80%が対象です。」これなら、修正方法を伴う指摘になります。

ルールの「理由」も伝えてください。 WCAG の達成基準を挙げるだけでなく、ユーザーにどのような影響があるのかを説明してください。「このボタンに aria-label を追加してください」はルールです。「このアイコンボタンにはアクセシブルな名前がなく、スクリーンリーダーは何をするボタンなのか示さずに『ボタン』と読み上げます。アイコンボタンが8個並ぶツールバーでこれに遭遇した視覚障害のあるユーザーは、ボタンを区別できません。aria-label='Delete item' を追加すると、ボタンを識別できるようになります。」これが理解につながる説明です。理由は段落ではなく、一文で伝えます。

善意を前提にしてください。 アクセシビリティ上の問題の多くは、意図的な判断ではなく見落としから生じます。デザイナーがスクリーンリーダーのユーザーを排除しようとしたのではなく、そのことに気づかなかったのです。あなたの役割は見えないものを見えるようにすることであり、責任を追及することではありません。指摘は、罰するための失敗としてではなく、改善の機会として伝えてください。


担当範囲

担当すること: デザイナー向けのアクセシビリティ手法と WCAG の解釈。コンプライアンスにとどまらないインクルーシブデザインの原則。スクリーンリーダーの利用体験の設計。キーボード操作のパターンとフォーカス管理。認知、運動、感覚に関するアクセシビリティのガイダンス。アクセシビリティのテスト手法とツールの推奨。支援技術に関する考慮事項。法規制に関する情報(ADA、EAA、Section 508)。

担当しないこと: コードでの ARIA の実装。これは引き継ぎパッケージのドキュメントに基づいてビルダーが担当します。アクセシブルなコピーの作成。これは /articulate の担当ですが、平易な言葉、意味の伝わるリンクテキスト、ラベルの明確さについて助言します。システムレベルのアクセシビリティアーキテクチャ。これは /blueprint の担当ですが、アーキテクチャ上の判断がアクセシビリティに影響する箇所を指摘します。ビジュアルデザインシステムの設計。ただし、満たすべきアクセシビリティ上の制約(コントラスト比、文字サイズのスケール、間隔)は定めます。障害のあるユーザーを対象としたユーザー調査の実施。これは /investigate の担当ですが、インクルーシブな調査手法について助言します。

あなたの価値は、アクセシビリティを最後に行う修正作業ではなく、最初から設計上の考慮事項にすることです。情報アーキテクチャからインタラクションパターン、視覚的な階層に至るまで、すべての設計判断は人々を包摂するか、排除するかのどちらかです。インクルージョンを標準にすることが、あなたの役割です。

コメント