UIXHERO

フォームとエラーハンドリング(Forms & Errors)|アクセシビリティ

誰もが迷わず入力でき、失敗から確実に回復できるフォーム設計。ラベルの適切な紐付け、エラー状態の明示、そしてユーザーの認知負荷を下げるアプローチ。

2026年3月22日
更新: 2026年8月27日
6
by Dengen Yosho(DGYS)

この技術・考え方で達成できること

  • 確実な目的達成: 「何を入力すべきか」「どこが間違っていたか」が一目で直感的にわかり、ユーザーがタスクを完了できる
  • 認知負荷の削減: 「あの項目は何だったっけ?」と記憶力に頼らせることを防ぎ、ストレスなく入力できる
  • 入力離脱(カゴ落ち)の防止: 途中でパニックになり、入力を投げ出してしまうユーザーを劇的に減らす

: この対応は、認知機能障害や学習障害(恒常的な障害)を持つユーザーだけでなく、「歩きスマホ中や急いで電車を降りる直前で、注意力や記憶力が著しく低下している状態の人(状況的な障害)」が、クレジットカード情報を間違えずに決済できるかどうかを決定づけます。


なぜ対応が難しいか(または後回しにされるか)

デザイナーが「シンプルでミニマルな」を追求するあまり、以下のパターンに陥りやすいためです。

  1. ラベルの省略: 見た目をスッキリさせるために、 <label> を置かずにプレースホルダー(入力欄の中の薄い文字)だけで何を入力するかを代替してしまう。
  2. 色だけのエラー表現: エラーが起きたとき、メッセージを出さずに「入力欄の枠線を赤くするだけ」で表現してしまう。

これらは、特定の利用環境下において「何を入力する欄だったか忘れる」「エラーの色に気づかない」といった致命的なバリアを生み出します。


解決パターン(Before/After)

❌ Before: プレースホルダーをラベル代わりに使う

<input type="email" placeholder="メールアドレスを入力">

なぜ問題か: プレースホルダーは、ユーザーが文字を1文字でも入力すると消えてしまいます。「あれ、ここは勤務先のメールアドレスだっけ?個人のだっけ?」と迷ったとき、入力した文字をすべて消さないと確認できません。また、薄い文字は比が低く、読みにくいことが多いです。

✅ After: 常に表示されるラベルとの強固な紐付け

<label for="user_email">メールアドレス</label>
<input type="email" id="user_email" placeholder="例: taro@example.com">

なぜ改善されるか: 入力欄の外(上部など)に常に表示される <label> を置くことで、ユーザーはいつでも入力の目的を確認できます。さらに for 属性と id 属性で紐付けることで、「ラベルの文字(メールアドレス)をクリックしても入力欄にフォーカスが当たる」ようになり、タッチエリアが広がってスマホでも圧倒的に操作しやすくなります。同時に、スクリーンリーダーにもフォームの意味が正確に伝わります。


意図の伝達(デザイナー × エンジニア)

❌ システム都合のエラーメッセージと丸投げ

デザイナーの視点: 「エラーの時は、入力欄の下に赤文字でAPIからのエラーコードをそのまま出してください」 エンジニアの視点: 「Invalid format or length exceeded. と赤字で出ます」

なぜ衝突するか: ユーザーが求めているのは「技術的な理由」ではなく、「具体的な直し方」だからです。

どう合意するか: 「エラー状態と具体的な解決策を、誰が見てもわかるようにセットで設計する」ことに合意します。 また、ページ上部には「どこにエラーがあるか」のエラーサマリーを配置し、全体を一目で俯瞰できるようにします。 エンジニアは aria-invalid=\"true\" などの属性設定と、aria-describedby=\"email-error\" 等を用いて入力欄にエラーテキストをプログラム的に紐付けます。一方でデザイナーは、「※パスワードは半角英数字8文字以上で入力してください」という具体的でアクション可能なテキストのルールを取り決めます。 さらに、「全角で入力されたらシステム側で可能な範囲で半角に変換・補正し、どうしても補正できない場合は具体的に案内する(入力を強制しない)」という<span class="no-glossary">の向上策も合わせて検討すると、最良の体験になります。


実践チェックリスト

最低ライン(Must)

[ ] すべてのフォーム要素(<input>, <textarea>, <select>)に、明確な意味を持つ <label> が存在し、for/id 属性等でプログラム的にも紐付いている [ ] エラー状態を「色」という単一の手段だけで伝えず、色+「エラーアイコン」や「具体的なエラーメッセージ」を必ず併記している [ ] 必須項目か任意項目かが、単なる「*」マークや色だけでなく、「必須」「任意」といった明確なテキストで明示されている

理想ライン(Better)

[ ] 送信エラーが発生した際、ページ上部にエラーサマリーを表示し、どの項目が間違っているか、どう修正すべきかが一箇所ですぐに分かる仕組みを作っている [ ] 電話番号のハイフン有無や、半角/全角カナなどの「フォーマット」をユーザーに厳密に強制せず、システム側で可能な範囲で自動変換・補完を行っている [ ] Webautocomplete 属性を活用し、ユーザーのブラウザに保存された情報(名前、住所、カード情報など)での自動入力をサポートしている


まとめ

  • この記事の本質: フォームとエラー設計は「システムを壊させない」ためではなく、「ユーザーに最後までタスクを完遂させる」ためのホスピタリティである。
  • 誰のどんな課題を解決するか: 認知的な負荷を感じやすい人や、急いでいてミスをしやすい<span class="no-glossary">下の人の「記憶への負担」と「失敗からの復帰不能バリア」を解消する。
  • 実務での判断軸: 「入力途中で一瞬目をそらし、もう一度見たときに、どこに何を入力すればいいか瞬時に思い出せるか?」
  • 次に学ぶべき知識: アクセシビリティテストの手法(これまでの知識が守られているかを持続的に<span class="no-glossary">する戦略)

目的別のおすすめ:

この原則を実装で見る

この原則が実装でどう形になるかを、GUNJO の部品で確かめられます。

更新のお知らせ

サイトに載せていない実例や、新しい記事のお知らせはこちらで出しています。

読んだ内容を、自分の画面に当てるとき

UIXHEROは、記事を書くほかに、画面の検品・判定、デザインシステムの構築、実装と改善の伴走を受けています。何を頼めばいいか決まっていない段階の相談も、同じ窓口で受けます。

UIXHEROに頼めることを見る

※ 記事の内容についての質問や、書いてほしいテーマの要望も同じ窓口で受けています

記事をシェア

メールでお知らせを受け取る

最終更新: 2026年8月27日

この記事を書いた人

Dengen Yosho(DGYS)

Dengen Yosho(DGYS)

UI/UXデザイナー兼デザインエンジニア デザイン歴25年以上 情報設計〜UIデザイン〜React/TypeScriptによる実装までを一気通貫で担当 大手企業のDXプロジェクトや決済アプリ領域で、デザインリードとして改善と構築を経験 現在はフリーランスとして、プロダクトのUI/UX改善とデザインシステム構築を支援 長年の実務の中で感じてきたのは、 「良いUI」はセンスではなく、再現可能な判断の積み重ねであるということ UIXHEROは、 心理学や行動科学の知見を、現場で使える設計言語に翻訳するための場所 関心領域は「ユーザーの行動が変わるUI」 人の認知・注意・意思決定の構造を理解し、 “なぜそのUIが機能するのか”を言語化することを目指している

あわせて読みたい

この記事に関連する記事をご紹介します

UXとは?UIとの違い・UXデザインの基本をわかりやすく解説

UXとは、ユーザーが製品やサービスを通じて得る体験全体のことです。本記事では、UIとの違い、UXデザインの考え方、なぜ重要なのかを初心者向けにわかりやすく解説します。

2026年3月22日
10

アクセシビリティとインクルーシブデザインの違いとは?目標と手段の正しい関係

「アクセシビリティ」と「インクルーシブデザイン」は混同されやすい概念です。本記事では、両者の決定的な違いと、デザインプロセスでの正しい関係性を解説します。

2026年3月24日
9

アクセシビリティとユーザビリティの違いとは?両立させる設計の考え方

「アクセシビリティ」と「ユーザビリティ」は混同されやすい概念です。本記事では、WCAGとISO 9241の定義に基づき、両者の決定的な違いと、UIデザインで両立させる方法を解説します。

2026年3月23日
10

もっと深く知りたいですか?

ここに掲載されていないトピックについても、リクエストがあれば解説記事を追加します。 わかりにくい点や、具体的な事例について知りたいことがあれば教えてください。

リクエストを送る