フォーム入力時の「エラーメッセージの見せ方」で離脱を防ぐ|現場で使える実践テクニック
こんにちは!
今日は「フォーム入力時のエラーメッセージの見せ方」について解説します。
エラーメッセージは「優しさ」が大事
僕が前の案件で痛感したことなんですが、エラーメッセージって、実はめっちゃ重要なUI要素なんです。
ユーザーが「あ、入力間違えた」って気付く瞬間ですからね。
ここで、冷たい表現を使ってしまうと、それだけでユーザーは離脱してしまいます。
具体的な失敗例を話しますね。
昔、僕が作ったフォームには「エラー:メールアドレスが不正です」って表示していたんです。
でも実は、単なるタイポかもしれないし、ユーザーは混乱してるんですよ。
それを「@」を含めてください、とか「.jp」などの形式が必要です、っていう具体的なアドバイスに変えたら、完成率がめっちゃ上がったんです。
つまり、エラーメッセージは「あなたが悪い」じゃなくて「一緒に解決しましょう」っていう姿勢で書くといいですよ。
ユーザーは指摘されるのを嫌うんじゃなくて、どうしたらいいかわからないことを嫌うんです。
色だけに頼らないデザイン
現場でよく見るのは「赤色でエラーを表示すればいい」っていう考え方です。
ほんま、これだけじゃ足りません。
理由は2つあります。
ひとつは色覚異常のあるユーザーが、赤と黒を区別できないケースがあること。
もうひとつは、スクリーンリーダーを使ってるユーザーは色情報をまったく認識できないってことです。
だから、エラー表示には、以下の要素を組み合わせるといいですよ:
- 赤色(視覚的なサイン)
- 警告アイコン(アイコンのシェイプ)
- テキストメッセージ(明確な説明)
aria-alertまたはrole="alert"属性(スクリーンリーダー対応)
HTMLとしては、こんな感じで書くといいですよ:
<div role="alert" aria-live="polite" style="color: red; padding: 12px; border-left: 4px solid red;"><strong>エラー:</strong> メールアドレスの形式が違います。</div>
role="alert" をつけることで、支援技術は即座にこの要素が重要だと認識します。aria-live="polite" を使えば、ユーザーの操作を邪魔しない程度のタイミングでアナウンスされます。
最初は戸惑うかもしれませんが、これめっちゃ大事なんですよ。
リアルタイムフィードバックのタイミング
もう一つ、現場で議論になりやすいのが「いつエラーを表示するか」ってことです。
よくある勘違いは「フォーム送信時だけにエラーを出す」っていうパターン。
ユーザーが全部入力して送信ボタンを押してから「このフィールドが間違ってます」って言われたら、ストレスですやん。
最近の良いUXパターンは「フォーカスを外した時点でバリデーション」です。
つまり、ユーザーがフィールドを入力し終わって、次のフィールドに移った瞬間に、前のフィールドの内容をチェックする。
そして、ダメなら即座にエラーメッセージを表示する。
こうすることで、ユーザーはリアルタイムで「あ、ここは直さないといけないんだ」って気付けます。
最後に「全部間違ってた」っていう悲劇を避けられるんですよ。
実装としては、@blur イベント(Vue.js の場合)や addEventListener('blur', ...)(バニラJSの場合)を使って、フォーカスが外れたタイミングで検証関数を呼び出すといいですよ。
アクセシビリティを忘れずに
ここまでで色々と話してきましたが、最後に大事なことをもう一つ。
エラーメッセージのコンテナに、適切なラベルやARIA属性をつけることです。
例えば、メールアドレスフィールドのエラーだったら、こんな感じで関連付けるといいですよ:
<label for="email">メールアドレス</label>
<input id="email" type="email" aria-describedby="email-error" />
<div id="email-error" role="alert">有効なメールアドレスを入力してください</div>
aria-describedby を使うことで、スクリーンリーダーはメールアドレスフィールドを読み上げる際に、エラーメッセージも一緒に説明として読み上げてくれます。
ほんま、これって小さいことに見えるんですが、支援技術を使ってるユーザーにとっては大きな違いなんです。
まとめ
エラーメッセージの見せ方は、フォーム完成率に直結する重要な要素です。
ポイントをまとめるとこんな感じです:
- ユーザーを責めるんじゃなくて、具体的な解決方法を提示する
- 色だけじゃなくて、アイコンとテキストも組み合わせる
- ARIA属性でスクリーンリーダー対応を忘れずに
- リアルタイムフィードバック(フォーカス外れたタイミング)を活用する
- エラーメッセージとフィールドの関連付けを明確にする
これらを実装することで、ユーザーはストレスなくフォームを完成させられます。
そして何より、離脱率が下がって、コンバージョンが上がりますよ。
Web制作で困ったことがあったら、またこのブログを覗いてくださいね!
― クリオ