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

並べ替えの状態が矢印でしか分からない表

列の見出しを押すと行が並べ替わって矢印も移るが、並べ替えられることも、どの列をどの向きで並べているかもコードに書かれていないため、スクリーンリーダーにはただの見出しとしか聞こえない

WCAG 2.2
SC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <svg class="arrow" aria-hidden="true">
アクセシビリティの問題を示した図: 全盲:どの順に並んでいるの?
01

問題

スクリーンリーダー利用者には、表がどの列でどの向きに並んでいるのかが分からず、見出しで並べ替えられること自体も伝わらない

02

試してみる

注文を合計で並べ替えて、並び順が読み上げで分かるか確かめてみましょう

  • 問題1: 「合計」をクリックします。行が並べ替わり、矢印が移ります。次にTabキーを押してみてください。見出しには届きません。クリックした見出しをスクリーンリーダーがどう読むかは、下の欄に出ます。

  • 問題2: Tabキーで「日付」と「合計」へ移動し、「合計」でEnterキーを押します。下の欄に読み上げが出ます。並び順は分かりますか?

  • 修正を適用します。 Tabキーで「日付」へ移動し、「合計」でEnterキーを2回押します。行がどちらの向きに並んでいるか、下の欄で分かりますか?

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

注文履歴
注文日付合計状況
#10712026/10/22$9.90処理中
#10632026/10/18$142.00発送済み
#10572026/10/12$24.50配達済み
#10422026/10/03$86.00配達済み

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

(並べ替えのできる見出しをクリック)

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

03

修正方法

見出しをボタンにし、並び順を aria-sort で伝える

修正前

見出しのセルがクリックを受け付ける

<table class="orders">  <caption>Your orders</caption>  <thead>    <tr>      <th scope="col">Order</th>      <th scope="col" class="sorted-desc" data-key="date">        Date        <svg class="arrow" aria-hidden="true">…</svg>      </th>      <th scope="col" data-key="total">        Total        <svg class="arrow" aria-hidden="true">…</svg>      </th>      <th scope="col">Status</th>    </tr>  </thead>  <tbody>    <tr>      <td>#1071</td>      <td>22 Oct 2026</td>      <td>$9.90</td>      <td>Processing</td>    </tr>    …  </tbody></table>
問題点3点
  • 「Date」と「Total」の見出しはセル自体がクリックを受け付けるため、ボタンではなく列見出しとして読まれ、押せることが伝わらない。Tabキーで届かないことは別の問題で、Tabキーで到達できないdivのボタンで扱う。
  • 矢印はスクリーンリーダーから隠したアイコンで、ブラウザーが何も知らないクラスで表示や向きを切り替えているため、並べ替えは目にしか伝わらない。
  • aria-sort の付いた見出しがないため、並べている列も向きも読まれない。
修正後
修正各見出しのボタンと、並べている列のaria-sort
<table class="orders">  <caption>    Your orders    <span class="visually-hidden">, column headers with buttons are sortable</span>  </caption>  <thead>    <tr>      <th scope="col">Order</th>      <th scope="col" aria-sort="descending">        <button type="button" data-key="date">          Date          <svg class="arrow" aria-hidden="true">…</svg>        </button>      </th>      <th scope="col">        <button type="button" data-key="total">          Total          <svg class="arrow" aria-hidden="true">…</svg>        </button>      </th>      <th scope="col">Status</th>    </tr>  </thead>  <tbody>    <tr>      <td>#1071</td>      <td>22 Oct 2026</td>      <td>$9.90</td>      <td>Processing</td>    </tr>    …  </tbody></table>
修正の手順4ステップ
  1. 並べ替えのできる見出しの文字を、列の名前だけを名前にした button に入れる。Tabキーで届き、EnterキーやSpaceキーで押せて、「Date、ボタン」と読まれる。
  2. ページを開いた時点で「Date」の見出しに aria-sort="descending" を付け、押すたびに付け替える。すべての見出しから外してから、押された見出しに ascending か descending を付ける。スクリーンリーダーは見出しと一緒に、その列で並べていることと向きを読み上げる。
  3. 矢印はクラスではなく aria-sort から描き、見た目と読み上げが食い違わないようにする。アイコンの aria-hidden はそのまま残し、ボタンの名前に何も加えないようにする。
  4. キャプションに、見えないように隠した補足 , column headers with buttons are sortable を加える。見出しごとに言葉を足さなくても、表全体で一度、見出しで並べ替えられることが伝わる。

これで二つの修正前の例はどちらも直り、4.1.2を満たします。「Order」と「Status」にはボタンがないため、aria-sort も付けません。

04

デザインの案

並べ替えの印の見せ方は一つではない

同じ注文の表の見出しを、さらに5通りの描き方で示します。押したり、Tabで移動したりしてみてください。4つは形か言葉で並び順を伝え、1つは色だけで伝えます。

デザインファイルで

  • 並べ替えのできる見出しを、何もしていないとき、昇順と降順、ホバー、フォーカスのそれぞれで描く。
  • 並び順の向きは、行の並ぶ向きを指す矢印の形で示し、色だけで示さない。
  • どの列で並べ替えられるか、表を開いたときにどの列がどちら向きに並んでいるかを書いておく。
  • 見出しの文字は列の名前のままにし、「新しい順」のような一行は、目で見るためだけの補足にする。

合格

  • 注文
    #107110/22$9.90
    #106310/18$142.00
    並べ替えるまでは上下の矢印 並べ替えられる列には、白に対して4.83:1のグレーの上下の矢印が常にあり、押す前にどの列で並べ替えられるかが分かります。並べている列だけ、行の並ぶ向きを指す一本の矢印に変わります。
  • 注文
    #107110/22$9.90
    #106310/18$142.00
    並べている見出しを淡いピルで囲む 選んだ絞り込みのチップのように、淡い色のピルが並べている列を示し、中の矢印が向きを伝えます。#e8effdの地の上でも、#1d4ed8の文字は5.80:1を保ちます。
  • 注文
    #107110/22$9.90
    #106310/18$142.00
    並び順を言葉で添える 並べている見出しの下に「新しい順」と小さなグレーの一行を添えると、下向きの矢印が新しい順なのか古い順なのかを迷わせません。列ごとに、両方の向きの言葉を書いておきます。
  • 注文日付合計
    #107110/22$9.90
    #106310/18$142.00
    表の上の「並べ替え」メニュー ショップでは、並び順を一覧の上のメニューで選ぶことがよくあります。「並べ替え:新しい順」と言葉で並び順を示し、マウスでもキーボードでもスマートフォンでも同じように使えます。見出しは飾らず、並べ替えられそうに見せません。

不合格

  • 注文
    #107110/22$9.90
    #106310/18$142.00
    二つの三角、向きは色だけWCAG 1.4.1 二つの三角は常に表示され、向きを示す方だけが#2563ebの青になり、もう一方は#6b7280のグレーです。二つの間は1.06:1で、違いは色合いだけのため、青が見えない人には上下の区別が付きません。並べている列ではもう一方の三角を隠すか、矢印を一本にします。
05

修正の確認

5項目、マウス不要

確認方法: スクリーンリーダー、キーボード

5件中0件を確認済み

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

制限

このサンプルは、どの表でも同じ結果になることを保証するものではありません。renderRows は、表の本体を描き直す実際のコードに置き換えてください。aria-sort の読み方はスクリーンリーダーによって異なり、押したときには読まず、フォーカスが見出しのセルに入ったときにだけ読むこともあります。並べ替えと同時に行を絞り込んだり、検索で行が減ったりする場合、表示している行数を伝えることは別の問題で、件数が読み上げられない検索・絞り込み結果で扱っています。

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

EaseWebのサービス

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

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

サービス内容を見る