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キーで、画面上の意味に沿った順序で項目を移動できるか。
- フォーカスの輪郭が背景やエラー表示に埋もれていないか。
- キーボードだけで入力、選択、送信、エラー修正を完了できるか。
- エラー後のフォーカス移動で、入力済みの内容や現在位置を見失わないか。
確認方法は、キーボード操作とフォーカス表示の実務も参考になります。
設計から公開までの実装手順
- 入力要件を整理する:必要な項目だけを残し、必須か任意か、受け付ける形式、エラー条件を決めます。
- ラベルと説明を書く:入力欄を見なくても目的が分かるラベルを付け、必要な条件を入力前に示します。
- 標準HTMLで実装する:ラベルと入力欄を関連付け、
requiredなどの標準機能を使います。 - ARIAで関係と状態を補う:ヒント、エラー、動的通知を必要な入力欄に結び付けます。
- 見た目を整える:フォーカスとエラーを見分けられるようにし、色だけで状態を伝えないようにします。
- 動作を検証する:キーボードと画面リーダーで、入力開始からエラー修正、送信完了まで確認します。
- ルールを記録する:ラベル、エラー文、状態更新、テスト項目をチームの実装ルールに残します。
担当者ごとの確認ポイント
| 担当 | 確認する内容 |
|---|---|
| Web担当者 | 項目数と入力手順が目的に対して過剰でないか |
| UXライター | ラベル、ヒント、エラー文から必要な行動を理解できるか |
| フロントエンド開発者 | HTMLの関連付け、状態更新、フォーカス移動が一致しているか |
| QA担当者 | キーボードと画面リーダーで修正から送信まで完了できるか |
担当ごとに確認範囲を分けても、最終的には一つの操作の流れとして試します。
設計資料では分かりやすくても、実装後の通知順やフォーカス移動で問題が生じる場合があるためです。
公開前チェックリスト
- すべての入力欄に、目的が分かる表示ラベルがある。
- プレースホルダーだけで項目名や条件を伝えていない。
- 必須項目を文字で示し、HTMLでも必須状態を指定している。
- ヒントとエラーの文が、対応する入力欄に関連付いている。
- エラー文が場所、内容、修正方法を具体的に示している。
- 色だけで必須、選択中、エラーを区別していない。
- キーボードで移動でき、フォーカスが常に見える。
- 送信失敗後、エラー概要または修正箇所から操作を再開できる。
- 画面リーダーでラベル、ヒント、エラー、完了通知の順序を確認した。
- 設計、実装、テストのルールを更新担当者と共有している。
フォーム設計でそろえるべき三つの情報
アクセシブルなフォームでは、画面に見える説明、HTMLで表した関係、操作中に変化する状態の三つをそろえます。
ラベルとヒントで入力前の迷いを減らし、具体的なエラー文とフォーカス移動で修正を助けます。
標準HTMLを土台に必要なARIAだけを加え、キーボードと画面リーダーで送信まで確認することが、実装を安定させる手順です。
この記事に関連する株式会社greedenの取り組み
フォームの使いにくさは、必要な手続きを途中で諦める原因になります。株式会社greedenは、Webアクセシビリティのチェックサービスを通じて、文字の読みやすさや操作のしやすさを見直すWebサイト改善をお手伝いします。
