トピックを検索
ヘルプページかホバーでしか読めない入力欄のヘルプ
返品フォームが注文番号を求めながら、どこで確認できるかを書いておらず、答えはヘルプセンターか、マウスポインターを重ねたときだけ開く「?」の中にしかない
問題
注文番号の場所を知らない人はフォームを離れて調べるしかなく、キーボードやスクリーンリーダーの利用者には、マウスで開けるヘルプが届かない
衣料品店の返品ページ「返品の手続き」は、注文番号とご注文時のメールアドレスの二つを尋ね、その下に「注文を探す」ボタンがあります。フォームはすっきりとデザインされ、各欄の上にラベルがあるだけです。ショップにとって、最初のラベルは説明の要らない言葉です。どの注文にも番号があり、ショップが送るものにはすべてその番号が載っているからです。
3週間前に買ったマフラーを返品したい人がいます。メールアドレスは分かります。しかし注文番号は、これまで一度も使ったことがありません。荷物に入っていた紙に書いてあったかもしれませんが、梱包材と一緒に捨ててしまいました。どこかのメールに載っているかもしれません。フォームには、番号がどこにあるのかも、どんな形をしているのかも書かれていません。ページにあるヘルプは、サイトのヘッダーの「ヘルプ」リンクだけです。開くとヘルプセンターのトップページが表示され、検索欄とよくある質問の一覧が並びます。「注文番号はどこにありますか?」は、その3番目にあります。番号はご注文確認メールの件名と納品書に載っていて、HL-482130のような形だと書かれています。それを読んだ時点で、利用者はフォームを離れています。記事の「返品の手続き」リンクから戻ると、フォームは空になっています。
同じフォームには、もう一つの実装があります。ラベルの横に小さな「?」を置き、マウスポインターを重ねている間だけ、同じ答えを暗い色の枠に表示するものです。マウスを使う人には、ヘルプはポインターを重ねるだけで読めます。Tabキーを押すと、フォーカスは注文番号の欄からメールアドレスの欄へ移り、「?」には止まりません。スクリーンリーダーは欄を「注文番号、編集テキスト」と読み、その後には何も続きません。
達成基準3.3.5(ヘルプ)はレベルAAAで、状況に応じたヘルプが利用できることを求めています。W3CのUnderstandingのページによれば、このヘルプがあると、利用者は「今していることを見失わずに」操作の方法を確かめられます。また、ヘルプの存在が利用者にすぐ分かり、「必要なときにいつでも」得られるようにすべきだとしています。ヘルプが要るのは、ラベルだけでは足りないときだけです。「注文番号」というラベルは、何を入力するかは伝えますが、どこで確認できるかは伝えません。多くの人がまさにそこで迷うので、ショップはヘルプセンターにその答えを書いています。
ヘッダーの「ヘルプ」リンクは、このフォームのヘルプではありません。W3Cの達成方法G71(ヘルプへのリンク)は、そのページのフォームの入力方法を説明するヘルプへのリンクをページに置くか、各欄のそばに、その欄についてのヘルプへのリンクを置くことを求めています。ヘルプセンターのトップページはどちらでもありません。そこで答えを得るには、検索するか一覧を見渡し、別のページを開き、フォームへ戻る道を探す必要があります。W3Cがテキスト入力のあるフォームについて挙げる達成方法の一つ、フォームの冒頭の説明(G184)もありません。
「?」は必要な答えを欄のそばに置いていますが、読めるのはマウスポインターを重ねている間だけです。「?」は span なのでキーボードのフォーカスを受け取りません。CSSは :hover のときだけ文を表示し、文が visibility: hidden で隠れている間は、スクリーンリーダーも読みません。キーボードやスクリーンリーダーを使う人には、この欄のヘルプはないも同然で、必要なときに得られません。W3Cは、title 属性によるヘルプを3.3.5の参考の達成方法としてだけ挙げ、十分な達成方法には含めていません。この種のツールチップが同じ人たちに届かない理由は、ラベルやヒントがツールチップにしかない入力欄で説明しています。
ヘルプが最も重要になるのは、利用者がほかの場所に控えているものをフォームが尋ねる場面です。注文番号、アカウント番号、証券番号、会員番号、手紙に書かれた参照番号、メールで届いたコードなどです。こうしたフォームは、返品、請求、受け取れなかった荷物のように、何かがうまくいかなかったときに入力されることが多く、利用者の余裕はあまりありません。スマートフォンでフォームを離れてヘルプセンターへ行くと、小さな画面に新しいページが開きます。戻るには、ブラウザーの「戻る」ボタンを使うか、フォームを最初から始めるリンクを押すことになります。
10グループ中3グループに影響
- 全盲 (影響あり)
- 弱視 (影響なし)
- 色覚 (影響なし)
- ろう (影響なし)
- 難聴 (影響なし)
- 発話 (影響なし)
- 手の操作 (影響あり)
- 筋力・可動域 (影響なし)
- 認知 (影響あり)
- 光過敏 (影響なし)
- 言語・認知・学習の能力が限られる このヘルプが最も必要なのは、記憶、注意、読むことに困難のある人です。ヘルプセンターで探すよう求められると、返品の手続きのどこまで進んだかを見失い、フォームに戻ってこない人もいます。
- 手の操作が限られる 「?」はフォーカスを受け取らないため、キーボードやスイッチの利用者はそこまでたどり着けません。ヘルプセンターのページを一つ進むごとに、マウスの利用者より多くの操作が必要です。
- 視覚を使わない Tabキーで移動すると、スクリーンリーダーは「?」を飛ばします。その中の文はポインターが重なるまで隠れているので、欄は「注文番号、編集テキスト」とだけ読まれます。
どの欄にもラベルが結び付き、「ヘルプ」リンクにも名前があるので、axe、ANDI、そのほかのラベルのチェックはすべてこのフォームを合格にします。欄にヘルプが要るかどうかは、利用者が何を知っていて、何を手元に持っているかによるため、判定できるルールはありません。EaseWebの診断は、見つけたツールチップにポインターを重ねて動きを確認します(1.4.13)。また、フォームの欄のそばにある、キーボードで届かない小さなアイコンのうち、隠れた文を含むものにもポインターを重ねます。重ねると文が表示され、欄にフォーカスしても表示されないときは、人が確認するための手がかりとして報告します。その欄にヘルプが必要か、ページがほかの方法でヘルプを示しているかは、人が判断する必要があるからです。ホバーしたときにスクリプトがページに加えるツールチップは、調べる対象に入っていません。ヘルプセンターにしかない形の問題は、何も見つけられません。二つ先のページにある記事がフォームの問いに答えていることは、スキャンでは分からないからです。欄にヘルプを加えるようAIのコーディングツールに頼むと、アイコンにツールチップを付けることがあります。アイコンが span なら、二つ目の修正前の例そのものです。
試してみる
マフラーを返品します。フォームを離れずに、注文番号がどこにあるかを調べてみましょう
問題1: 欄のそばには、注文番号がどこにあるかが書かれていません。メールアドレスを入力してから、ヘッダーの「ヘルプ」で答えを探し、答えのページの「返品の手続き」リンクで戻ってください。入力したメールアドレスはどうなりましたか?
問題2: 「?」にマウスポインターを重ねて答えを読んでください。次にマウスを使わずにTabキーでフォームを移動してください。フォーカスは「?」に止まりますか? スクリーンリーダーは欄で何と読みますか?
修正を適用します。 マウスで、次にTabキーだけで、もう一度答えを探してください。答えは欄のそばにありますか? スクリーンリーダーは何と読みますか?
修正方法
ヘルプは、それが必要な欄のそばに置く
ヘルプセンターにしかないヘルプ
<header> <a href="/">Hollis</a> <a href="/help">ヘルプ</a></header><main> <h1>返品の手続き</h1> <form method="post" action="/returns"> <label for="order">注文番号</label> <input id="order" name="order" type="text"> <label for="email">ご注文時のメールアドレス</label> <input id="email" name="email" type="email" autocomplete="email"> <button type="submit">注文を探す</button> </form></main>問題点3点
- 「注文番号」のそばに、どこで確認できるかも、どんな形かも書かれていません。
- ヘルプはヘッダーの「ヘルプ」リンクだけで、開くのはヘルプセンターのトップページです。
- そこで答えを読むには、フォームを離れなければなりません。
ラベルの下のヒント
<header> <a href="/">Hollis</a> <a href="/help">ヘルプ</a></header><main> <h1>返品の手続き</h1> <form method="post" action="/returns"> <label for="order">注文番号</label> <p id="order-hint" class="hint">注文番号は、ご注文確認メールの件名と納品書に記載されています(例:HL-482130)。</p> <input id="order" name="order" type="text" aria-describedby="order-hint"> <label for="email">ご注文時のメールアドレス</label> <input id="email" name="email" type="email" autocomplete="email"> <button type="submit">注文を探す</button> </form></main>修正の手順3ステップ
- 番号がどこにあり、どんな形かを、ヘルプセンターの答えと同じ言葉でラベルの下に表示します。
aria-describedbyで欄に結び付けます。スクリーンリーダーは、欄の名前と役割の後にヒントを読みます。- 「?」があれば取り除きます。ヘルプはもう、すべての人の画面に出ています。
修正前の二つの例がどちらも直り、3.3.5を満たします。ヒントの色はショップのグレー #4a5560 で、白に対して7.61:1です。ヒントは1、2行に収めてください。スクリーンリーダーは、欄にフォーカスが移るたびにヒントを最後まで読みます。
三つとも3.3.5を満たします。この例のようにヘルプが1、2行なら、ヒントを使ってください。開く操作なしで画面に出ていて、欄と一緒に読まれます。ヘルプが長いときや、一部の人にしか要らないときは details 要素にすれば、ほかの人にとってフォームは短いままです。リンクは、ほかのページからもリンクされている長い記事のように、ヘルプをフォームに収まる長さにできないときだけにしてください。その場合も、できれば利用者に必要な一行を欄のそばにも表示します。
デザインでラベルの横の「?」を残すなら、ポインターを重ねたときに表示する span ではなく、ヘルプを開いて、また閉じられるボタンにします。近づくと消え、閉じられないツールチップでは、トグルチップとして作る方法を説明しています。こうしたボタンはTabキーの止まる場所を一つずつ増やし、利用者は開いたときにしかヘルプを聞けません。多くの人が必要とするかもしれないヘルプなら、画面に表示するヒントのほうが簡単です。
注文番号は、利用者がコピーしたままの形で受け付けてください。HL-や#、スペースが付いていてもいなくても受け付けます。そうすれば、ヘルプの例は探すものの見た目を示すだけで、守るべき規則にはなりません。一つの形式しか受け付けない欄なら、そのことをラベルかヒントで画面に書きます。この点はレベルAの達成基準3.3.2(ラベル又は説明)の範囲で、ラベルやヒントがツールチップにしかない入力欄で扱っています。
ヘルプの文は一度だけ書き、両方の場所で使います。ヒントとヘルプセンターの答えを同じコンテンツから作れば、確認メールや注文番号の形が変わっても、食い違いません。
プレースホルダーはヘルプの置き場所になりません。入力を始めるとすぐに消えてしまい、入力した内容を例と見比べたいときには、もうありません。番号が見つからなかったときは、欄のそばのエラーメッセージで、どこを探せばよいかをもう一度伝えられます。直し方がわからないフォームエラーを参照してください。
フォームでは答えきれないことのために、サイト共通の「ヘルプ」リンクも引き続き必要です。ページごとに場所が変わるヘルプリンクで説明しているとおり、どのページでも同じ場所に置いてください。
デザインの案
ヘルプは控えめでもよいが、誰もが届く場所に置く
注文番号のヘルプの描き方を、さらに4通り示します。それぞれをマウスで、次にTabキーとキーボードだけで試してください。2つはヘルプを手の届くところに置き、2つは必要なときにヘルプを遠ざけてしまいます。
デザインファイルで
- ヘルプが要る欄ごとに、その下へ、実際に表示する文言でヘルプを書く。値がどこにあり、どんな形かを書く。
- ヘルプをボタンで開く形にするなら、ボタンのフォーカスの枠と、欄を覆わずに押し下げて開いた状態のヘルプも描く。
- 幅390ピクセルのスマートフォンの画面でも描き、ヘルプはフォームの横の列ではなく欄の下に置く。
- ヘルプの文字のコントラスト比を横に書く。背景に対して4.5:1以上にする(白に対するグレーなら7.61:1)。
合格
ご注文確認メールの件名を探してください。
Hollis ご注文 HL-482130 を承りました
番号のある場所を描いた図 メールそのもののように描いた一行で、送信者を太字にし、番号を淡い黄色の背景(12.65:1)で強調すると、受信箱で何を探せばよいかが分かります。その上の文も#4a5560(7.61:1)で同じことを伝えているので、図を見なくても答えは分かります。ご注文確認メールの件名に記載されています(例:HL-482130)。
その場でヘルプを開く「?」 丸い「?」はラベルの行をすっきり保ちますが、ボタンです。Tabキーで止まり、Enterキーかクリックで、ラベルの下にヘルプがクリーム色の#f6f1ea(6.77:1)で開きます。ヘルプは欄を覆わず、欄を押し下げます。もう一度押すか、Escapeキーで閉じます。
不合格
- プレースホルダーに入れたヘルプWCAG 3.3.5 欄の中のグレーの言葉はすっきり見え、内容も正しいのですが、最初のキーを押した時点で消えてしまいます。入力した内容を例と見比べたいのは、ちょうどそのときです。
お困りですか? ヘルプセンターを見る →
ヘルプセンターへリンクする親しみやすいカードWCAG 3.3.5 浮き輪のアイコンを添えた温かみのあるカードは役に立ちそうに見えますが、リンクが開くのはヘルプセンターのトップページです。答えにたどり着くには検索が要り、フォームからも離れてしまいます。サイトについてのヘルプであって、この欄のヘルプではありません。
修正の確認
4項目、マウス不要
確認方法: キーボード、スクリーンリーダー、拡大表示
OS、ブラウザー、支援技術のバージョン、ビルド、日付、各手順の実際の結果を記録してください。欄を追加したときや、注文番号の形式など、利用者に求めるものが変わったときにも、もう一度確認してください。
スクリーンリーダーでの aria-describedbyの読まれ方
制限
これは出発点となる実装例であり、すべてのアプリケーションで適合を保証するものではありません。3.3.5はレベルAAAで、EN 301 549やSection 508が求めるレベルAとAAを超えるものです。それでも、W3CのUnderstandingのページは、このヘルプが役立つ人として、書くこと、読むことに困難のある人、知的障害のある人、文字の入力に苦労する高齢の人を挙げています。このガイドは、一つの欄のヘルプを扱います。ラベルそのもの(何を入力するのか分からない、あいまいなフォームのラベル)、開いた後のツールチップの動き(近づくと消え、閉じられないツールチップ)、サイトのヘルプリンクのページごとの位置(ページごとに場所が変わるヘルプリンク)は扱いません。どの欄にヘルプが要るかは、フォームに入力する人と、その人の手元にあるものによって変わるので、実際の利用者と一緒に確認してください。
よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。
EaseWebのサービス
修正した問題を、次のリリースで再発させない
このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。