HTML講座 / HTMLアクセシビリティの基本を確認する

HTMLのアクセシビリティは、内容の意味、分かる名前、必要な代替情報、キーボードで操作できる構造をそろえることから始まります。正しい要素を使い、実際に操作して確認することが重要で、自動検査でエラーがないだけでは十分とは限りません。

見出しで内容の階層を伝える

ページの主題、大きな節、その下位の話題を見出しの階層で表します。文字を小さくしたいだけでh4へ飛ばず、見た目をCSSで変えます。見出しだけ読んでも内容の流れが分かるようにします。

例えば「配送について」の下に「配送地域」「配送時間」があるなら、同じ親の下に同じレベルで並べます。空の見出しや直後の説明と合わない文言を避けます。具体的な構造は見出しと段落で比較できます。

リンクと画像を文脈に合う言葉にする

「こちら」だけのリンクを並べず、移動先や操作の目的が分かる文章にします。ダウンロードならファイルの種類なども必要に応じて伝えます。画像のaltはその場所で伝える情報や役割に合わせ、装飾だけなら空にする場合があります。

画像だけがリンクなら、景色の形だけでなく行き先の目的が分かる代替情報が必要です。すべての色や形を列挙するのではなく、読者が判断するために必要な内容を伝えます。画像とaltとW3C WAIの画像の判断フローを参照できます。

マウスなしで操作する

Tabでリンク、入力欄、ボタンへ移動し、どこにフォーカスがあるか見えることを確認します。通常、リンクはEnter、ボタンはEnterやSpaceで操作できます。移動にはa、操作にはbuttonなど、目的に合う標準要素を選びます。

クリック処理を付けたdivだけではボタンの意味やキーボード操作は得られません。メニューや説明が開閉するときは、フォーカスが見えない内容へ入ってしまわないかも確認します。フォームではラベルを認識し、エラーから欄へ戻って修正できるかを試します。関連付けはlabelとinputの実習でも確認できます。

手動確認用の小さなページ

次をaccessible-page.htmlとして保存し、画像講座の960ピクセル版を同じフォルダーへ置きます。このフォームは検証とGET値の確認用で、メッセージ受信サービスではありません。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Keyboard-testing practice</title>
  <style>
    body { margin: 1rem; font-family: sans-serif; line-height: 1.6; }
    img { max-width: 100%; height: auto; }
    input { max-width: 100%; font: inherit; }
    :focus-visible { outline: 3px solid #005fcc; outline-offset: 3px; }
  </style>
</head>
<body>
  <a href="#main-content">Skip to main content</a>
  <header>
    <nav aria-label="On this page">
      <a href="#guide">Visitor guide</a>
      <a href="#contact">Contact practice</a>
    </nav>
  </header>
  <main id="main-content" tabindex="-1">
    <h1>Small Garden guide</h1>
    <section id="guide">
      <h2>Visitor guide</h2>
      <p>Bring comfortable shoes and water.</p>
      <img src="html-image-sample-lake-tree-960-v1.webp"
           alt="A tree on a small island in a lake with mountains beyond" width="960" height="540">
    </section>
    <section id="contact">
      <h2>Practice a contact field</h2>
      <form method="get">
        <label for="practice-email">Email (required)</label>
        <input id="practice-email" name="email" type="email"
               aria-describedby="email-help" required>
        <p id="email-help">Use name@example.com instead of a real address.</p>
        <button type="submit">Inspect entered values</button>
      </form>
    </section>
  </main>
</body>
</html>

最初のTabでスキップリンクにフォーカスし、Enterで主要な内容へ移動します。mainのtabindex="-1"は通常のTab移動先を増やさず、移動先としてフォーカスを受けられるようにします。その後のTabの順序も確認してください。

メールを空、abc、正しいテスト形式の順に入力して比較し、入力中もラベルと説明が残るかを見ます。390ピクセル程度の幅とズームでも試します。画像を一時的に別名にして代替情報を確認したら、元の名前に戻します。W3C WAIのページ構造にも確認観点があります。

検査で分かる範囲を区別する

自動ツールは構文上の問題の一部を見つけられますが、リンク文が分かりやすいか、画像の説明が文脈に合うかを常に判断できるわけではありません。キーボード、拡大、必要に応じたスクリーンリーダーの確認と組み合わせます。

この実習に通ったことだけで、すべてのアクセシビリティ要件を満たすとは言えません。重要な利用経路を優先して確認し、HTML、CSS、独自スクリプトで追加した状態やフォーカスを分けて調べます。MDNのHTMLとアクセシビリティで標準要素のパターンを確認できます。

같은 카테고리의 다른 글
HTML講座 / HTMLのエラーを探して文書を検査する

HTML講座 / HTMLのエラーを探して文書を検査する

Nu HTML Checkerの使い方と、重複IDを含む失敗例の修正を学びます。エラー位置の読み方、保存したファイルとサーバーの出力、構文と実際の操作の違いも解説します。

HTML講座 / figureとfigcaptionで図と説明をまとめる

HTML講座 / figureとfigcaptionで図と説明をまとめる

図とキャプションを一つのまとまりとして表す方法を学びます。altとキャプションの役割、出典の示し方、figureを使わなくてもよい場面も説明します。

HTML講座 / textarea・select・option・buttonを使う

HTML講座 / textarea・select・option・buttonを使う

複数行入力、選択メニュー、送信・リセット・通常ボタンを使い分けます。表示ラベルと送信値、初期値と現在値を実際のフォームで比較する方法も紹介します。

HTML講座 / placeholderと入力中も残る案内文を付ける

HTML講座 / placeholderと入力中も残る案内文を付ける

label、placeholder、valueの違いを学びます。inputとtextareaの例、aria-describedbyによる説明の関連付け、フォームデータで送られる値の確認方法も紹介します。

HTML講座 / labelとinputを正しく関連付ける

HTML講座 / labelとinputを正しく関連付ける

labelのforとinputのidを対応させる方法を学びます。idと送信時のnameの違い、重複IDの問題、placeholderがラベルの代わりにならない理由も説明します。

HTML講座 / セマンティック要素でページの領域を分ける

HTML講座 / セマンティック要素でページの領域を分ける

header、nav、main、article、section、aside、footerの役割を学びます。見た目の配置と意味を区別し、複数のナビゲーションを識別する方法も紹介します。

HTML講座 / table・tr・th・tdで表を作る

HTML講座 / table・tr・th・tdで表を作る

行と列を持つデータをHTMLの表で表す基本を学びます。見出しセルとデータセル、theadとtbody、横幅が広い表のスクロール方法も紹介します。

HTML講座 / srcset・sizes・pictureでレスポンシブ画像を作る

HTML講座 / srcset・sizes・pictureでレスポンシブ画像を作る

同じ構図の解像度選択と、画面幅に応じた構図変更を区別して学びます。w記述子、ピクセル密度、currentSrcによる確認方法と、キャッシュが比較に与える影響も解説します。

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

HTML講座 / fieldset・legend・autocompleteでフォームを説明する

関連する入力をfieldsetでまとめ、legendで質問を示す方法を学びます。ラジオグループを独立させるnameと、自動入力の目的を示すautocompleteの違いも解説します。

HTML講座 / HTML文書の基本構造

HTML講座 / HTML文書の基本構造

doctype、html、head、bodyの役割と、文字コード・文書タイトル・viewportの設定を解説します。ファイルの保存から表示確認、表示されない場合の調べ方まで学べます。