37
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

アイレット株式会社Advent Calendar 2024

Day 24

【保存版】Web入力フォームについて

Last updated at Posted at 2024-12-25

なぜこの記事を書くのか

入力フォームはSaasを入れたり、ライブラリを入れたり、フルスクラッチで書いたりさまざまな実装方法があります。

今回は、基本的な実装方法について知っていればいつでも応用が効くと思ったので、記事にまとめてみようと思います。

Web入力フォームとは

FireShot Capture 155 - デジタル庁 ご意見・ご要望 - forms.office.com.png
デジタル庁のお問い合わせフォームから引用

Web入力フォームは、ユーザーからデータを収集するためのUIコンポーネントです。
例えば以下のようなものがあります。

  • ログインフォーム
  • 会員登録フォーム
  • お問い合わせフォーム
  • 商品注文フォーム

Web入力フォームについてさらに詳しくおかわり

Web入力フォームは基本的に以下のフローをたどります。

image.png

ユーザー画面上の入力欄で入力したデータはクライアント側でJavaScriptの処理を受け、サーバー側でDBに保存されます。そうして最終的にはフィードバック表示として画面に結果が表示されます。
具体例を挙げると、ID登録のための入力フォームの場合は、登録完了表示やエラー表示などです。

このように全体像を覚えておくと、テキストや画像だけの静的コンテンツと違いがわかりやすいと思います。

良い入力フォームとは何か

さまざまな実装方法がありますが、いい入力フォームとはなんなのでしょうか?
諸説あると思いますが、個人的に以下を備えたものだと考えています。

わかりやすさ

  • 明確なラベル表示(シンプルな文言でわかりやすい位置にある)
  • 必須項目の明示(そもそも入力項目は減らした上で)
  • 入力形式の説明(例:半角・英数字を使用してください)

使いやすさ

  • 適切な入力タイプの使用(email, tel, numberなど)
  • エラー表示のわかりやすさ(色が変わったり、エラーメッセージが出たり)
  • タブ移動の自然な流れ(キーボード操作ができると尚いい)

アクセシビリティ

  • スクリーンリーダー対応
  • キーボード操作の対応
  • 十分なコントラスト比

「エラー表示をリアルタイムにするのか、submit時にするのか」、「エラーテキストの文言はどうするのか」など正直考えるとキリがないほどにたくさんの要素があります。

実際に実装してみる

Vanilla.jsやReactを使用したバージョンも掲載予定なので、後ほど見比べてみてください。

HTML + CSS

最もシンプルな形式の入力フォームです。
送信ボタンを押した時に入力内容に対し、確認が行われます。
リアルタイムではないものの世の中に多く存在する仕様のため自然な感覚で操作できるかと思います。

HTML + CSS + Vanilla.js

リアルタイムチェックを入れた入力フォームです。
このフォームで満足できるユーザーは多いので気がします。
form要素にnovalidateを付与して、Web標準のバリデーション機能や表記を非表示にしているので、そこだけ心配ですが、その分JavaScriptでバリデーションやエラー機能を付与しています。ただ入力項目が多いとJSのコード量も当然増えるので、どうなのだろうか...

まとめ

今回は、Web入力フォームについてまとめてきました。
クライアント側とサーバー側が繋がるUIでもあると思うので少々複雑ですが、理解しておくと役立つ思うので、私自身もしっかり理解を深めていきたいです。

本記事を読んでいただきありがとうございました!

37
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?