edubun
日本語

フォームのラベル

「Email」という語の隣にあるテキストボックスは、label 要素と結びつけるまではラベルが付いていません。それまでは、スクリーンリーダーは「編集テキスト」としか言わないかもしれません。

どの入力欄にも名前が必要

フォーカスがフォームの入力欄に来ると、スクリーンリーダーはそのラベル、種類、状態を「Email、編集テキスト、必須」のように読み上げます。ラベルは、入力欄と結びつけた label 要素から来ます。結びつけ方は2つあります。input に id を、label にそれと同じ値の for を付けるか、input を label の中に入れるかです。どちらの方法でも、ラベルのテキストをクリックすると入力欄にフォーカスが移るので、小さなチェックボックスやラジオボタンがずっと押しやすくなります。

<label for="email">Email</label>
<input id="email" type="email" autocomplete="email">

<label>
  <input type="checkbox" name="news"> Send me the weekly menu
</label>
入力欄にラベルを付ける2つの方法:for と id、または囲む方法。

WCAG 2.2のレベルAの達成基準3.3.2「ラベル又は説明」は、コンテンツが利用者の入力を必要とするときには必ずラベルか説明を求めます。また、1.3.1「情報及び関係性」は、ラベルと入力欄の結びつきが画面の上だけでなくコードの中にあることを求めます。たまたま input の上にある段落は、見た目で近いだけです。その2つがひと組だと支援技術に伝えるものは何もありません。

プレースホルダーはラベルではない

placeholder 属性は、空の入力欄の中に灰色のヒントのテキストを表示します。ラベルの代わりに使いたくなりますし、多くの登録フォームがそうしています。困るのは、入力を始めたとたんに消えてしまうので、その欄が何のためのものだったか確かめられないことです。それに、ふつうは前のユニットのコントラストのルールに不合格になるほど薄い色です。見えるラベルを使い、必要なら例の値を示すプレースホルダーもあわせて使いましょう。

グループ、目的、エラー

ラジオボタンや関連するチェックボックスにも、グループのラベルが必要です。fieldset で囲み、その legend に質問を書きます。すると、スクリーンリーダーは「Small、ラジオボタン、3個中1個目」の前に「Size、グループ」と言います。個人情報には autocomplete 属性を使います。name、email、tel、new-password、one-time-code のようなHTML標準の名前で、その欄が何のためのものかをブラウザーに伝えます。レベルAAの達成基準1.3.5「入力目的の特定」がまさにこれを求めています。ブラウザーが欄を自動で入力できるようになり、ツールによっては欄の隣に見慣れたアイコンを表示できるからです。

何かがうまくいかなかったときは、言葉でそう伝えます。達成基準3.3.1「エラーの特定」は、入力エラーを枠線を赤くするだけでなく、テキストで特定して利用者に説明することを求めます。WCAG 2.2は3.3.7「冗長な入力」も加えました。同じ手続きの中ですでに入力した情報は、2回入力させるのではなく、自動で入力しなおすか、選べるようにします。また、レベルAAの3.3.8「アクセシブルな認証(最低限)」は、助けがない限り、ログインの手順が何かを覚えたり書き写したりすることにたよってはならないとしています。パスワードマネージャーに入力させることや、貼り付けを許すことは、どちらもその助けに当たります。

始める前に、必要なことを伝える

説明は、失敗した後のエラーメッセージではなく、それが説明する入力欄の前に置きます。パスワードが15文字以上必要なら、ラベルの隣にそう書きます。必須の欄は、たとえば「required」という言葉でラベルのテキストに示し、required 属性も付けてブラウザーにも伝えさせます。エラーメッセージが出るときは、その入力欄の隣に置き、メッセージの id を指す aria-describedby で2つを結びつけます。すると、入力欄にフォーカスが来たときにスクリーンリーダーがメッセージを読みます。最後に、問題のある最初の入力欄か、上部のエラーの一覧にフォーカスを移します。そうすれば、キーボードの利用者が長いフォームのいちばん下で何が起きたのかと取り残されずに済みます。

label for="x"ラベルを id="x" の入力欄と結びつける
WCAG 3.3.2ラベル又は説明(A)
WCAG 1.3.5入力目的の特定(AA):autocomplete
fieldset + legendラジオボタンとチェックボックスのグループのラベル
WCAG 3.3.7冗長な入力(A)、2.2で新しく追加
WCAG 3.3.8アクセシブルな認証(最低限)、AA:貼り付けとパスワードマネージャーを許す
ポイント
  • 入力欄は、for と id で、または囲んで、ラベルと結びつけます。
  • プレースホルダーは消えてしまい、薄すぎることも多いので、ラベルにはなりません。
  • ラジオボタンは fieldset と legend でまとめ、個人情報には autocomplete を使います。
  • エラーはテキストで説明し、ログインのために入力しなおしや暗記をさせません。
  1. label のどの属性が、その input の id を指しますか?
  2. プレースホルダーだけではラベルとして足りないのはなぜですか?
    • 入力すると消え、薄すぎることも多いから
    • ブラウザーが無視するから
    • HTMLで認められていないから
    • スマートフォンでしか動かないから
  3. ラベルをチェックボックスと結びつけると、ほかに何が起こりますか?
    • ラベルのテキストをクリックするとチェックが入る
    • チェックボックスが大きくなる
    • フォームが送信される
    • ほかには何も起こらない
  4. ラジオボタンのグループに質問を付ける要素はどれですか?
    • fieldset と legend
    • div と span
    • form と button
    • ul と li
  5. メールアドレスの入力欄に使うべき autocomplete の値はどれですか?
  6. 個人情報の入力欄にその目的を特定させる達成基準はどれですか?
    • 1.3.5 入力目的の特定
    • 1.1.1 非テキストコンテンツ
    • 2.4.7 フォーカスの可視化
    • 1.4.1 色の使用
  7. エラーが赤い枠線だけで示されています。何が足りないのですか?
    • エラーのテキストでの説明
    • もっと明るい赤
    • 音
    • もっと太い枠線
  8. ログインフォームが、パスワード欄への貼り付けを禁止しています。これはWCAG 2.2のどの達成基準に反しますか?
    • 3.3.8 アクセシブルな認証(最低限)
    • 2.4.6 見出し及びラベル
    • 1.4.3 コントラスト(最低限)
    • 2.5.8 ターゲットのサイズ(最低限)
  9. 購入手続きで、次の手順でもう一度配送先の住所を聞かれます。役に立つ達成基準はどれですか?
    • 3.3.7 冗長な入力
    • 2.1.1 キーボード
    • 1.3.1 情報及び関係性
    • 2.4.3 フォーカス順序
  10. 正しくラベルが付いている入力欄はどれですか?
    • City

このコースの出典 (9)
  • W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
  • W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
  • W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
  • W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
  • MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
  • MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
  • MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

確認日: 2026-10-17