本文へ移動
easeweb
ご相談
トピックを検索

場所が地図でしか分からない店舗マップ

カフェを探すページで、3つのカフェはドラッグで動かす地図にピンで示されているだけなので、住所はピンをクリックしないと表示されない

WCAG 2.2
SC 1.1.1ASC 2.1.1ASC 2.5.7AA· 2.2 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <div class="pin" data-shop="mill"></div>
アクセシビリティの問題を示した図: 全盲:カフェはどこにあるの?
01

問題

スクリーンリーダーの利用者にはカフェの場所が伝わらず、キーボードの利用者やドラッグできない人は、ピンにも、地図の見えていない部分にも届かない

02

試してみる

Old Millの住所を探してから、マウスを使わずにTabでも試してみましょう

地図を左へドラッグして3つ目のピンを表示し、クリックしてカードを開きます。次にTabキーを押します。フォーカスは先頭から「祝日の営業時間」へ一気に移り、下の欄にカフェの名前は一度も出てきません。

修正を適用し、Tabキーで、次にクリックだけで試してください。

問題あり 修正できますか?

問題カフェが地図の中にしかない

カフェを探す

町に3つのカフェがあります。

祝日の営業時間

スクリーンリーダーの読み上げ:

(Tabでページの中を移動してください)

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

場所を地図の横に一覧で書き、ドラッグなしで使える地図にする

修正前
問題カフェが地図の中にしかない
<section class="find-us" aria-labelledby="find-title">  <h2 id="find-title">カフェを探す</h2>  <p>町に3つのカフェがあります。</p>  <div class="map" id="map">    <div class="map-view">      <img class="map-tiles" src="/maps/town.png" alt="">      <div class="pin" data-shop="harbour" style="left: 20%; top: 50%"></div>      <div class="pin" data-shop="market" style="left: 42%; top: 58%"></div>      <div class="pin" data-shop="mill" style="left: 84%; top: 30%"></div>    </div>    <div class="map-card" id="map-card" hidden></div>  </div>  <a href="/holiday-hours">祝日の営業時間</a></section>
問題点5点
  • 画像は装飾とされています。
  • ピンは空です。
  • 住所はクリックでカードに入るまでスクリプトの中にしかなく、カフェはページのどこにも書かれていません。
  • ピンは、フォーカスもキー操作も受け取りません。
  • 地図はポインターでドラッグしている間しか動かないため、ドラッグしなければOld Millは見つかりません。
修正後

カフェの一覧、ボタンにしたピン、地図を動かすボタン

<section class="find-us" aria-labelledby="find-title">  <h2 id="find-title">カフェを探す</h2>  <p>町に3つのカフェがあります。</p>  <div class="map" id="map">    <div class="map-view">      <img class="map-tiles" src="/maps/town.png" alt="">      <button type="button" class="pin" data-shop="harbour" style="left: 20%; top: 50%" aria-label="Harbour Street"></button>      <button type="button" class="pin" data-shop="market" style="left: 42%; top: 58%" aria-label="Market Square"></button>      <button type="button" class="pin" data-shop="mill" style="left: 84%; top: 30%" aria-label="Old Mill"></button>    </div>    <div class="map-card" id="map-card" hidden></div>    <div class="map-pan" role="group" aria-label="地図を動かす">      <button type="button" data-pan="up" aria-label="上">↑</button>      <button type="button" data-pan="left" aria-label="左">←</button>      <button type="button" data-pan="right" aria-label="右">→</button>      <button type="button" data-pan="down" aria-label="下">↓</button>    </div>  </div>  <ul class="cafes">    <li>      <h3>Harbour Street</h3>      <p>12 Harbour Street(フェリー乗り場のそば)。毎日 7:00–18:00。</p>      <a href="https://maps.example/?q=12+Harbour+Street">Harbour Streetへの行き方</a>    </li>    <li>      <h3>Market Square</h3>      <p>3 Market Square(市役所の向かい)。毎日 8:00–17:00。</p>      <a href="https://maps.example/?q=3+Market+Square">Market Squareへの行き方</a>    </li>    <li>      <h3>Old Mill</h3>      <p>The Old Mill, Mill Lane(川沿い)。土日 9:00–16:00。</p>      <a href="https://maps.example/?q=The+Old+Mill+Mill+Lane">Old Millへの行き方</a>    </li>  </ul>  <a href="/holiday-hours">祝日の営業時間</a></section>
修正の手順6ステップ
  1. 地図の下に、テキストの代替としてカフェの一覧を書きます。カフェごとに、名前を見出しにし、住所、地図の上でどこにあるかが分かる目印(「フェリー乗り場のそば」)、営業時間、行き方のリンクを書きます。町を知らない人には住所だけでは地図が示すことが伝わらないため、目印も代替の一部です。
  2. 地図の画像は alt="" のままにします。画像が示すことは、そのすぐ下に書いてあるからです。
  3. ピンを、カフェの名前を持つHTML標準のボタンにします。Tabキーでそれぞれに止まり、EnterキーやSpaceキーでカードが開き、音声操作では「Old Millをクリック」と言えます。
  4. 「上」「下」「左」「右」のボタンを「地図を動かす」という名前のグループにまとめて置き、それぞれ表示が動く向きを名前にします。1回のクリックやタップで表示を100ピクセルずつ動かします。短くドラッグしたときと同じくらいの距離で、「右」を何回か押せば、Old Millが見えてきます。
  5. ボタンもドラッグも、同じ moveTo() を通します。ドラッグは近道として残ります。
  6. Tabキーでピンに移ったら、そのピンが表示の中央に来るように地図を動かします。Tabキーで移動しても、フォーカスの枠が端の外に隠れることはありません。この処理がないと、ブラウザーが地図の枠そのものをピンまでスクロールしてしまい、地図の実際の位置が、スクリプトが把握している位置とずれます。

これで修正前の例は直り、1.1.1、2.1.1、2.5.7を満たします。

04

デザインの案

地図を主役にしたままでも、カフェの場所を地図の中だけに閉じ込めずに済む

カフェを探すページを3通りに描きました。それぞれTabキーで、次にクリックだけで試してください。2つはどのカフェも言葉で示し、ドラッグも要りません。1つは、ポインターを押さえたままでないと地図が動きません。

デザインファイルで

  • 各場所を、名前、住所、目印、営業時間と一緒に地図のそばに書く。ピンのポップアップだけにしない。
  • 地図を動かすボタンを、拡大できるなら「拡大」「縮小」も、何もしていない状態の地図の隅に描く。
  • ピンと地図のボタンそれぞれにフォーカスの枠を付けて描く。背後の地図に対して3:1以上にする。
  • スマートフォンのレイアウト:場所の一覧を先に、地図はその下に置き、ページをスクロールするための余白を残す。

合格

    1. 1 Harbour Street · 12 Harbour Street(フェリー乗り場のそば)
    2. 2 Market Square · 3 Market Square(市役所の向かい)
    3. 3 Old Mill · The Old Mill, Mill Lane(川沿い)
    番号付きのピンと、同じ番号のカード ピンには、カフェの茶色の上に白で番号を入れ(8.50:1)、地図の下のカードも同じ番号から始めます。ピンから住所へ、目がまっすぐ移ります。ピンを押すと、そのカードに印が付きます。地図の隅の矢印で、地図を一歩ずつ動かせます。
    • Harbour Street 12 Harbour Street(フェリー乗り場のそば) 行き方
    • Market Square 3 Market Square(市役所の向かい) 行き方
    • Old Mill The Old Mill, Mill Lane(川沿い) 行き方
    カードごとの小さな地図 大きな地図は置きません。カフェごとにカードを作り、その店を中心にした小さな静止画像の地図を、名前、住所、目印の横に添えます。動くものがないので、ドラッグもキー操作も要りません。道順は「行き方」のリンクから地図アプリに任せます。

不合格

  • 「2本指で操作」と出る横幅いっぱいの地図WCAG 2.5.7 すっきりした今風の地図です。地図は端から端まで広がり、1本指でスワイプするとページがスクロールして、地図を動かすには2本指を使うよう案内が出ます。ページは自由にスクロールできますが、地図はやはりドラッグでしか動かず、押せるものもなく、Tabキーは地図を素通りします。
05

修正の確認

5項目

確認方法: キーボード、スクリーンリーダー、マウス、タッチ、拡大表示

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。地図ライブラリーやその設定を変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。住所、目印、URLは仮のものです。このガイドは、場所を探す方法が地図しかない場合を扱います。地図のiframeのタイトルは「タイトルがない、または中身の分からないiframe」、画像だけの地図の代替テキストは「代替テキストがない、情報を伝える画像」、ピンチ全般は「ボタンで代われないピンチ・ドラッグ・傾きのジェスチャー」で扱っています。道順、ターンバイターンの案内、フロアマップ、利用者が書き込む地図には、それぞれ別の配慮が必要で、ここでは扱いません。地図サービスの埋め込みやアプリは自分では変えられません。行き方のリンクから移った先で利用者が出会うものを、対象とする支援技術で確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る