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

キーボードでは表示できないグラフのツールチップ

棒グラフの件数は、ポインターを棒に重ねている間だけ Chart.js が描くツールチップにしか出ず、キャンバスはフォーカスも受け取らないため、キーボードでは件数を出す手段がない

WCAG 2.2
SC 2.1.1ASC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
アクセシビリティの問題を示した図: 手の操作:土曜日の注文は何件?
01

問題

キーボード利用者は、ポインターを棒に重ねたときのツールチップにしか出ない件数を読めない

02

試してみる

土曜日の注文数をマウスで確かめ、次にキーボードだけで試してみましょう

土曜日の棒にマウスを重ねて、ツールチップを読んでみてください。次にマウスを使わずにTabキーを押すと、フォーカスはグラフを通り過ぎて「すべての注文を見る」へ移り、件数はどこにも出ません。

修正を適用すると、件数が棒の上に表示されます。もう一つの修正では、Tabキーでグラフに止まり、左右の矢印キーでツールチップが動いて、Escapeキーで閉じられます。

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

問題件数は Chart.js のツールチップの中だけ

日別の注文数

先週

すべての注文を見る

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

03

修正方法

ポインターがなくても、すべての件数を読めるようにする

修正前
問題件数は Chart.js のツールチップの中だけ
<section class="card">  <h2>Orders per day</h2>  <p>Last week</p>  <canvas id="orders" role="img" aria-label="…"></canvas>  <a href="/orders">View all orders</a></section>
問題点2点
  • 件数はツールチップの中にしか描かれず、ツールチップは棒にポインターを重ねている間しか開かない。
  • キャンバスがフォーカスを受け取らないため、Tabキーはグラフを通り過ぎ、ツールチップを開くキーもない。
修正後

棒の上に件数を書く

<section class="card">  <h2>Orders per day</h2>  <p>Last week</p>  <canvas id="orders" role="img" aria-label="…"></canvas>  <a href="/orders">View all orders</a></section>
修正の手順3ステップ
  1. このグラフの plugins に chartjs-plugin-datalabels を加え、各棒の値を描かせます。
  2. anchor: 'end' と align: 'end' を指定し、件数を、視線が自然に向かう棒の先端のすぐ上に置きます。
  3. 件数の色を、白いカードに対して14.68:1の #1f2937 にします。グラフの上に layout.padding で20ピクセルの余白を取り、一番高い土曜日の31が上で切れないようにします。

これで修正前の問題が解消し、2.1.1を満たします。ツールチップの中にしかない件数がなくなるので、キーボードで開く必要のあるものが残りません。ツールチップはそのまま残り、棒にポインターを重ねれば開きます。

04

デザインの案

ホバーしなくても、グラフの数値は見せられる

ポインターにもキーにも合わせて変わる数値と、ポインターがグラフに乗っている間しか件数を見せない、よく見かける例です。それぞれにマウスを重ねてから、Tabキーと矢印キーでも試してみてください。

デザインファイルで

  • ホバーで現れるものだけに件数を置かない。キーボードでもすべての件数を出せるようにするか、グラフに書いておく。
  • グラフがポインターに反応するなら、キーボードで同じ状態にしたところも描く。グラフのフォーカスリングと、選ばれている棒。
  • どのキーで曜日を移れるかを、左右の矢印キーのようにグラフのそばに書く。
  • 件数の文字は、グラフの背景に対して4.5:1以上にする。この例の濃い文字は、白に対して14.76:1。

合格

  • 日別の注文数(先週)

    20件日曜日

    左右の矢印キーで曜日を移れます。

    ポインターとキーに合わせて変わる大きな数値 棒の上に、ふだんは最新の曜日の「20件、日曜日」を表示します。棒にポインターを重ねるか、タップするか、Tabキーでグラフへ移って矢印キーを押すと、数値がその曜日に変わり、棒が濃い青になります。棒の上に何も浮かばず、キーボードでもすべての曜日に届きます。

不合格

  • 日別の注文数(先週)

    ホバーで現れる数値WCAG 2.1.1 ふだんは棒だけで、ポインターをグラフに乗せると、各棒の上に件数がふわりと現れます。すっきり見えますが、Tabキーは素通りし、キーボードでは数値を出す方法がありません。
05

修正の確認

4項目、マウス不要

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

4件中0件を確認済み

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

スクリーンリーダーでの role="status"、aria-describedby、role="application" tabindex="0"の読まれ方

制限

このサンプルは、どのグラフでも同じ結果になることを保証するものではありません。Chart は Chart.js のことで、setActiveElements はコードからツールチップを開くための Chart.js の機能です。chartjs-plugin-datalabels は、Chart.js のプロジェクトが公開している別のパッケージです。ほかのライブラリーでは、それぞれにあたる機能に置き換えてください。role="application" の扱いはスクリーンリーダーによって異なり、矢印キーを読み上げに使い続けるものもあるかもしれません。管理画面全体を、キーボードと対象とする支援技術で確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る