メインコンテンツにスキップ

「aria-label」と「aria-hidden」とは

設定したテキストをスクリーンリーダーで読み上げる「aria-label」と、読み上げ対象から除外する「aria-hidden」の機能について、ユースケースを用いてい解説します。

過去15分内にアップデートされました

Point:Studio全体でのアクセシビリティの考え方は、Studio におけるアクセシビリティを参照してください。

aria属性が必要になる場面

HTMLが適切にマークアップされていれば、スクリーンリーダーに対して一定のアクセシビリティは確保できます。

一方で、HTMLだけでは意味や構造を十分に表現できない場面もあります。

そのようなときに、HTMLの意味や構造を補う仕組みとして「WAI-ARIA」を利用します。

WAI-ARIAを使うと、スクリーンリーダーなどに次の情報を伝えられます。

  • それが何か(ラベルや役割)

  • どのような操作ができるか

  • 現在どのような状態か

WAI-ARIAは範囲が広く、使うべき場所と避けるべき場所の判断が難しい場合があります。

本記事では、その中でも「aria-label」「aria-hidden」の利用パターンに絞って説明します。


aria-labe・aria-hiddenの設定方法

注意:aria-labelとaria-hiddenは同時に使いません。

aria-labelを設定した要素にaria-hiddenもオンにすると、aria-hiddenが優先され、その要素は読み上げの対象外になります。

  1. ボックスを選択します。

  2. 右パネルで[設定]タブを選択します。パネルが閉じている場合は、右パネルを開いてください。

  3. [タグ・属性]のそれぞれの設定欄で設定します。

    • [aria-hidden]にチェックを入れると、その要素はスクリーンリーダーで読み上げられなくなります。

    • [aria-label]にテキストを入力すると、そのテキストがスクリーンリーダーで読み上げられます。


「aria-label 」とは

要素にaria-labelを設定すると、その要素がスクリーンリーダーで読み上げられるとき、要素内のテキストではなくaria-labelのテキストが読み上げられます。(aria-labelのテキストは画面には表示されません。)

例:button要素にaria-labelを設定した場合。

<button aria-label="ヘルプ">?</button>

この例では、スクリーンリーダーは「?」を無視し、「ヘルプ」とだけ読み上げます。

aria-labelは「補足」ではなく「置き換え」のテキストです。

そのため、aria-labelには単体で意味が伝わるテキストを設定してください。


「aria-hidden」とは

aria-hiddenも、WAI-ARIAで定義されている属性のひとつです。

aria-hiddenを設定した要素は、アクセシビリティツリーから除外され、スクリーンリーダーの読み上げ対象になりません。

例:アイコンに aria-hidden="true" を設定した場合。

<div>
<i class="material-icons" aria-hidden="true">directions_car</i>
<p>車</p>
</div>

この場合、スクリーンリーダーは「directions_car 車」ではなく、「車」とだけ読み上げます。


WAI-ARIA(aria-label・aria-hidden)使用時の考え方

WAI-ARIA(aria-label・aria-hidden)は、特定の問題に対する補助的な手段として利用します。

むやみに使うと、画面上の見え方と読み上げ内容がずれ、内容がかえって伝わりにくくなる場合があります。

WAI-ARIAを使わずに実現できる方法があれば、そちらを優先してください。


aria-label を使わずにアクセシビリティを確保する

情報を伝える画像は、「Imgモードで配置してalt属性を設定する」ことが基本です。

この場合、aria-labelは空欄のままで問題ありません。

画像にリンクを設定したい場合は、次の構成を推奨します。

  • Imgモードの画像ボックスに、代替テキスト(alt)を設定します。

  • aria-labelは空欄にします。

  • リンク設定が必要な場合には、ボックスをグループ化して、親ボックスにリンクを設定します。(Imgモードの画像ボックスにはリンク設定ができないため)

その他、アクセシビリティを考慮した構築方法については、Studioアクセシビリティチェックシートも合わせてご確認ください。


Studioにおける aria-label のユースケース

Studioでaria-labelを使う主なケースは次の2つです。

  • 情報を伝える画像を「中身が空のBoxモード画像」として配置する場合

  • 情報を伝えるアイコンを配置する場合

パターン1:情報を伝える画像を「中身が空のBoxモード画像」として配置する

レイアウトの都合で、情報を伝える画像をBoxモードで配置することがあります。

このようにImgモード+altを使えない場合は、Boxモード画像に意味を表すaria-labelを設定します。

例:Boxモードの画像ボックスにaria-labelを設定する。

<div class="image-box" aria-label="セミナー開催のお知らせバナー"></div>

ただし、img要素のalt属性と比べると、aria-labelには次のような制約があります。

  • altは多くの環境で自動翻訳の対象になるが、aria-labelは翻訳されない場合が多い

  • 検索エンジンはaltの利用を明言しているが、aria-labelについては明言されていない

  • altは画像読み込み失敗時に画面に表示されるが、aria-labelは表示されない

そのため、まずはImgモード+altを検討し、それが難しい場合にaria-labelを使うのが安全です。

パターン2:情報を伝えるアイコンを配置する

Studioでアイコンボックスを配置しただけでは、スクリーンリーダーが意図した名前で読み上げないことがあります。

  • Material Iconsのハートアイコンは「favorite_border」と読み上げられる場合がある

  • Font Awesomeのアイコンは何も読み上げられない場合がある

「要素内のテキストが適切でなく、かつデザインなどの理由で変えられないとき」にaria-labelを使い、適切なラベルで上書きします。

例:ハートアイコンにaria-labelを設定する。

<i class="material-icons" aria-label="お気に入り、イメージ">favorite_border</i>

この設定により、対応するスクリーンリーダーでは「お気に入り、イメージ」と読み上げられます。


Studio における aria-hidden のユースケース

Studioでaria-hiddenを使う主なケースは次の2つです。

  • 装飾目的でBoxを配置する場合

  • 同じ意味のテキストとアイコンをセットで配置する場合

パターン1:装飾目的で Box を配置する

背景・罫線・飾りなど、意味を持たない装飾目的のBoxを配置することがあります。

これらをそのままにすると、スクリーンリーダーが余計な情報として読み上げ、本文理解の妨げになる場合があります。

装飾として読み飛ばしたい要素にはaria-hiddenをオンにし、読み上げ対象から外します。

パターン2:同じ意味のテキストとアイコンをセットで配置する

ヘルプアイコンと「ヘルプ」のテキストを横並びにし、まとめてリンクにするケースです。

<a href="https://studio.design">
<i class="material-icons" aria-hidden="true">help_outline</i> <p>Help</p>
</a>

aria-hiddenを設定しない場合、スクリーンリーダーがアイコンとテキストを重複して読み上げることがあります。

アイコン側にaria-hiddenを設定すると、テキストだけが読み上げられ、冗長な読み上げを避けられます。

同じ意味の画像とテキストを並べる場合は、aria-hiddenは不要です。

  • Imgモード画像の場合:alt="" とし、aria-labelも空にする

  • Boxモード画像の場合:aria-labelを空にする

<a href="<https://studio.design>">
<img alt="" src="https://....">
<p>Help</p>
</a>

この設定では、スクリーンリーダーは「Help」のテキストのみを読み上げます。


aria-labelの注意点(上級者向け)

Studioでは、aria-labelを多くの要素(ボックス)に設定できますが、実際に読み上げで使われるかどうかは、要素の種類とスクリーンリーダーの組み合わせによって変わります。

本記事で紹介している利用パターンについては、主要なスクリーンリーダー環境で問題なく読み上げられることを確認しておくと安心です。

より詳細な挙動を知りたい場合は、次の資料を参照してください。

こちらの回答で解決しましたか?