Accessible Name and Description Computation 1.2 を読む
こんにちは、フロントエンドエンジニアの mehm8128 です。
前に Zenn Scrap で調査した、Accessible Name and Description Computation 1.2 の内容を改めて記事としてまとめます。
1 人アドベントカレンダーもやっているのでそちらもよろしくお願いします。
Accessible Name and Description Computation とは
Accessible Name and Description Computation とは、user agent が accessible name や accessible description をどのように計算するかを定義しているドキュメントです。
とある文脈でそれらの計算方法が知りたくなったので調べていたら、このドキュメントに辿りついたので読んでいました。
内容としては主に以下の 4 つです。
- 用語の定義
- accessible name の計算方法
- accessible description の計算方法
- text alternative の計算方法
なお、text alternative とは accessible name と accessible description の両方の計算で使用される、各 HTML 要素に対して計算される文字列のことです。
現在は 2018 年に publish された 1.1 が Recommendation ですが、1.2 が Working Draft として出ていて 2024 年現在も更新中なので、1.1 と 1.2 の間で主に何が更新されているのかを見ていきます。
1.2 での主な変更点
変更点はここにまとめられています。
6.1.1 Substantive changes since the last public working draft
僕が気になったものを 3 つ紹介します。
Support aria-description
Support aria-description by aleventhal · Pull Request #69 · w3c/accname
1.1 では 4.2 Description Computation (1.1) でaria-describedby
が参照する要素の text alternative のみが accessible description になるような説明になっていました。
しかし、
- WAI-ARIA 1.3 で
aria-description
が追加された -
title
属性、テーブルのcaption
要素、input
要素のtype
によってはvalue
なども考慮される
などaria-describedby
以外のものも考慮されるので、それらを踏まえてどのような優先度で accessible description が計算されるのかが表形式でまとめられています。
4.2 Description Computation (1.2)
ここで、1.1 と 1.2 での accessible name と accessible description の計算方法及びそれらと text alternative の関係についてまとめます。
name | description | |
---|---|---|
1.1 | その要素の text alternative |
aria-describedby が参照する要素の text alternative |
1.2 | その要素の text alternative | 下記の表を上から順に計算。適用できなかったら 1 つ下の行の計算をしていく |
ついでに 1.2 で追加された accessible description の計算方法の表も翻訳&簡略化して載せておきます(下 2 つはおそらく HTML に限らない説明になっていましたが、分かりやすく HTML の例で書きます)。
属性 | 計算方法 |
---|---|
aria-describedby |
参照している要素の accessible name を計算し、スペース区切り |
aria-description |
指定した文字列をそのまま採用 |
HTML 要素やその属性(input のvalue 、テーブルのcaption など) |
text alternative か、指定した文字列をそのまま採用 |
title 属性 |
指定した文字列をそのまま採用 |
suggested simplification
suggested simplification by MelSumner · Pull Request #122 · w3c/accname
4.3 Accessible Name and Description Computation (1.1) で説明されていた text alternative の計算ステップの順番が変更されたことにより、説明が簡素化&バグも修正されました(4.3.2 Computation steps (1.2))。
add name from prohibited
add name from prohibited by billybonks · Pull Request #71 · w3c/accname
WAI-ARIA role にはそれぞれ nameFrom
というプロパティがあり、accessible name がどこから計算されることができるかが決まっています。
5.2.8 Accessible Name Calculation - WAI-ARIA 1.2
nameFrom
の種類は以下の 3 つです。
種類 | 説明 |
---|---|
author |
aria-label やaria-labelledby などから計算されることができる |
contents |
子要素などから計算されることができる |
prohibited |
accessible name をつけることができない |
1.1 では text alternative の計算方法にprohibited
についての記述がなかったのですが、1.2 で追加されていたのでprohibited
についての説明も追加されました。
例えば button
role だと Accessible Rich Internet Applications (WAI-ARIA) 1.2 を見てみると、表のName From
の行にcontents
, author
とあるので、aria-label
などを用いて accessible name を指定するか、子要素から計算されることができます。ただし、author
の方が優先されるのでaria-label
などが与えられていない場合のみにcontents
が採用されます。
計算ステップの詳細
text alternative の計算ステップについてまとめます。
と思ったのですが、上手くまとめられなかったので省略します...。
おまけ
React Aria のソースコード上でも参照されていました。
uhyo さんの記事でも参照されました。
まとめ
accessible name などの計算方法はもちろんですが、nameFrom
という概念も知らなかったので知ることができてよかったです。
ちょうど最近「caption
要素には accessible name をつけられない」みたいな話が出ている issue を見たのですが、どれだか忘れてしまいました...。
それでは、明日以降もアクセシビリティ Advent Calendar 2024 - Adventarをよろしくお願いします。
また、アクセシビリティ - Qiita Advent Calendar 2024 - Qiita もあります。僕は数日前に出した 2024 年の a11y まとめ記事を、もう少し中身増やしたり増やさなかったりして登録します。こちらもよろしくお願いします!
Discussion