Making Your Shopify Store ADA Accessible

Step-by-step guide to making your Shopify store WCAG 2.1 AA and ADA compliant — keyboard navigation, screen reader support, color contrast, and accessible forms.

E
ECOSIRE Research and Development Team
|2026年3月19日5 分で読める1.1k 語数|

Shopify ストアの ADA をアクセス可能にする

eコマースウェブサイトに対するADA(米国障害者法)訴訟は2020年から2024年の間に300%増加し、対象となるShopifyストアの割合が増加しています。法令順守を超えて、アクセシビリティは収益に直接影響します。米国成人の約 26% が障害を抱えて暮らしており、購買力は 4,900 億ドルに相当します。アクセスできない店舗では、こうした顧客は完全に排除されます。

このガイドでは、実際的な Shopify アクセシビリティの実装、つまり e コマースにとって最も重要な特定の WCAG 2.1 AA 基準、現在のストアを監査する方法、最も一般的な違反に対処する修正について説明します。

重要なポイント

  • WCAG 2.1 レベル AA は、AAA ではなく、単なるレベル A ではなく、ADA 準拠に必要な標準です
  • キーボード ナビゲーションは、ナビゲーション、製品の選択、カート、チェックアウトなどのすべてのインタラクティブな要素で機能する必要があります。
  • カラーコントラスト比は、通常のテキストの場合は 4.5:1、大きなテキストと UI コンポーネントの場合は 3:1 を満たす必要があります。
  • スクリーン リーダーは、すべての製品画像の意味のある代替テキストと、すべてのフォーム フィールドの意味のあるラベルを受信する必要があります
  • フォーカス インジケーターは視覚的に見える必要があります - ブラウザーは多くのテーマでデフォルトでフォーカス インジケーターを非表示にします
  • Shopify のチェックアウトは Shopify によって管理され、アクセス可能ですが、テーマのカート ドロワーはアクセスできない場合があります
  • 自動アクセシビリティ チェッカーは問題の最大 30% を検出します - 残りについては手動テストが必要です
  • アクセシビリティ オーバーレイ (accessiBe など) は WCAG 準拠を達成せず、法的リスクを増大させます

E コマースの ADA および WCAG 要件を理解する

ADA には、Web サイトに関する特定の技術基準は含まれていません。裁判所は Web コンテンツ アクセシビリティ ガイドライン (WCAG) を事実上の標準として一貫して適用しており、大部分の和解および判決ではレベル 2.1 AA が準拠目標として認められています。

WCAG 2.1 は 4 つの原則 (POUR) に基づいて構成されています。

  1. 認識可能: 情報と UI コンポーネントは、ユーザーが認識できる方法で表示できる必要があります (ビジュアル コンテンツの代替、音声のキャプション、十分なコントラスト)。
  2. 操作可能: UI コンポーネントとナビゲーションが操作可能である必要があります (キーボードがアクセス可能、タスクを完了するのに十分な時間がかかる、発作を引き起こすコンテンツがない)
  3. 理解可能: 情報と UI 操作は理解可能でなければなりません (読みやすい言語、予測可能な動作、入力補助)
  4. 堅牢: コンテンツは支援技術で解釈できるほど堅牢でなければなりません

e コマース サイトで最もよく訴訟されるアクセシビリティ違反:

違反WCAG 基準周波数
画像の代替テキストがありません1.1.1 非テキストコンテンツ非常に高い
色のコントラストが不十分です1.4.3 コントラスト (最小)
キーボードナビゲーションなし2.1.1 キーボード
フォームラベルがありません1.3.1 情報と関係
フォーカスインジケーターがありません2.4.7 フォーカスの表示
ページタイトルがありません2.4.2 ページのタイトル
言語が設定されていません3.1.1 ページの言語
アクセスできないモーダル ダイアログ4.1.2 名前、役割、値

アクセシビリティ監査: ツールとプロセス

自動テストツール:

ツールタイプ取材範囲コスト
ax 開発ツールブラウザ拡張機能問題の ~30%無料 (プロ: 年間 279 ドル)
ウェーブブラウザ拡張 + オンライン問題の ~30%無料
灯台のアクセシビリティChrome 開発ツール問題の ~30%無料
Deque 斧コアCI/CD 用の npm パッケージ問題の ~30%無料
サイト改善エンタープライズ プラットフォーム問題の ~40%エンタープライズ価格

自動ツールは、代替テキストの欠落、フォームラベルの欠落、コントラストの失敗などの構造的な問題を検出します。彼らは、意味のある代替テキストの品質、論理的なキーボードのフォーカス順序、スクリーン リーダーのエクスペリエンス、認知の複雑さを見つけることができません。

手動テストプロセス:

ステップ 1 — キーボードのみのナビゲーション テスト: マウスを取り外します。 Tab (進む)、Shift+Tab (戻る)、Enter (アクティブ化)、スペース (選択/スクロール)、矢印キー (コンポーネント内) のみを使用してストアを移動します。次のタスクを完了します。

  • 製品カテゴリを参照します
  • 製品を選択してください
  • サイズ/カラーバリエーションを選択してください
  • カートに追加
  • カートに移動します
  • チェックアウトに進む

すべてのタスクはキーボードのみで完了できる必要があります。

ステップ 2 — スクリーン リーダーのテスト: NVDA (無料、Windows) または VoiceOver (内蔵、Mac/iOS) を使用します。スクリーン リーダーをアクティブにして、ホームページ、製品ページ、カートに移動します。聞いてください:

  • すべての画像は意味を持って説明されていますか?
  • すべてのボタンにはそのアクションのラベルが付けられていますか?
  • 読む順番は論理的ですか?
  • エラーメッセージはアナウンスされますか?

ステップ 3 — ズームテスト: ブラウザのズームを 200% および 400% に増やします。ページはリフローされ、使用可能な状態を維持する必要があります。200% での水平スクロール、コンテンツの重複、テキストの切り詰めはありません。

ステップ 4 — 色のコントラスト テスト: ax DevTools または WebAIM コントラスト チェッカーを使用して、すべてのテキストがコントラスト要件を満たしていることを確認します。通常のテキストの場合は 4.5:1、大きなテキスト (18 ポイント以上または 14 ポイント以上の太字) の場合は 3:1、UI コンポーネント (ボタン、アイコン、フォームの境界線) の場合は 3:1。


画像のアクセシビリティ: 製品画像の代替テキスト

代替テキストは、Shopify ストアで最も一般的なアクセシビリティ違反です。すべての画像には、晴眼者のユーザーが画像を表示することで得られるのと同じ情報を伝える代替テキストが必要です。

Shopify 製品画像の代替テキストのガイドライン:

購入の決定に重要なことを説明してください:

  • 製品名と主な特徴
  • 色、素材、および顕著な視覚的特徴
  • 使用中に示されている場合のコンテキスト (例: 「木製のテーブルの上にある青いセラミックのマグカップ」)
  • 画像内に表示されるテキスト

してはいけないこと:

  • "image001.jpg" — ファイル名は代替テキストではありません
  • 「製品画像」 - 一般的な説明では情報が伝わりません
  • キーワードの詰め込み — 「青いマグカップ、青いセラミックコーヒーマグ、最高の青いマグカップ」 — これは有害です
  • あらゆる些細な詳細を説明します - 簡潔かつ関連性のあるものにしてください

Shopify での代替テキストの実装:

Shopify 管理者から商品画像に代替テキストを追加します。

  1. 管理者 > 製品 > [製品] > 画像をクリックします 2.「画像の代替テキスト」フィールドに代替テキストを入力します 3.保存

代替テキストを一括更新するには、Shopify 一括エディターを使用します。

  1. [管理] > [製品] > [すべての製品を選択] > [製品の編集] 2.「商品画像の代替テキスト」列を追加します。 3.編集して保存する

装飾画像:

純粋な装飾的な画像 (背景パターン、装飾的な仕切り) には空の代替テキスト (alt="") が必要です。これにより、説明なしで「画像」をアナウンスするのではなく、画像を完全にスキップするようにスクリーン リーダーに指示されます。


キーボード ナビゲーション: ストアを完全に操作可能にする

キーボード アクセシビリティでは、すべてのインタラクティブ要素 (ボタン、リンク、フォーム フィールド、ドロップダウン メニュー、モーダル) にキーボードのみを使用してアクセス、アクティブ化、および移動できることが必要です。

Shopify テーマでのフォーカス管理:

ほとんどの Shopify テーマでは、見た目の美しさのためにフォーカス インジケーターが抑制されています。

/* Many themes include this — it's an accessibility violation */
:focus {
  outline: none;
}

デザインを壊さない可視フォーカス スタイルに置き換えます。

/* Visible focus for keyboard users, hidden for mouse users */
:focus-visible {
  outline: 3px solid #005FCC;
  outline-offset: 2px;
  border-radius: 2px;
}

/* Still suppress for mouse clicks (no :focus-visible means mouse/touch) */
:focus:not(:focus-visible) {
  outline: none;
}

ナビゲーション メニューのキーボード アクセス:

ドロップダウン ナビゲーション メニューはキーボードで操作できる必要があります。

  • Tab キーでナビゲーション項目に移動
  • Enter または Space でドロップダウンを開きます
  • 矢印キーでドロップダウン項目を移動します
  • エスケープしてドロップダウンを閉じます

現在のテーマでこれをテストしてください。多くの Shopify テーマには、キーボード ユーザーがアクセスできないホバー トリガーのドロップダウンがあります。修正: マウスホバーに加えて Enter/Space/矢印キーの keydown イベントでもドロップダウンが開くようにしました。

モーダル キーボードとドロワー キーボードの管理:

モーダルまたはカートのドロワーが開くと、キーボードのフォーカスがモーダルに移動する必要があります。閉じると、フォーカスはトリガーした要素に戻る必要があります。モーダル内のフォーカス可能な要素はすべてアクセス可能である必要があります。フォーカスはモーダルをエスケープしてはなりません。

// Example: Focus management for cart drawer
function openCartDrawer() {
  const cartDrawer = document.getElementById('cart-drawer');
  cartDrawer.setAttribute('aria-hidden', 'false');
  cartDrawer.removeAttribute('inert');

  // Move focus to first focusable element in drawer
  const firstFocusable = cartDrawer.querySelector(
    'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
  );
  firstFocusable?.focus();

  // Trap focus within drawer
  cartDrawer.addEventListener('keydown', trapFocus);
}

function closeCartDrawer(triggerElement) {
  const cartDrawer = document.getElementById('cart-drawer');
  cartDrawer.setAttribute('aria-hidden', 'true');
  cartDrawer.setAttribute('inert', '');
  cartDrawer.removeEventListener('keydown', trapFocus);

  // Return focus to trigger element
  triggerElement?.focus();
}

フォームのアクセシビリティ: ラベル、エラー、説明

フォームは、e コマースにおいて最も重要なアクセシビリティ領域です。カートに追加フォーム、検索入力、ニュースレターのサインアップ、チェックアウト フォームはすべて完全にアクセシビリティ可能である必要があります。

フォームラベルの要件:

すべてのフォーム入力には、プログラム的に関連付けられたラベルが必要です。

<!-- Correct: label explicitly associated via 'for' attribute -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" required>

<!-- Correct: label wraps input (implicit association) -->
<label>
  Email address
  <input type="email" name="email" required>
</label>

<!-- Wrong: placeholder is not a substitute for label -->
<input type="email" placeholder="Email address" name="email">

ほとんどのブラウザでは、ユーザーが入力するとプレースホルダー テキストが消え、コントラストが不十分になります。プレースホルダーを唯一のラベルとして使用しないでください。

エラー メッセージのアクセシビリティ:

エラー メッセージは、その原因となったフィールドにプログラムで関連付ける必要があります。

<div>
  <label for="zip">ZIP code</label>
  <input
    type="text"
    id="zip"
    name="zip"
    aria-describedby="zip-error"
    aria-invalid="true"
  >
  <p id="zip-error" role="alert">
    Please enter a valid 5-digit ZIP code
  </p>
</div>

role="alert" により、スクリーン リーダーはエラー メッセージが表示されるとすぐにアナウンスします。 aria-describedby はエラーを入力フィールドにリンクするので、スクリーン リーダーがフィールドに移動するときにエラーを見つけることができます。

サイズとカラーバリエーションのセレクター:

製品バリエーション セレクター (サイズ ボタン、色見本) にアクセスできる必要があります。一般的なアプローチ:

<!-- Accessible radio button group for size selection -->
<fieldset>
  <legend>Size</legend>
  <div class="size-options">
    <input type="radio" id="size-s" name="size" value="S">
    <label for="size-s">Small</label>

    <input type="radio" id="size-m" name="size" value="M">
    <label for="size-m">Medium</label>

    <input type="radio" id="size-l" name="size" value="L">
    <label for="size-l">Large</label>
  </div>
</fieldset>

色見本にはアクセスしやすい名前が必要です。視覚的な色だけでは十分ではありません。

<!-- Accessible color swatch -->
<input type="radio" id="color-navy" name="color" value="Navy">
<label for="color-navy">
  <span class="swatch navy" aria-hidden="true"></span>
  <span class="visually-hidden">Navy</span>
</label>

ARIA ラベルとセマンティック HTML

ARIA (Accessible Rich Internet Applications) 属性は、HTML だけでは不十分なセマンティック ギャップを埋めます。ただし、ARIA の最初のルールは、「HTML で実行できる場合は ARIA を使用しない」です。

Shopify ストアの一般的な ARIA パターン:

<!-- Cart button with item count -->
<button aria-label="Cart, 3 items">
  <svg aria-hidden="true"><!-- cart icon --></svg>
  <span class="visually-hidden">Cart</span>
  <span class="cart-count" aria-hidden="true">3</span>
</button>

<!-- "Add to Cart" button state changes -->
<button id="add-to-cart" aria-live="polite">
  Add to Cart
</button>
<!-- After adding: -->
<button id="add-to-cart" aria-live="polite">
  Added to Cart ✓
</button>

<!-- Loading states -->
<div aria-busy="true" aria-live="polite">
  Loading products...
</div>

<!-- Expandable sections (accordion) -->
<button aria-expanded="false" aria-controls="faq-answer-1">
  What is your return policy?
</button>
<div id="faq-answer-1" hidden>
  <p>We accept returns within 30 days...</p>
</div>

ナビゲーションのためのランドマークの役割:

テーマで、スクリーン リーダー ユーザーが移動するための適切なランドマーク HTML 要素が使用されていることを確認してください。

<header role="banner"><!-- site header --></header>
<nav aria-label="Main navigation"><!-- primary navigation --></nav>
<main id="main-content"><!-- main content --></main>
<aside><!-- sidebar filters or complementary content --></aside>
<footer role="contentinfo"><!-- site footer --></footer>

アクセシビリティ オーバーレイ: 失敗する理由

アクセシビリティ オーバーレイ (accessiBe、UserWay、AudioEye) は、サイトを自動的にアクセシビリティに対応すると主張する JavaScript ウィジェットです。これらは解決策ではなく、法的リスクを増大させます。

オーバーレイが失敗する理由:

  1. HTML の構造的なアクセシビリティの問題は修正できません。表面レベルのプレゼンテーションのみです。
  2. 支援技術と競合することが多く、実際のスクリーン リーダー ユーザーのエクスペリエンスが悪化します。
  3. 裁判所はオーバーレイプロバイダーの主張を ADA に適切に準拠しているとは認めていない
  4. 全国盲人連盟およびその他の障害者擁護団体は、オーバーレイに明確に反対している
  5. 多くのオーバーレイプロバイダー自身が集団訴訟に直面している

代わりに何をすべきか:

構造的なアクセシビリティの修正 (セマンティック HTML、適切なラベル、キーボード ナビゲーション、フォーカス管理、色のコントラスト) に投資します。これらの修正はすべてのユーザーに利益をもたらし、SEO を改善し (スクリーン リーダーと検索クローラーにも同様のニーズがあります)、真の法的保護を提供します。


よくある質問

Shopify ストアは本当に ADA 違反で訴えられるのでしょうか?

はい。電子商取引 Web サイトに対する ADA タイトル III アクセシビリティ訴訟は、米国の法律で確立されています。第9巡回区と第11巡回区の裁判所は一貫して、ウェブサイトはADAの要件の対象となる「公共施設の場所」であるとの判決を下してきた。米国の顧客を持つ Shopify 販売者は、この法的状況の対象となります。督促状の応答と和解にかかる費用は、通常 5,000 ドルから 25,000 ドルの範囲です。完全な訴訟にははるかに多くの費用がかかります。アクセシビリティを積極的に導入すると、大幅に経済的になります。

Shopify のチェックアウトにはアクセシビリティ機能が必要ですか?

Shopify のネイティブ チェックアウト (checkout.shopify.com でホストされるチェックアウト) は Shopify によって管理および維持され、WCAG 2.1 AA 基準を満たしています。 Shopify の標準チェックアウトを使用する場合、ストアのこの部分は Shopify のアクセシビリティの責任となります。ただし、テーマのカート ドロワー、カートに追加フォーム、アカウント ページ、およびテーマによってレンダリングされるすべてのコンテンツは、お客様の責任となります。カスタム チェックアウトまたはヘッドレス ストアフロントを使用する場合、チェックアウトへのすべてのアクセシビリティはお客様の責任となります。

Shopify ストアに完全にアクセスできるようになるまでにどれくらい時間がかかりますか?

商用テーマを備えた一般的な Shopify ストアの場合、WCAG 2.1 AA 準拠に対処するには、テーマのベースライン品質とカスタマイズの範囲に応じて 40 ~ 80 時間の開発時間がかかります。初期監査: 8 ~ 12 時間。重要な修正 (キーボード ナビゲーション、フォーカス インジケーター、代替テキスト システム): 20 ~ 30 時間。フォームおよびモーダル アクセシビリティ: 10 ~ 20 時間。継続的なメンテナンス: 新しいコンテンツや機能が追加されるため、月に 4 ~ 8 時間かかります。

すべての商品画像に手動で代替テキストを含める必要がありますか?

最も一般的な違反 (代替テキストの欠落) については、画像ごとに代替テキストを手動で記述するのではなく、システムを確立できます。製品画像の場合: 製品タイトルとキー バリアントの詳細をテンプレートとして使用します。一括更新の場合: Shopify の商品メタフィールドの CSV インポート/エクスポートを使用して、代替テキストをバッチ更新します。新しい製品の場合: 製品作成チェックリストの一部として代替テキストが必要です。何千もの製品を含むコレクションの場合は、トラフィックの多いページを最初に優先します。

アクセシビリティに使用される「視覚的に隠された」CSS クラスとは何ですか?

Visually-hidden クラス (「sr-only」とも呼ばれます) は、スクリーン リーダーからのアクセスを維持しながら、コンテンツを視覚的に非表示にします。これは、display:none (スクリーン リーダーを含むすべてのユーザーから非表示になります) や visibility:hidden (同じ) とは異なります。これは、アイコンのみのボタンなどの視覚要素にアクセシビリティ対応のラベルを追加するために不可欠です。

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

次のステップ

キーボード ナビゲーション、スクリーン リーダーの互換性、フォーム アクセシビリティ、WCAG カラー コントラストをカバーする包括的な Shopify アクセシビリティの実装には、フロントエンド開発の専門知識とアクセシビリティ テスト方法論の両方が必要です。

ECOSIRE の Shopify サービス には、アクセシビリティ監査、WCAG 2.1 AA 修復、継続的なアクセシビリティ モニタリングが含まれており、アクセシビリティ対応の顧客ベースを拡大しながら、ADA 訴訟からストアを保護します。

アクセシビリティ チームにお問い合わせ、Shopify ストアの包括的な WCAG 2.1 AA 監査をスケジュールします。

E

執筆者

ECOSIRE Research and Development Team

ECOSIREでエンタープライズグレードのデジタル製品を開発。Odoo統合、eコマース自動化、AI搭載ビジネスソリューションに関するインサイトを共有しています。

WhatsAppでチャット