リストの「名前」を呼んであげよう:aria-labelでアクセシビリティを一段引き上げる技術
フロントエンドの現場で、私たちは無意識に `
- ` や `
- DOM
- ドキュメントオブジェクトモデル。HTML構造を操作するためのAPI。
- アクセシビリティ
- 障害を持つ人を含む、あらゆる人が情報にアクセスできること。
- ` を多用しますよね。しかし、ページ内に複数のリストが並ぶとき、スクリーンリーダーを使っているユーザーが「今、自分はどこにいるのか?」「このリストは何のためのものか?」を一瞬で判断できる自信はありますか?
実は、何もケアしていないリストは、スクリーンリーダーにとっては単なる「箇条書きの集まり」でしかありません。この記事では、`aria-label` を活用して、マークアップに「意味の輪郭」を与える実践的なテクニックを解説します。
—
なぜ「ただのリスト」では不十分なのか
スクリーンリーダーは、リスト要素に遭遇すると「リスト、〇個の項目」と読み上げます。しかし、サイドバーのナビゲーションリストも、フッターのリンク集も、メインコンテンツ内の機能一覧も、すべて同じ「リスト」と読み上げられたらどうでしょう? ユーザーは、そのリストが何のために存在しているのかを、中身を一つずつ読み解くまで理解できません。
ここで登場するのが `aria-label` です。これを付与することで、ブラウザのアクセシビリティツリーに対して、そのリストの「役割(ラベル)」を明示的に伝えることができます。
ブラウザの裏側で何が起きているのか?
ブラウザはレンダリングの過程で、DOMツリーから「アクセシビリティツリー」という別の木構造を生成します。`aria-label` を設定すると、このツリー内の該当ノードに `name` プロパティが注入されます。
例えば、「メインメニュー」という `aria-label` を付与すれば、スクリーンリーダーは「メインメニュー、リスト、5個の項目」のように、文脈を付与した状態でユーザーに情報を届けられるようになるのです。
—
実践:現場で使える「意味のある」マークアップ
では、実際の現場でどう書くのがベストか、サンプルを見てみましょう。ポイントは「役割が明確なリストには名前をつける」という姿勢です。
本記事の目次
—
ここが「プロ」のこだわり:実装時の注意点
コードをコピペする前に、シニアエンジニアとして一つだけ忠告させてください。
1. `nav`要素には基本不要:
`

コメント