Webアクセシビリティ対応をしてみた | カレンダー画面の修正

UXデザイン

はじめに

昨日、開発中のWebアプリ Pawth でWebアクセシビリティのチェックを行いました。
結果は15件のエラー。見た目は動いていても、ツールの視点ではまだまだ改善点があることがわかりました。

そこで今日は、カレンダー画面の修正を進めてみました。

問題

問題は合計15件ありましたが、問題の種類は3件です。

  1. コントラスト比の閾値(テキストは 4.5 : 1)
  2. lang属性の未指定
  3. リンクに認識可能なテキストがない

これらを順番に対応します。

対策1 – コントラスト比の閾値を調整

はじめにコントラスト比を修正します。

axe の [強調表示] を選択すると、問題の要素がどこなのかわかりやすくなります。

土日の色が問題

カレンダーの土曜日(青色)と日曜日(赤色)で指摘を受けています。CSSの色を修正します。

# ❌NG
text-blue-500
text-gray-300
text-red-500
text-yellow-600

# ✅OK
text-blue-600
text-gray-500
text-red-600
text-yellow-700

文字色と背景色でコントラスト比を調整する必要があるため、必ずしもこれらのコードが正解になるとは限りません。場合によってはNGとなります。

対策2 – lang属性を指定

次に、HTMLに lang属性 を指定します。

# ❌NG
%html

# ✅OK
%html{ lang: (I18n.locale || I18n.default_locale).to_s }

lang属性をつけることにより、スクリーンリーダの読み上げ言語/発音、辞書・スペルチェック、検索エンジンの解釈などが適切になります。

HTML lang グローバル属性
lang グローバル属性は、要素の言語を定義するために使用します。 編集不可能な要素の場合は書かれている言語、または編集可能な要素の場合はユーザーが書くべき言語です。この属性には、単一の BCP 47 言語タグを記述します。

対策3 – リンクに認識可能なテキストを指定

リンクに aria-label(エイリア・ラベル)を指定します。

指摘要素はSVG

カレンダーの「前の月へ」「次の月へ」が指摘を受けていたので、修正をします。

# ❌NG
= link_to target_path,
          class: 'xxxxx'

# ✅OK
= link_to target_path,
          class: 'xxxxx',
          aria: { label: t('activities.calendar.prev_month') } 

aria-label をつけると、スクリーンリーダーがリンクやボタンを正しく読み上げて、何の要素なのかが分かるようになります。つまり、見た目に文字がなくても、支援技術に名前を与えられます。

aria-label
aria-label 属性は対話型要素にラベル付けする文字列値を定義します。

修正後、再実行

全てを修正後、axe を再実行します。

0件!

無事、Webアクセシビリティ基準に準拠できました。

さいごに

デザインの指摘を受けると「この雰囲気が崩れてしまうのでは」と迷うことがあります。

それでも、誰にとっても優しいアプリにしたいので、基準に準拠する形で修正しました。

Pawth = a11y + art

タイトルとURLをコピーしました