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

「ボタン」としか読まれない顔アイコンの評価

おすすめの感想を5つの顔で尋ねるカードで、各顔はボタンですが、中身は支援技術から隠した絵だけで、titleも空です。そのため、どの顔も「ボタン」とだけ読み上げられ、両端の下にある「とても悪い」「とても良い」も、どの顔とも結び付いていません。

WCAG 2.2
SC 2.1.1ASC 4.1.2ASC 1.3.1ASC 1.1.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <button><svg aria-hidden="true">
アクセシビリティの問題を示した図: 全盲:これはどの顔?
01

問題

スクリーンリーダーの利用者には名前のないボタンが5つ聞こえるだけで、どの顔が何を意味するのか分からず、音声操作の利用者は顔を名前で押せません。そのため回答できないか、意図しない回答を送ってしまいます。

02

試してみる

Tabで顔を順に移動し、それぞれが何と読み上げられるか確かめてください。

下の欄に、顔にフォーカスが移ったときの読み上げと、カードを先頭から読んだときの読み上げが出ます。「とても良い」はどの顔で、その言葉はどこで読まれるでしょうか?

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

問題Titleが空の顔
このおすすめはいかがですか?
とても悪い
とても良い

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

(Tabで顔へ移動)

カードを先頭から読むと:

  1. このおすすめはいかがですか?
  2. ボタン
  3. ボタン
  4. ボタン
  5. ボタン
  6. ボタン
  7. とても悪い
  8. とても良い

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

03

修正方法

各顔に値を言葉で名前として付け、設問をグループの名前にします。

  1. 1すべての顔に、ボタン内のテキストで、値を言葉にした名前を付ける。
  2. 2顔は設問の下にまとめ、設問をfieldsetのlegendにする。
  3. 3顔の横に表示する言葉は、そのボタンの中に入れ、ボタンの名前にする。
修正前 Titleが空の顔
<form class="survey" action="/feedback" method="post">  <div>    <div class="question">このおすすめはいかがですか?</div>    <div class="faces">      <button class="face" name="answer" value="1" title="">        <svg aria-hidden="true">          <use href="#face-very-bad"></use>        </svg>      </button>      <button class="face" name="answer" value="2" title="">        <svg aria-hidden="true">          <use href="#face-bad"></use>        </svg>      </button>      <button class="face" name="answer" value="3" title="">        <svg aria-hidden="true">          <use href="#face-okay"></use>        </svg>      </button>      <button class="face" name="answer" value="4" title="">        <svg aria-hidden="true">          <use href="#face-good"></use>        </svg>      </button>      <button class="face" name="answer" value="5" title="">        <svg aria-hidden="true">          <use href="#face-very-good"></use>        </svg>      </button>    </div>    <div class="ends">      <div>とても悪い</div>      <div>とても良い</div>    </div>  </div></form>
修正後

デザインはそのままに、値をボタンに入れる

<form class="survey" action="/feedback" method="post">  <fieldset>    <legend class="question">このおすすめはいかがですか?</legend>    <div class="faces">      <button class="face" name="answer" value="1">        <svg aria-hidden="true">          <use href="#face-very-bad"></use>        </svg>        <span class="end">とても悪い</span>      </button>      <button class="face" name="answer" value="2">        <svg aria-hidden="true">          <use href="#face-bad"></use>        </svg>        <span class="visually-hidden">悪い</span>      </button>      <button class="face" name="answer" value="3">        <svg aria-hidden="true">          <use href="#face-okay"></use>        </svg>        <span class="visually-hidden">ふつう</span>      </button>      <button class="face" name="answer" value="4">        <svg aria-hidden="true">          <use href="#face-good"></use>        </svg>        <span class="visually-hidden">良い</span>      </button>      <button class="face" name="answer" value="5">        <svg aria-hidden="true">          <use href="#face-very-good"></use>        </svg>        <span class="end">とても良い</span>      </button>    </div>  </fieldset></form>

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。

04

デザインの案

顔でも、ピル型でも、親指でも、答えごとに言葉があれば描けます。

短い感想の質問の描き方を4通り並べました。Tabで試してください。3つはどの答えにも言葉があり、残る1つは、スクリーンリーダーが絵そのものを読み上げます。

デザインファイルで

  • すべての顔に言葉を書く。画面に出すのが両端だけでも、「とても悪い」から「とても良い」まで書いておく。スクリーンリーダーと音声操作はその言葉を使う。
  • 答えの上に設問を書き、グループの名前にする。
  • フォーカスの枠が付いた答えを描く。送る前に選び直せるなら、選んだ状態の答えも描く。
  • スマートフォンの幅で列を描き、表示する言葉がすべて収まるようにする。

合格

  • このおすすめはいかがですか? 顔を選んでください
    選んだ顔の言葉が下に出る表情の列 とても悪いからとても良いまでの5つの顔に、それぞれの意味で名前を付け、選んだ顔の言葉を列の下に書きます。顔の表情を読み取れなくても伝わります。フォームを送るまでは選び直せます。選んだ顔には淡い琥珀色と、#b45309の輪(白に対して5.02:1)が付きます。
  • このおすすめはいかがですか?
    顔と言葉を並べたピル型のボタン 小さな顔と言葉を横に並べた、角の丸いピル型のボタンを5つ置きます。スマートフォンでは2行に折り返します。押すと回答が送られます。言葉がそのままボタンの名前になり、#6b7280の枠線(白に対して4.83:1)がボタンの縁を示します。
  • このおすすめはいかがですか?
    言葉を添えた2つの親指 答えが2つで足りるなら、下向きの親指に「好みではない」、上向きの親指に「良いおすすめ」を添えた、枠線付きのボタンにします。意味は言葉が伝えるので、親指の向きを読み取る必要はありません。

不合格

  • このおすすめはいかがですか?
    絵文字だけのボタンWCAG 1.1.1 😠から😄までの5つの絵文字は親しみやすく、アイコンも要りません。ただし各ボタンの名前は絵文字自体の名前になり、絵の説明であって、表す回答ではありません。
05

修正の確認

マウスを使わない4つの確認

確認方法: スクリーンリーダー、音声入力、キーボード、タッチ

4件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。CSSは最小限の例なので、顔の大きさ、顔の間隔、フォーカスの枠を実際のデザインで確認してください。このようなカードには、名前のない×印の閉じるボタンが付いていることもあります。それは名前がないアイコンだけのボタンで扱う問題です。回答後に顔と入れ替わるお礼の言葉が読み上げられるかは、画面に出ても読み上げられないステータスメッセージで扱います。赤、黄、緑の丸のように、色だけで見分ける顔は別の問題で、色だけに頼る表示のトピックで扱います。そのガイドは準備中です。カード全体を、スクリーンリーダー、音声操作、スマートフォンで確認してください。

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

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方