セマンティクスとコンテンツのナビゲーション

ページ ナビゲーションにおけるセマンティクスの役割

Alice Boxhall
Alice Boxhall
Dave Gash
Dave Gash
Meggin Kearney
Meggin Kearney

アフォーダンス、セマンティクス、支援技術がユーザー補助ツリーを使用してユーザーに代替のユーザー エクスペリエンスを作成する方法について学習しました。表現力豊かなセマンティック HTML を作成すれば、多くの標準要素にセマンティクスとサポート動作の両方が組み込まれているため、わずかな労力で多くのユーザー補助機能を利用できることがわかります。

このレッスンでは、あまり明確ではないセマンティクス、特にナビゲーションに関して、スクリーン リーダーのユーザーにとって非常に重要なものについて説明します。コントロールは多くてもコンテンツが少ないシンプルなページでは、ページをスキャンして必要な情報を簡単に見つけることができます。しかし、Wikipedia のエントリやニュース アグリゲータなどのコンテンツの多いページでは、すべてを上から順に読むのは実用的ではありません。コンテンツを効率的にナビゲートする方法が必要です。

デベロッパーは、スクリーン リーダーは面倒で使いにくい、またはスクリーン リーダーがそれを見つけるには画面上のすべてをフォーカス可能にする必要があるという誤解をしがちです。多くの場合、そうではありません。

スクリーン リーダーのユーザーは、見出しのリストを使って情報を探すことがよくあります。ほとんどのスクリーン リーダーでは、ページ見出しのリストを簡単に分離してスキャンできます。これは「ローター」と呼ばれる重要な機能です。HTML の見出しを効果的に使用してこの機能をサポートする方法を見てみましょう。

見出しを効果的に使用する

前に説明したように、フォーカス順序だけでなくスクリーン リーダーの順序についても DOM の順序が重要です。VoiceOver、NVDA、JAWS、ChromeVox などのスクリーン リーダーをテストすると、見出しリストは表示順序ではなく DOM 順序に従います。

これは、スクリーン リーダー全般に当てはまります。スクリーン リーダーはユーザー補助ツリーとやり取りし、ユーザー補助ツリーは DOM ツリーをベースとしているため、スクリーン リーダーが認識する順序は DOM の順序に直接基づいています。つまり、適切な見出し構造がこれまで以上に重要になります。

適切に構成されたページのほとんどでは、見出しレベルがネストされ、コンテンツ ブロック間の親子関係が示されます。WebAIM チェックリストでは、この手法について繰り返し言及されています。

  • 1.3.1 の記述:「セマンティック マークアップは見出しの指定に使用されます」
  • 2.4.1 は、コンテンツ ブロックをバイパスする手法として見出し構造に言及しています。
  • 2.4.6 で、有用な見出しの記述方法の詳細について説明しています。
  • 2.4.10 「コンテンツの個々のセクションは、状況に応じて見出しを使用して指定します」と記載されています。

すべての見出しを画面に表示する必要はありません。たとえば Wikipedia では、一部の見出しをスクリーン リーダーなどの支援技術のみがアクセスできるように、意図的に画面外に配置する手法を使用しています。

<style>
    .sr-only {
    position:absolute;
    left:-10000px;
    top:auto;
    width:1px;
    height:1px;
    overflow:hidden;
    }
</style>

<h2 class="sr-only">This heading is offscreen.</h2>

複雑なアプリケーションの場合、視覚的デザイン上、見出しを表示するスペースを必要としない、またはスペースがない場合に、この方法で見出しを表示できます。

その他のナビゲーション オプション

適切な見出しを持つページはスクリーン リーダーのナビゲーションを助けますが、リンクフォーム コントロールランドマークなど、ページ内の移動に使用できる要素は他にもあります。

読者はスクリーン リーダーのローター機能(ページの見出しのリストを簡単に分離してスキャンする機能)を使用して、ページ上のリンクのリストにアクセスできます。Wiki のように多数のリンクがあるため、読者がリンク内の用語を検索する場合があります。これにより、ページ上で発生したすべてのキーワードではなく、実際にそのキーワードを含むリンクのみがヒットされるようになります。

この機能は、スクリーン リーダーがリンクを見つけることができ、リンクテキストが有用である場合にのみ有用です。リンクが見つかりにくくなる一般的なパターンの例を以下に示します。

  • href 属性のないアンカータグ。多くの場合、シングルページ アプリケーションでこれらのリンク ターゲットを使用すると、スクリーン リーダーで問題が発生することがあります。詳しくは、シングルページ アプリについての記事をご覧ください。
  • リンク付きで実装されるボタン。これにより、スクリーン リーダーはコンテンツをリンクとして解釈し、ボタンの機能は失われます。このような場合は、アンカータグを実際のボタンに置き換え、適切なスタイルを設定します。
  • リンク コンテンツとして使用される画像。必要なリンクされた画像は、スクリーン リーダーで使用できないことがあります。支援技術にリンクが適切に表示されるようにするには、画像に alt 属性テキストを指定します。

また、リンクテキストが不十分なことも問題です。「詳細」や「ここをクリック」などのクリック可能なテキストでは、リンク先に関するセマンティックな情報が提供されません。スクリーン リーダーがリンクに関する有意義なコンテキストを提供できるように、「レスポンシブ デザインの詳細」や「こちらのキャンバス チュートリアルを参照」などの説明テキストを使用してください。

ローターはフォーム コントロール リストを取得することもできます。このリストを使用すると、読者は特定のアイテムを検索して直接アクセスできます。

スクリーン リーダーでよく発生するエラーは、発音です。たとえば、スクリーン リーダーは「Udacity」を「oo-dacity」と発音する、電話番号を大きな整数として読み取る、大文字のテキストを頭字語のように読み上げる、などが考えられます。興味深いことに、スクリーン リーダーのユーザーはこうした特徴に慣れていて、考慮する必要があります。

一部のデベロッパーは、発音表記のつづりであるスクリーン リーダー専用テキストを提供することで、この状況の改善に努めています。以下に、発音のつづりに関する簡単なルールを示します。「しないでください。」です。この方法では、問題が悪化します。たとえば、ユーザーが点字ディスプレイを使用している場合、スペルが間違っているため、混乱が生じます。スクリーン リーダーを使用すると、単語のスペルを読み上げることができるため、読み上げの制御や必要性の判断はリーダーに任せることができます。

リーダーはローターを使用してランドマーク リストを表示できます。このリストは、メイン コンテンツと、HTML ランドマーク要素で指定されたナビゲーション ランドマーク セットを読者が見つけるのに役立ちます。

HTML5 では、ページのセマンティック構造の定義に役立つ新しい要素(headerfooternavarticlesectionmainaside など)が導入されました。これらの要素は、組み込みのスタイルを適用することなく、ページの構造上の手がかりとなります(いずれにせよ CSS で行うようにしてください)。

セマンティック構造要素は、複数の反復的な div ブロックを置き換え、作成者と読者の両方に対してページ構造を直感的に表現するための、より明確でわかりやすい方法を提供します。