フォーム入力時の「エラーメッセージの見せ方」で離脱を防ぐ|現場で使える実践テクニック

C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!

今日は「フォーム入力時のエラーメッセージの見せ方」について解説します。

エラーメッセージは「優しさ」が大事

僕が前の案件で痛感したことなんですが、エラーメッセージって、実はめっちゃ重要な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制作で困ったことがあったら、またこのブログを覗いてくださいね!

― クリオ