メインコンテンツへスキップ

フォーム離脱率を下げる7つのUXチェックポイント

この記事の要点

フォームの離脱率を下げるには、ラベルの常時表示、エラーのフィールド直下表示、正しい input type の指定、必須項目の明示、送信中の二重送信防止、フィールド数の最小化、送信後のフィードバック表示の7つが重要です。いずれも特別な技術なしで今すぐ実装できる改善ばかりです。本記事では、多くのサイトの UX レビューで見てきた実例をもとに、各チェックポイントをコード例付きで解説します。

はじめに

フォームは Web サイトのコンバージョンポイントです。問い合わせフォーム、サインアップフォーム、決済フォーム——ユーザーが「行動する」瞬間は、すべてフォームを経由します。

ここで離脱されると、それまでの集客コスト(広告費、SEO 施策、コンテンツ制作)がすべて無駄になります。

これまで多くのサイトの UX レビューを行ってきましたが、フォームの問題は驚くほど共通しています。この記事では、離脱率を下げるための 7 つのチェックポイントを、コード例付きで共有します。

1. ラベルを省略しない

placeholder だけで入力欄の説明をしているフォームが非常に多いです。これは UX 上の大きな問題です。

placeholder は入力を始めると消えます。ユーザーは「何を入力すべきだったか」を忘れ、一度入力した内容を消して確認し直すことになります。

ラベルは input の上に常時表示してください。

<!-- 良い例 -->
<label for="email">メールアドレス</label>
<input type="email" id="email" placeholder="you@example.com" />

<!-- 悪い例: placeholder がラベルを兼ねている -->
<input type="email" placeholder="メールアドレス" />

placeholder はあくまで「入力例」を示すものです。ラベルの代わりにはなりません。

2. エラーは該当フィールドの直下に表示する

ページ上部にエラーをまとめて表示するパターンをよく見かけます。「入力内容に誤りがあります」とだけ表示されても、ユーザーは 10 個のフィールドの中から問題箇所を自力で探すことになります。

エラーメッセージは、該当フィールドの直下に表示してください。さらに、「何が間違っているか」ではなく「どう直せばいいか」を伝えることが重要です。

<!-- 良い例 -->
<label for="tel">電話番号</label>
<input type="tel" id="tel" aria-describedby="tel-error" />
<p id="tel-error" style="color: var(--c-error);">
  半角数字でハイフンなしで入力してください(例: 09012345678)
</p>

<!-- 悪い例 -->
<p>入力内容にエラーがあります。</p>

3. 入力タイプを正しく指定する

type 属性と inputmode 属性を正しく指定するだけで、モバイルでの入力体験が劇的に変わります。メールアドレスなら @ 付きキーボード、電話番号なら数字キーボードが表示されます。

<input type="email" autocomplete="email" />
<input type="tel" autocomplete="tel" />
<input inputmode="numeric" pattern="[0-9]*" />

autocomplete 属性も忘れずに指定してください。ブラウザが保存済みの情報を自動入力してくれるため、ユーザーの入力負荷が大幅に減ります。

4. 必須項目を明示する

どのフィールドが必須で、どれが任意かわからないフォームは、ユーザーに「全部埋めなきゃいけないのか」というストレスを与えます。

必須項目にはアスタリスク(*)または「必須」ラベルを明示してください。

<label for="name">お名前 <span aria-label="必須">*</span></label>
<input type="text" id="name" required />

<label for="company">会社名(任意)</label>
<input type="text" id="company" />

任意のフィールドが少ない場合は必須側にマークを付け、任意のフィールドが多い場合は任意側に「(任意)」と付ける方が認知負荷が低くなります。

5. 送信ボタンの状態を管理する

送信ボタンを連打できる状態は、二重送信の原因です。決済フォームでは二重課金につながる致命的な問題になります。

送信ボタンには、最低限 3 つの状態を実装してください。

状態ボタンの表示動作
通常「送信する」クリック可能
送信中「送信中…」+ ローディングdisabled
エラー「送信する」に戻る再クリック可能

送信中は disabled 属性を付与し、視覚的にもローディング状態であることを示します。

6. フィールド数を最小限にする

フィールドが 1 つ増えるごとに離脱率は上がります。フォームを設計するときは、すべてのフィールドに対して「この情報は今この瞬間に本当に必要か?」を問い直してください。

よくある削減パターンを挙げます。

フィールド数が半分になれば、離脱率は確実に下がります。

7. 送信後のフィードバックを設計する

フォーム送信後に何も起きない——これはユーザーに「送信できたのか?」という不安を与える最悪の UX です。

送信後に最低限必要なフィードバックは以下の 3 つです。

  1. 完了メッセージ: 「送信しました。3 営業日以内にご返信します。」
  2. 次に何が起きるかの説明: 「ご入力いただいたメールアドレスに確認メールをお送りしました。」
  3. 確認メールの送信(可能であれば): ユーザーの手元に記録が残る

「送信しました」の一言だけでも、何も表示しないよりはるかに良いです。

まとめ — フォームはプロダクトの「最後の関門」

7 つのチェックポイントを一覧にまとめます。

#チェックポイント確認方法
1ラベルが常時表示されているかplaceholder だけになっていないか確認
2エラーがフィールド直下に出るかわざとエラーを起こして確認
3入力タイプが正しいかモバイルでキーボードを確認
4必須項目が明示されているか初見で必須/任意がわかるか
5送信中の状態管理があるか連打してみて確認
6不要なフィールドがないか各フィールドの必要性を問う
7送信後のフィードバックがあるか実際に送信して確認

これらはどれも特別な技術やライブラリを必要としません。HTML の属性を正しく使い、ユーザーの視点でフォームを見直すだけで改善できる項目です。

まずは自分のサイトのフォームを、この 7 項目でチェックしてみてください。半分以上に問題があるフォームは珍しくありません。