セマンティクスとスクリーン リーダー

スクリーン リーダーなどの支援技術は、どのようにユーザーに通知すべきかについて、疑問に思ったことはありませんか?その答えは、こうしたテクノロジーがもたらすのは、デベロッパーがセマンティック HTML でページをマークアップしているからです。セマンティクスとは何でしょうか。また、スクリーン リーダーはそれをどのように使用するのでしょうか。

アフォーダンスとセマンティクス

セマンティクスの説明に入る前に、アフォーダンスという用語を理解しておくことをおすすめします。アフォーダンスとは、ユーザーにアクションを実行する機会を提供(提供する)オブジェクトです。その典型的な例がティーポットです。

ティーポットのハンドルは自然なアフォーダンスです。

このティーポットには取扱説明書は必要ありません。代わりに、物理的デザインにより、操作方法がユーザーに伝わります。このオブジェクトにはハンドルがあり、類似のハンドルを持つオブジェクトを世界中で見られるため、それをどのように使用して操作すべきかを推測できます。

グラフィカル ユーザー インターフェースを構築する場合、CSS などを使用して UI にビジュアル アフォーダンスを追加します。たとえば、ボタンにドロップ シャドウと枠線を付けると、現実世界の実際のボタンのようになります。

しかし、ユーザーが画面を見ることができない場合、このようなビジュアル アフォーダンスはユーザーに伝えられません。そのため、支援技術でも同様のアフォーダンスを提供できるように UI を構成する必要があります。このように UI 要素のアフォーダンスを非視覚的に公開する操作を、セマンティクスと呼びます。

セマンティック HTML を使用する

適切なセマンティクスを伝える最も簡単な方法は、意味的にリッチな HTML 要素を使用することです。

CSS を使用すると、<div> 要素と <button> 要素のスタイルを設定して同じビジュアル アフォーダンスを提供できますが、スクリーン リーダーを使用した場合のエクスペリエンスは大きく異なります。<div> は単に汎用的なグループ化要素であるため、スクリーン リーダーは <div> のテキスト コンテンツのみを読み上げます。<button> は「ボタン」として通知されるため、操作できるものであることをユーザーに強く示すことができます。

この問題の最も簡単で、多くの場合最適な解決策は、カスタム インタラクティブ コントロールを完全に回避することです。たとえば、ボタンのように動作する <div> を実際の <button> に置き換えます。

セマンティック プロパティとユーザー補助ツリー

一般に、すべての HTML 要素には次のようなセマンティック プロパティがあります。

  • ロールまたはタイプ
  • 名前
  • (省略可)
  • state(省略可)

要素のロールは、そのタイプを表します。たとえば、「ボタン」、「入力」、または div 要素や span 要素などの場合は単に「グループ」です。

要素の名前は計算されたラベルです。スクリーン リーダーでは通常、要素の名前と役割を読み上げます(「登録、ボタン」など)。要素の名前を決定するアルゴリズムでは、要素内にテキスト コンテンツがあるかどうか、titleplaceholder などの属性があるかどうか、要素が実際の <label> 要素に関連付けられているかどうか、aria-labelaria-labelledby などの ARIA 属性があるかどうかなどの要素が考慮されます。

一部の要素にはが存在することがあります。たとえば <input type="text"> は、ユーザーがテキスト フィールドに入力した内容を反映する値を持ちます。

一部の要素には、現在のステータスを伝える状態stateを含めることもできます。たとえば、<select> 要素は、開いているか閉じているかに応じて、展開状態または折りたたみ状態のいずれかになります。

ユーザー補助ツリー

ブラウザは、DOM の各ノードについて、そのノードが意味的に「興味深い」ものであるかどうかを判断し、そのノードをユーザー補助ツリーに追加します。スクリーン リーダーなどの支援技術でユーザーに代替 UI を提供する場合、多くの場合、このユーザー補助ツリーをたどって支援します。

Chrome の DevTools を使用すると、要素のセマンティック プロパティを検査し、ユーザー補助ツリー内での位置を確認できます。

次のステップ

セマンティクスと、セマンティクスがスクリーン リーダーのナビゲーションにどのように役立つかについて少し知ったら、別の方法で作成したページを見てみましょう。次のセクションでは、一歩引いて、効果的な見出しとランドマークを使用してページの概要全体を伝える方法について検討します。