アクセシブルなフォーム設計ガイド:ラベル、入力支援、エラー通知の実装例

Green key with wheelchair icon on white laptop keyboard. Accessibility disability computer symbol

Webフォームは、問い合わせ、会員登録、購入など、利用者が目的を達成するための窓口です。

項目の意味が分からない、入力条件を後から知らされる、エラー箇所へ戻れないといった問題があると、利用者は送信まで進みにくくなります。

フォームアクセシビリティとは、見え方や操作方法、利用する支援技術にかかわらず、必要な情報を理解し、入力し、誤りを直して送信できるようにフォームを設計することです。

本記事では、ラベル、入力ヒント、エラー通知、ARIA、キーボード操作を一つの流れとして整理します。

アクセシブルなフォームの基本原則

入力欄を増やす前に、利用者が「何を入力するか」「どの形式で入力するか」「間違えたらどう直すか」を理解できる構造を作ります。

  • 名前を示す:各入力欄に、目的が分かるラベルを付けます。
  • 条件を先に示す:必須か任意か、文字数や入力例などを入力前に伝えます。
  • 色だけに頼らない:必須、選択中、エラーなどの状態を文字や形でも示します。
  • 現在位置を見失わせない:キーボードで移動したときのフォーカスを見える状態にします。
  • 修正方法まで伝える:エラーの場所と内容に加え、直し方を具体的に示します。

画面リーダーは、画面上の文字や操作部品の情報を音声などで伝える支援技術です。

見た目の配置だけで関係を表すのではなく、HTMLでもラベル、ヒント、エラーを入力欄に結び付ける必要があります。

ラベル、プレースホルダー、ヒントの役割

ラベル、プレースホルダー、ヒントは似ていますが、役割は同じではありません。

要素 役割 使い方
ラベル 入力欄の目的を示す 原則として常に表示し、入力欄とHTMLで関連付ける
プレースホルダー 短い入力例を示す 補助として使い、ラベルの代わりにしない
ヒント 形式や条件を説明する 必要な入力欄の近くに置き、aria-describedbyで関連付ける

ラベルを入力欄に結び付ける

<label>for属性と入力欄のid属性には、同じ値を指定します。

この関連付けにより、ラベルを選択して入力欄へフォーカスを移すことができ、支援技術も入力欄の名前を取得できます。

<label for="email">メールアドレス(必須)</label>
<input type="email" id="email" name="email" required>

「必須」を記号だけで示すと意味が伝わらない場合があります。

記号を使う場合も、フォームの冒頭で意味を説明するか、ラベル内に「必須」と書きます。

プレースホルダーをラベルにしない

プレースホルダーは入力を始めると見えなくなるため、入力内容を確認するときの手掛かりとして残りません。

ラベルは外に表示したままにし、プレースホルダーは例示が必要な場合だけ補助的に使います。

ヒントを入力欄に関連付ける

パスワードの条件や入力形式は、利用者が入力を始める前に読める位置へ置きます。

<label for="password">パスワード</label>
<input type="password" id="password" aria-describedby="password-help">
<p id="password-help">8文字以上で入力してください。</p>

aria-describedbyには、説明文のidを指定します。

これにより、支援技術はラベルに続けて入力条件を参照できます。

入力エラーを全体と項目の両方で伝える

送信時に複数の誤りが見つかった場合は、フォーム上部のエラー概要と、各入力欄の近くにある個別メッセージを併用します。

概要は修正が必要な項目を一覧で示し、個別メッセージは「どこが」「なぜ」「どう直すか」を具体的に伝えます。

<div id="error-summary" role="alert" tabindex="-1">
  <h2>入力内容を確認してください</h2>
  <ul>
    <li><a href="#email">メールアドレスを入力してください</a></li>
  </ul>
</div>

<label for="email">メールアドレス(必須)</label>
<input type="email" id="email" name="email" required
       aria-invalid="true" aria-describedby="email-error">
<p id="email-error">メールアドレスを入力してください。</p>

検証前からaria-invalid="true"を付けるのではなく、誤りが確認された入力欄に設定します。

送信に失敗した後は、エラー概要または最初のエラー項目へフォーカスを移し、利用者が修正を始められるようにします。

メッセージの書き方と確認方法は、フォームの入力エラーを分かりやすく伝える実装とテストでも詳しく解説しています。

リアルタイム通知は回数を抑える

入力中に検証する場合は、一文字入力するたびに同じエラーを通知しないようにします。

入力欄から移動したときや送信時など、修正に移れる時点で通知すると、何を直すべきかを追いやすくなります。

role="alert"aria-liveは動的な通知に使えますが、多く配置すると読み上げが重なります。

通知領域を絞り、実際の画面リーダーで順序と回数を確認します。

標準HTMLを土台にARIAを補助として使う

ARIAは、操作部品の役割、状態、ほかの要素との関係を支援技術へ伝えるための属性群です。

標準HTMLで表せる情報は標準HTMLを使い、そこでは表せない状態や関連をARIAで補います。

属性または要素 伝える内容 使用時の注意
required 標準HTMLの入力欄が必須であること 見た目にも「必須」と表示する
aria-required="true" 支援技術に必須状態を伝えること 属性だけでは入力を検証しない
aria-invalid="true" 現在の入力値に誤りがあること 検証結果に合わせて値を更新する
aria-describedby 入力欄とヒントやエラーの関係 参照先のidを正しく指定する
role="alert" すぐに伝える必要がある動的な通知 通知の重複や読み上げ過多を確認する

属性を追加しただけでアクセシブルになるわけではありません。

表示される文言、HTMLの関連付け、検証後の状態更新、フォーカス移動が一致しているかを確認します。

キーボード操作とフォーカスを確認する

フォーカスは、キーボード操作の対象になっている入力欄やボタンを示す現在位置です。

Tabキーで移動したときにフォーカスが見えなければ、利用者はどこを操作しているか判断できません。

  • Tabキーで、画面上の意味に沿った順序で項目を移動できるか。
  • フォーカスの輪郭が背景やエラー表示に埋もれていないか。
  • キーボードだけで入力、選択、送信、エラー修正を完了できるか。
  • エラー後のフォーカス移動で、入力済みの内容や現在位置を見失わないか。

確認方法は、キーボード操作とフォーカス表示の実務も参考になります。

設計から公開までの実装手順

  1. 入力要件を整理する:必要な項目だけを残し、必須か任意か、受け付ける形式、エラー条件を決めます。
  2. ラベルと説明を書く:入力欄を見なくても目的が分かるラベルを付け、必要な条件を入力前に示します。
  3. 標準HTMLで実装する:ラベルと入力欄を関連付け、requiredなどの標準機能を使います。
  4. ARIAで関係と状態を補う:ヒント、エラー、動的通知を必要な入力欄に結び付けます。
  5. 見た目を整える:フォーカスとエラーを見分けられるようにし、色だけで状態を伝えないようにします。
  6. 動作を検証する:キーボードと画面リーダーで、入力開始からエラー修正、送信完了まで確認します。
  7. ルールを記録する:ラベル、エラー文、状態更新、テスト項目をチームの実装ルールに残します。

担当者ごとの確認ポイント

担当 確認する内容
Web担当者 項目数と入力手順が目的に対して過剰でないか
UXライター ラベル、ヒント、エラー文から必要な行動を理解できるか
フロントエンド開発者 HTMLの関連付け、状態更新、フォーカス移動が一致しているか
QA担当者 キーボードと画面リーダーで修正から送信まで完了できるか

担当ごとに確認範囲を分けても、最終的には一つの操作の流れとして試します。

設計資料では分かりやすくても、実装後の通知順やフォーカス移動で問題が生じる場合があるためです。

公開前チェックリスト

  • すべての入力欄に、目的が分かる表示ラベルがある。
  • プレースホルダーだけで項目名や条件を伝えていない。
  • 必須項目を文字で示し、HTMLでも必須状態を指定している。
  • ヒントとエラーの文が、対応する入力欄に関連付いている。
  • エラー文が場所、内容、修正方法を具体的に示している。
  • 色だけで必須、選択中、エラーを区別していない。
  • キーボードで移動でき、フォーカスが常に見える。
  • 送信失敗後、エラー概要または修正箇所から操作を再開できる。
  • 画面リーダーでラベル、ヒント、エラー、完了通知の順序を確認した。
  • 設計、実装、テストのルールを更新担当者と共有している。

フォーム設計でそろえるべき三つの情報

アクセシブルなフォームでは、画面に見える説明、HTMLで表した関係、操作中に変化する状態の三つをそろえます。

ラベルとヒントで入力前の迷いを減らし、具体的なエラー文とフォーカス移動で修正を助けます。

標準HTMLを土台に必要なARIAだけを加え、キーボードと画面リーダーで送信まで確認することが、実装を安定させる手順です。

この記事に関連する株式会社greedenの取り組み

フォームの使いにくさは、必要な手続きを途中で諦める原因になります。株式会社greedenは、Webアクセシビリティのチェックサービスを通じて、文字の読みやすさや操作のしやすさを見直すWebサイト改善をお手伝いします。

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)