トピックを検索
パンくずリストもメニューの現在地表示もない下層ページ
ショップの商品ページにはパンくずリストがなく、メニューもどのセクションも示さないうえ、タイトルは商品名と店名だけのため、ページがショップのどこにあるのかが分からない
<title>Linen napkins, set of 4 – Fernhill</title> 問題
検索エンジンから商品ページに来た人には、そこがショップのどの売り場なのかも、似た商品をどこで探せばよいのかも分からない
生活雑貨のショップ「Fernhill」は、商品ページをランディングページとしてデザインしています。訪れる人の多くは検索エンジンや広告から商品ページに直接来るため、商品との間に何も置かない方針です。ヘッダーの下には大きな写真、商品名、価格、「かごに入れる」ボタンが並びます。パンくずリストは、写真の上を散らかすものとして外しました。ヘッダーのメニュー(キッチン、テーブル、バス、ベッドルーム)には現在地の見た目があり、リンクの下にバーを引く形で、カテゴリーのページ用に描かれています。テーブルのページでは、テーブルに下線が付きます。
リネンのナプキンを検索した人が、「リネンのナプキン 4枚組」のページに着きました。ほかのテーブルリネンも見たいし、どこで見つけたかも覚えておきたいところです。ところが、このナプキンがテーブルの商品だと示すものは、ページのどこにもありません。パンくずリストはなく、バーの付いたメニューのリンクもなく、ブラウザーのタブには「リネンのナプキン 4枚組 – Fernhill」とあるだけです。バーはデザインにあるものの、ページのアドレスがメニューのリンクと一致したときにしか表示されず、商品のアドレス /products/linen-napkins はどのリンクとも一致しません。スクリーンリーダーの利用者には、読み込み時に同じタイトルが読まれ、続いてメニューのただの四つのリンクが聞こえます。
達成基準2.4.8「現在位置」(レベルAAA)は、一連のページの中で利用者が今どこにいるかという情報を得られることを求めています。解説書は、その目的を、利用者がサイトの中で自分の位置をつかめるようにすることだとし、恩恵を受ける人として、注意の持続時間が短く混乱しやすい人を挙げています。十分な達成方法は、パンくずリスト(G65)、サイトマップ(G63)、ナビゲーションバーでの現在地の表示(G128)、aria-current による現在の項目の指定(ARIA26)、そしてページがサイト全体のどこにあるかを示すタイトル(G127)です。どれか一つで足ります。この商品ページには、そのどれもありません。パンくずリストはなく、メニューにも目印がなく、タイトルはページと店の名前を示すだけで、その間のセクションは示しません。
メニューの現在地の見た目は、アドレスの比較で決まります。ショップのプラットフォームもCMSもルーターも、ページ自身のアドレスを持つリンクに目印を付けます。Shopifyのテンプレートでは、リンクの current はページのパスがリンクのアドレスと一致するときに、active はパスがリンクのアドレスを含むときにtrueになり、Shopifyがテーマ作りの手本として公開しているDawnは、これらの値からメニューのリンクに下線と aria-current="page" を付けます。商品のパス /products/linen-napkins は /collections/table と一致せず、含んでもいないため、テーブルのリンクに商品ページで目印が付くことはありません。デザインファイルでは、うまく働くカテゴリーのページでこの状態を見せ、商品ページは単独で描くので、商品ページでは一度も表示されないことに誰も気づきません。
検索エンジン、広告、共有されたリンクなど、外から直接来ることが多いのは、商品ページ、ヘルプ記事、ブログ記事、ドキュメントのページです。Baymard Instituteは2020年に、調査対象のショップのモバイルサイトの65%で商品ページにパンくずリストがなかったと報告しています。デスクトップでは20%でした。スマートフォンではメニューもボタンの奥に畳まれるため、画面に見えている範囲には、位置を示すものが何もないことも珍しくありません。
10グループ中3グループに影響
- 全盲 (影響あり)
- 弱視 (影響あり)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響なし)
- 筋力・可動域 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 言語・認知・学習の能力が限られる ほかのナプキンを見たい人や、あとでこのページを探し直したい人は、どのセクションにあるかをメニューから推測するしかありません。注意や記憶に制限のある人ほど迷いやすいのに、ページにはその手がかりが何もありません。
- 視覚を使わない ページが読み込まれると、スクリーンリーダーはタイトルの「リネンのナプキン 4枚組 – Fernhill」を読み、メニューはただの四つのリンクとして読まれます。聞こえる内容のどこにも、ナプキンがテーブルの商品だという情報はありません。
- 視覚が限られる 画面拡大ソフトで見えるのは写真と見出しだけです。メニューはその上の視界の外にあり、しかも何も示していないので、ページを動かして探しても答えは見つかりません。
ページの要素に誤りはありません。リンクには名前があり、タイトルも空ではなく、見出しもあります。足りないのはセクションを示すものですが、スキャンはサイトのセクションを知りません。この診断では、3つ以上のリンクを持つメニューがあるトップページ以外のページで、パンくずリストがなく、メニューのどのリンクにも aria-current がなく見た目も隣のリンクと同じで、タイトルの部分が3つ未満なら、ew:location-manual-check として確認に回します。見出しや内容がすでにページの位置を示しているかどうかは、人にしか判断できないためです。AIのコーディングツールに商品ページを頼むと、デザインのとおりに作ります。デザインにパンくずリストがなければ、作りません。
修正方法
どのページにも、属するセクションを示す
<head> <title>Linen napkins, set of 4 – Fernhill</title></head><body> <header> <a href="/">Fernhill</a> <nav aria-label="Main"> <ul> <li> <a href="/collections/kitchen">Kitchen</a> </li> <li> <a href="/collections/table">Table</a> </li> <li> <a href="/collections/bath">Bath</a> </li> <li> <a href="/collections/bedroom">Bedroom</a> </li> </ul> </nav> </header> <main> <h1>Linen napkins, set of 4</h1> … </main></body>問題点3点
- 見出しの上にパンくずリストがありません。
- メニューのバーは、メニューがアドレスへリンクしているカテゴリーのページでしか表示されないため、ここではどのリンクにも付きません。
- タイトルは商品と店の名前を示すだけで、テーブルを示しません。
セクションで終わるパンくずリスト
<head> <title>Linen napkins, set of 4 – Fernhill</title></head><body> <header> <a href="/">Fernhill</a> <nav aria-label="Main"> <ul> <li> <a href="/collections/kitchen">Kitchen</a> </li> <li> <a href="/collections/table">Table</a> </li> <li> <a href="/collections/bath">Bath</a> </li> <li> <a href="/collections/bedroom">Bedroom</a> </li> </ul> </nav> </header> <main> <nav class="breadcrumbs" aria-label="Breadcrumb"> <ol> <li> <a href="/">Home</a> </li> <li> <a href="/collections/table">Table</a> </li> </ol> </nav> <h1>Linen napkins, set of 4</h1> … </main></body>修正の手順4ステップ
- 見出しの上に、ホームから商品の属するセクションまでのパンくずリストを置きます。ホームとテーブルです。ページに着いた人は、どこにいるかがすぐに分かり、クリック一つで上の階層へ移れます。
- パンくずリストはセクションで終え、商品名は見出しに任せます。1行違いで同じページ名を二度示さずに済みます。
- パンくずリストを「Breadcrumb」という名前の
navに入れ、番号付きリストにします。スクリーンリーダーはナビゲーションとして読み上げ、ランドマーク一覧に載せ、いくつの階層があるかも伝えます。 - 区切りは細い線を傾けて描き、パンくずの間にスクリーンリーダーが読む文字を置きません。
これで修正前の問題は直り、2.4.8を満たします。デザインは描かれたとおりのままで、見出しの上に小さな文字の控えめな1行が加わるだけです。スマートフォンでは隠さず、折り返して表示します。
三つとも2.4.8を満たします。パンくずリストを使ってください。すべての階層を示し、利用者がすでに見ている見出しのそばにあり、どの画面幅や拡大率でも見えるのはこれだけです。メニューの目印は一番上のセクションしか示さず、スマートフォンでは畳まれてしまい、タイトルはそれだけでは足りません。メニューでセクションを示す方法は、セクションが一階層しかなく、デザインにすでに現在地の見た目があるサイトに向いています。場所はまったく取りません。どちらを選んでも、タイトルにはセクション名を入れてください。
商品がどのセクションに属するか。 商品が複数のコレクションに入ることがあります。ナプキンならテーブルにもセールにも入ります。商品ごとにメインのセクションを一つ決め、ショップの管理画面で設定する商品タイプやカテゴリーのような一つの欄に持たせて、パンくずリスト、メニューの目印、タイトルをその欄から作ります。たまたまたどってきた経路からパンくずリストを作ってはいけません。G65はたどった経路を示すパンくずリストも認めていますが、検索エンジンから来た人には経路がないのでセクションが示されず、店内を見て回った人には、同じ商品でも人によって違うセクションが示されます。
アドレスバーは答えにならない。 /table/napkins/linen-napkins のようなアドレスはページの位置を示しますが、2.4.8の達成方法はどれもアドレスを使っておらず、読む人も少なく、スマートフォンのブラウザーはたいていドメインしか表示しません。/products/linen-napkins のように商品に階層のないアドレスを付けるプラットフォームでは、示すものはさらに少なくなります。
構造化データは目に見えない。 JSON-LDのBreadcrumbListのような検索エンジン向けのパンくずのマークアップは、Googleのデスクトップの検索結果にパンくずを出すことがあるだけで、ページには出ません。表示するパンくずリストと一緒に入れるのはかまいませんが、その代わりにはなりません。
スマートフォンのレイアウト。 スマートフォンでもパンくずリストを残します。長いときは隠さずに、下のデザインの案の一つのように、一つ上のセクションへのリンク一つに縮めます。セクション名を示すリンクが一つあれば、ページの位置は伝わります。スマートフォンのメニューでは、開いたメニューの中にもセクションの目印を描きます。
コードを正しく書く。 パンくずリストには固有の名前が必要で、読み上げられる区切りがあってはいけません。クラスだけで目印を付けたメニューのリンクは、目で見る人にしか現在位置を伝えません。どちらも現在のページを見た目だけで示すパンくずリストと現在のページを見た目だけで示すナビゲーションで扱います。どのページでも同じタイトルは、それより先にレベルAで不適合になります。すべてのページで同じページタイトルを参照してください。
サイトマップ。 G63は、2.4.8を満たすもう一つの方法としてサイトマップを挙げています。サイトマップはサイト全体を別のページに示すものなので、利用者はいったんページを離れ、そこで探す必要があります。検索もサイトマップもない、メニューだけのサイトで説明しているように、ページを見つける二つ目の手段としてのほうが役に立ちます。
デザインの案
パンくずの列でなくても、ページの位置は示せる
ナプキンがテーブルの商品だと示す3通りの描き方です。それぞれにポインターを重ね、Tabで移動してみてください。2つはセクションの名前を示し、1つは来たところへ戻るだけです。
デザインファイルで
- どのテンプレートにも、ページの位置を描く。メニューがリンクするページだけでなく、商品や記事のページにも。
- 開発者が両方を作れるよう、メニューの現在地の見た目を、セクション自体のページとその中のページの両方に描く。
- スマートフォンのレイアウトでも、セクション名が見えるように描く。開いたメニューの中にも。
- テンプレートごとにページのタイトルを書く。ページ、セクション、サイト名の順に。
合格
- 見出しの上の小さなセクション名 「テーブル」と「ナプキン」を、ショップの緑#2f5d46(白に対して7.57:1)の小さな文字で見出しの上に書き、それぞれをリンクにします。パンくずの列ではなく見出しのデザインの一部に見えますが、商品の上の各階層を示します。リンクだと分かるよう、ホバーとフォーカスで下線を付けます。
リネンのナプキン 4枚組
セクション内のカテゴリーを並べ、今のカテゴリーだけを塗ったチップ 見出しの上に、ナプキン、ランナー、テーブルクロスをピルで並べ、ナプキンを#2f5d46で塗り、白の太字にします(7.57:1)。商品の位置と、テーブルのほかの商品への道筋を示します。Windowsのコントラスト テーマでは塗りだけの目印は消えるため、太字と塗りの両方で示します。
修正の確認
5項目、マウス不要
確認方法: キーボード、スクリーンリーダー、拡大表示
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。ページのテンプレートやメニューを変更した際は、再度確認します。
スクリーンリーダーでの aria-current="page"の読まれ方
制限
このサンプルは、どのサイトでも同じ結果になることを保証するものではありません。扱っているのは、位置を何も示さないページです。現在位置の手がかりが役に立つのは、サイトのセクション分けが利用者にとって分かりやすいときだけです。誰も思いつかないカテゴリーをたどるパンくずリストでは、やはり迷います。これはサイトの構造の問題で、マークアップでは直せません。ページごとに順序や言葉が変わるパンくずリストやメニューには、別の問題があります。ページによって順序や名前が変わるナビゲーションを参照してください。aria-current="true" の読み上げ方はスクリーンリーダーによって異なり、「現在」とだけ言うものもあります。利用者が使うスクリーンリーダーで確かめてください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
EaseWebのサービス
修正した問題を、次のリリースで再発させない
このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。