トピックを検索
前後の文を読まないと行き先が分からない「こちら」などのリンク
ショップのヘルプで、お手入れガイドの各行のリンクがどれも「こちら」か同じ「お手入れガイド」のため、どのガイドが開くかはリンクの前の言葉を読まないと分からない
<a href="/guides/enamel-care.pdf">こちら</a> 問題
スクリーンリーダー利用者がリンク一覧から選ぼうとしても、「こちら」が3回聞こえるだけで、どのガイドが開くか分からない
生活雑貨のショップのヘルプに、お手入れガイドのページがあります。マグの種類ごとに1行ずつ、洗い方やしまい方、避けたいことをまとめたPDFが並んでいます。担当者が編集画面でメールを書くときと同じ調子で書いたため、各行は「ホーローマグ:お手入れガイドのダウンロードはこちら(PDF、120KB)」のようになっています。上から順に読めば、どの行も分かります。
スクリーンリーダーの利用者が、トラベルマグのガイドへ直接進もうとリンク一覧を開くと、「こちら、こちら、こちら」と聞こえます。リンク一覧にはリンク自身の言葉しか表示されないため、どれがどれかを示すものがありません。利用者は一覧を閉じ、ページを1行ずつ読んで、目的のリンクを探すことになります。
「こちら」は良くないと指摘された担当者は、リンクを「お手入れガイド」という言葉に移します。行は「ホーローマグ:お手入れガイド(PDF、120KB)」となって見た目は整いますが、リンク一覧には「お手入れガイド、お手入れガイド、お手入れガイド」と並びます。同じ言葉のリンクが3つあり、それぞれ別のファイルを開きます。
WCAGには、リンクのテキストについて2つの達成基準があります。レベルAの2.4.4「リンクの目的(コンテキスト内)」では、リンクのテキストだけでなく、プログラムによる解釈が可能なリンクの文脈と合わせて目的が分かれば十分です。文脈とは、同じ文、段落、リスト項目、表のセルにあるテキストや、ARIAでリンクに結び付けた言葉です。この例の各行はマグの名前を含むリスト項目なので、どちらの版のリンクも、おそらく2.4.4は満たします。
レベルAAAの2.4.9「リンクの目的(リンクのみ)」は、さらに、リンクのテキストだけで各リンクの目的が分かる手段を求めています。リンクのテキストだけとは、リンク一覧やTabでの移動で聞こえるもの、つまり「こちら」です。W3Cは、「click here」や「more」のような具体的でないリンクのテキストを、具体的にする手段もなく使うことを、失敗例F84として挙げています。2つ目の版は内容を表す言葉ですが、どのガイドかまでは表していません。W3Cは、目的と行き先の違うリンクには違う説明を付けるのが望ましいとしていますが、「お手入れガイド」という3つのファイルはそうなっていません。「利用者一般にとってあいまい」なリンクを除く例外も当てはまりません。どのガイドが開くかは、リンクのすぐ外で、ページ自身が示しているからです。
どちらの版も、そのまま書けてしまいます。リンクの名前は a 要素の中にある言葉そのもので、ブラウザーがほかのリンクや前後の文と比べることもありません。スクリーンリーダーのリンク一覧は、その名前だけを並べます。
デザインではなく編集画面で文章を書く場所なら、どこでも起きます。ヘルプページ、お知らせ、プレスリリース、メールをそのまま載せたページ、各項目が「PDF」「ダウンロード」「詳細」で終わるダウンロードの一覧などです。英語のページでは「click here」や「here」が同じリンクです。
10グループ中4グループに影響
- 全盲 (影響あり)
- 弱視 (影響あり)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響あり)
- 筋力・可動域 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 視覚を使わない スクリーンリーダー利用者は、ページ内のリンク一覧を開いたり、Tabキーでリンクを順にたどったりします。「こちら」が3回聞こえるだけで、どれがどのガイドかを示すものがないため、一覧を閉じて、リンクの前後の文を読みに戻ることになります。
- 言語・認知・学習の能力が限られる 拾い読みする人は、目立つリンクから先に読みます。「こちら」では、どのガイドが開くかを知るために、行を一つずつ読み直さなければなりません。
- 視覚が限られる 大きく拡大すると、画面拡大鏡にリンクだけが映り、行の始まりが左の画面外に出ていることがあります。どのガイドかを示していた言葉は見えません。
- 手の操作が限られる 音声操作の利用者は、リンクの言葉を話してリンクへ進みます。「こちら」も「お手入れガイド」も3つのリンクすべてに一致するため、表示される番号で選ぶしかありません。
axe の link-name ルールは、テキストがあるため、これらのリンクをすべて合格にします。名前が同じで別のアドレスへ向かうリンクを見つける axe の identical-links-same-purpose はレベルAAAのタグが付いているため、通常のAとAAのタグで実行すると動きません。この診断ではIDで有効にし、見つかったものを要確認項目として記録します。同じ名前のリンクが同じ目的かどうかは、人にしか判断できないからです。「お手入れガイド」という3つのPDFが、1つのガイドの3つの言語版のこともあります。1つだけの「こちら」は繰り返されないため、このルールでは見つかりません。そこで、「こちら」や「click here」のような汎用的な名前のリンクは診断独自のチェックで拾い、同じ理由から、前後の文と一緒に要確認項目として記録します。「こちら」をアクセシブルにするよう頼まれたAIのコーディングツールは、画面の言葉を置き換える aria-label を付けることがあり、今度はラベルを含む名前を満たさなくなります。
試してみる
ページの下にあるスクリーンリーダーのリンク一覧で、トラベルマグのガイドを探してみましょう
問題1: どの行も「こちら」で終わります。一覧のどれがトラベルマグのガイドでしょうか。
問題2: リンクは「お手入れガイド」になりました。もう一度一覧を読んでください。
修正を適用します。 もう一度一覧を読んでください。「後ろに隠した言葉」では、一覧とページに見えている言葉も比べてみてください。
修正方法
行き先を示す言葉を、リンクの中に入れる
どの行にも「こちら」
<h2>お手入れガイド</h2><ul class="guides"> <li> ホーローマグ:お手入れガイドのダウンロードは<a href="/guides/enamel-care.pdf">こちら</a>(PDF、120KB) </li> <li> ストーンウェア:お手入れガイドのダウンロードは<a href="/guides/stoneware-care.pdf">こちら</a>(PDF、95KB) </li> <li> トラベルマグ:お手入れガイドのダウンロードは<a href="/guides/travel-care.pdf">こちら</a>(PDF、140KB) </li></ul>問題点3点
- 各リンクのテキストは「こちら」で、行き先について何も伝えない。
- どのガイドが開くかは、リンクの前の言葉にしかない。
- リンク一覧では「こちら」が3回続く。
ガイドの名前をリンクに
<h2>お手入れガイド</h2><ul class="guides"> <li> <a href="/guides/enamel-care.pdf">ホーローマグのお手入れガイド</a>(PDF、120KB) </li> <li> <a href="/guides/stoneware-care.pdf">ストーンウェアのお手入れガイド</a>(PDF、95KB) </li> <li> <a href="/guides/travel-care.pdf">トラベルマグのお手入れガイド</a>(PDF、140KB) </li></ul>修正の手順2ステップ
- 各ガイドの名前全体を、「ホーローマグのお手入れガイド」のようにリンクのテキストにします。リンク一覧でも、Tabでの移動でも、拾い読みする人にも、リンクだけでどのガイドが開くかが伝わります。
- 「こちら」と、リンクに移した前の言葉を消し、同じことを行の中で二度書かないようにします。
これで二つの修正前の例はどちらも直ります。2.4.9を満たし(達成方法G91)、2.4.4もそのまま満たします。リンクのテキストはすべて違うため、axe のルールが報告するものもありません。
この方法を選ぶ理由:ラベルとリンクのテキストは、それだけで意味が通るように書く
どちらも2.4.9を満たします。選ぶなら、ガイドの名前をリンクにする方法です。隠した言葉を読み上げるスクリーンリーダーの利用者に限らず、誰でもリンクだけで行き先が分かります。行の文と食い違わないよう、隠したテキストを手直しし続ける必要もありません。隠した言葉は、1つのガイドを複数の形式で配る場合のように、各項目の名前の後ろに短いリンクをいくつも並べる一覧や表に向いています。そうした一覧で項目の名前をすべてのリンクに書くと、画面に同じ名前が何度も並んでしまうからです。ただし隠した言葉を使うと、「お手入れガイドをクリック」はどの行にも一致し、Appleの音声コントロールは名前全体が必要だと報告されているため、MacやiPhoneでは番号に頼ることになるかもしれません。
「こちら」にaria-labelは付けない。 aria-label="ホーローマグのお手入れガイド" は「こちら」に代わってリンクの名前になるため、名前に画面の言葉が含まれなくなり、レベルAの2.5.3「ラベルを含む名前」を満たしません。名前と照らし合わせる音声操作では、「こちらをクリック」と話しても何も見つからないことがあります。「お手入れガイド:ホーローマグ」のように表示の言葉で始まる aria-label なら満たしますが、ブラウザーの翻訳機能によっては翻訳されずに残るため、言葉を足すなら隠したテキストの方が安全です。この問題は表示と名前が食い違うボタンとリンクで扱っています。
説明やtitleでは直らない。 行を指す aria-describedby や title 属性は、スクリーンリーダーが名前の後に読むことのある言葉を足しますが、リンク一覧には名前しか表示されず、「こちら」が3回続いたままです。
長いリンクのテキストに切り替えるスイッチは満たすが、あまり役立たない。 2.4.9は「手段」を求めているため、ページの先頭近くに、すべてのリンクを長い形に書き換えるコントロールを置けば満たします(達成方法G189とSCR30)。ただ、利用者はまずそのコントロールを見つける必要があり、ページごとに使い直さなければならないこともあります。初めから長い形で書けば、誰に対しても同じ役目を果たせます。
同じ言葉で同じ場所なら問題ない。 メニューとフッターにある「お手入れガイド」という2つのリンクが、どちらもお手入れガイドのページを開くなら問題ありません。W3Cは、行き先が同じリンクには同じ説明を、行き先の違うリンクには違う説明を付けるのが望ましいとしています。axe のルールが報告するのは、名前が同じで別のアドレスへ向かうリンクだけで、その場合も、同じガイドの2つの形式なら目的は1つなので、最後は人が判断します。
ファイルの形式とサイズ。 「(PDF、120KB)」をリンクの後ろに置く書き方は多くのサイトで見られ、2.4.9には影響しません。「ホーローマグのお手入れガイド(PDF、120KB)」のようにリンクの中に入れると、リンク一覧でも、開く前にファイルだと分かります。リンクが伝える注意書きについては新しいタブで開くことを伝えないリンク、ファイル自体についてはスクリーンリーダーで読めない、スキャンやタグなしのPDFを参照してください。
文章を書く場所で直す。 こうしたリンクはテンプレートではなく編集画面から生まれるため、コンポーネントで一度に直すことはできません。編集画面のリンク機能で「こちら」「ここ」「このページ」「click here」に警告を出し、公開前の確認にリンクのテキストを含めます。ダウンロードの一覧をデータから作る場合は、各リンクの言葉を項目の名前から取ります。
修正の確認
4項目、マウス不要
確認方法: スクリーンリーダー、音声入力、キーボード
OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。編集者が新しいヘルプページを公開した際は、再度確認します。
制限
このサンプルは、どのページでも同じ結果になることを保証するものではありません。コード内のパスとクラス名は仮のものです。リンクの上の見出しは、リンクと同じ行の文より弱い文脈で、W3Cは2.4.4の参考の達成方法としてしか挙げていません。見出しに頼るリンクは、AAAだけでなくレベルAも満たさないことがあります。どのカードも同じ「続きを読む」で終わる並びはどれも同じ「続きを読む」のリンクで、名前がまったくないリンクは名前のないバナーや画像のリンクで扱っています。実際に訪問者が使う支援技術で、ページ全体を確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
参考資料
- WCAG Understanding: link-purpose-link-only(新しいタブで開きます)
- WCAG Technique F84(新しいタブで開きます)
- WCAG Technique G91(新しいタブで開きます)
- WCAG Technique C7(新しいタブで開きます)
- WCAG Technique G189(新しいタブで開きます)
- WCAG Understanding: link-purpose-in-context(新しいタブで開きます)
- webaim.org: link_text(新しいタブで開きます)
- smashingmagazine.com: voice-control-usability-considerations-partially-visually-hidden-link-names(新しいタブで開きます)
EaseWebのサービス
修正した問題を、次のリリースで再発させない
このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。