【2026年8月最新】HTMLのformタグでお問い合わせフォームを作る方法|label・input・textareaの使い方を1から解説
「お問い合わせフォームをHTMLで作りたいけど、formタグって何から書けばいいの?」——自社サイトの改修や新規ページ制作の中で、この疑問にぶつかった方は多いはずです。
フォームは、名前・メールアドレス・お問い合わせ内容といったユーザーの入力を受け取り、サーバーに送信する仕組みです。見た目だけならHTMLの数タグを覚えれば誰でも作れますが、label・input・textareaの使い分けやGETとPOSTの違い、入力チェックの基本を理解していないと、「動くけど使いにくい」「セキュリティ的に危ういフォーム」になりがちです。
この記事では、formタグの基本構文から実践的なお問い合わせフォームの作り方、入力チェック・スパム対策まで、実際に動くコード例を交えて丁寧に解説します。さらに後半では、非エンジニアの経営者がこの仕組みを知っておくべき理由と、Claude Codeを使えばHTMLを覚えなくてもフォーム制作・改修を任せられるという実践的な選択肢まで紹介します。
この記事を最後まで読むと、次の7つが明確になります。
01 WHAT IS A FORM そもそも「フォーム」とは何か Webサイトの「入力窓口」の正体を理解する
「フォーム」とは、Webページ上でユーザーが名前・メールアドレス・お問い合わせ内容などの情報を入力し、送信ボタンを押すことでサーバーに送る仕組み全体を指します。会員登録画面、検索ボックス、ログイン画面、お問い合わせページなど、私たちが日常的に触れているWebサイトのほとんどにフォームが使われています。
📚 用語解説
フォーム(form):Webページ上でユーザーからの入力(テキスト・選択肢・ファイルなど)を受け取り、指定した送信先(サーバー)に届けるための仕組み。HTMLの<form>タグを中心に、<input>や<textarea>などの入力欄タグを組み合わせて作ります。
フォームは大きく分けて「見た目(外観)」と「受け取ったデータをどう処理するか(裏側の処理)」の2つの要素で構成されます。見た目の部分はHTMLだけで作成できますが、「受け取ったデータをメールで送る」「データベースに保存する」といった裏側の処理には、PHPやJavaScript(サーバーサイド)などのプログラムが別途必要になります。
この記事で解説するのは主に「見た目(HTML部分)」の作り方です。裏側の処理(メール送信・データ保存)は別の技術が必要ですが、外観さえ正しく作れれば、既存のフォーム送信サービスやプログラムと組み合わせて動くフォームが完成します。まずは外観の作り方から押さえましょう。
1-1. フォームが使われる代表的な場面
実務でフォームが登場する場面は多岐にわたります。
02 HOW IT WORKS フォームの仕組み:入力から送信までの流れ ユーザーの入力がサーバーに届くまでの4ステップ
formタグの書き方に入る前に、「入力した内容がどうやってサーバーに届くのか」という全体の流れを押さえておきましょう。仕組みを理解しておくと、この後の各タグの役割がスムーズに頭に入ります。
ユーザーが
入力欄に記入
送信ボタンを
クリック
ブラウザがデータを
action先に送信
サーバーが受信し
処理・完了画面表示
この流れの中で、HTMLのformタグが担うのは主にStep 1〜3です。「どの入力欄を用意するか(label/input/textarea)」「どこに送るか(action属性)」「どんな方法で送るか(method属性)」の3つを指定すれば、ブラウザが自動的にデータをまとめて送信してくれます。
2-1. GETとPOST:2つの送信方法の違い
フォームのデータ送信方法にはGETとPOSTの2種類があり、method属性で指定します。この2つの違いを正確に理解しておくことは、フォーム設計において非常に重要です。
| 項目 | GET | POST |
|---|---|---|
| データの送り方 | URLの末尾に「?キー=値」の形でくっつける | HTTPリクエストの本文(見えない部分)に格納する |
| 画面上の見え方 | アドレスバーに入力内容が表示される | アドレスバーには表示されない |
| データ量の目安 | 短いデータ向き(URL長には実務上の上限がある) | 長文やファイルなど大きいデータも送れる |
| 向いている用途 | 検索ボックスなど、URLで結果を共有・ブックマークしたい場合 | お問い合わせフォームなど、個人情報を含む入力全般 |
| ブラウザの挙動 | 再読み込みしても比較的安全(データの取得のみが基本用途) | 再読み込みで二重送信の確認ダイアログが出ることがある |
📚 用語解説
GETメソッド:フォームのデータをURLの末尾に「?name=value」の形で付け加えて送信する方式。検索キーワードのようにURLで結果を共有したい場面に向いていますが、入力内容がそのままアドレスバーに表示されるため、個人情報の送信には向きません。
📚 用語解説
POSTメソッド:フォームのデータをHTTPリクエストの本文に格納して送信する方式。アドレスバーには表示されず、データ量の実務上の上限もGETより緩やかです。お問い合わせフォームや会員登録など、個人情報を含むフォームでは基本的にPOSTを使います。
POSTはURLに情報が表示されないだけで、通信内容そのものを暗号化する仕組みではありません。通信を暗号化するのはHTTPS(SSL/TLS)の役割であり、GET・POSTどちらを使っていても、フォームを設置するページは必ずHTTPS化しておく必要があります。「POST=安全、GET=危険」という単純な理解は正確ではないので注意してください。
03 FORM TAG BASICS formタグの基本構文(action・method属性) 全ての入力欄を1つにまとめる「箱」の役割
formタグは、その中に配置したlabel・input・textareaなどの入力欄をひとまとめにし、「どこに」「どんな方法で」送信するかを指定する箱(コンテナ)のような役割を持ちます。
<form action="/contact/submit" method="post"> <!-- この中に入力欄(label・input・textareaなど)を配置する --> </form>
formタグの主な属性は次の2つです。
| 属性 | 役割 | 省略した場合 |
|---|---|---|
| action | データの送信先URLを指定する | 省略すると、現在表示しているページ自身に送信される |
| method | 送信方法(get または post)を指定する | 省略すると多くのブラウザでGETが既定値になる |
📚 用語解説
action属性:フォームのデータを「どこに送るか」を指定する属性。相対パス(例:/contact/submit)でも絶対URL(例:https://example.com/submit)でも指定できます。省略すると現在のページ自身に送信されます。
仕様上は省略可能ですが、省略時の挙動はブラウザやページ構成によって意図しない結果になることがあります。制作段階で「どこに送るフォームか」が一目で分かるよう、action属性は常に明示的に書いておくことをおすすめします。
3-1. name属性の役割:サーバーが受け取るデータの「見出し」
formタグ自体の話からは少し外れますが、この後何度も登場するname属性についても先に触れておきます。input・textareaなどの入力欄には必ずname属性を指定しますが、これはサーバー側がデータを受け取るときの「見出し(キー)」になります。
例えばname="email"と指定した入力欄に「taro@example.com」と入力して送信すると、サーバー側には「email という項目に taro@example.com という値が届いた」という形でデータが渡ります。name属性を書き忘れると、その入力欄の内容はサーバーに送信されません。
04 LABEL TAG labelタグの使い方 入力欄に「見出し」を付け、使いやすさを底上げする
labelタグは、input・textareaなどの入力欄に「これは何を入力する欄か」を示す見出しを付けるためのタグです。見た目だけならただのテキストでも代用できそうに見えますが、labelタグを正しく使うことで使いやすさ(ユーザビリティ)が大きく向上します。
<label for="name">お名前</label> <input type="text" id="name" name="name">
ポイントは、label要素のfor属性と、input要素のid属性を同じ値にして紐付けることです。この紐付けにより、label要素のテキスト部分をクリックしただけでも、対応する入力欄にカーソルが移動(フォーカス)します。
📚 用語解説
label要素:入力欄に対する見出し・ラベルを表すHTMLタグ。for属性を入力欄のid属性と同じ値にすることで紐付けられ、ラベル文字をクリックするだけで該当の入力欄にフォーカスが移る。チェックボックスやラジオボタンではクリックできる範囲が広がるため、特に効果を実感しやすい。
特にチェックボックスやラジオボタンでは、この効果が顕著です。labelで紐付けておくと、小さな丸や四角のアイコン部分だけでなく、隣接する文字列全体がクリック対象になるため、スマートフォンでの誤タップも減らせます。
<label><input type="checkbox" name="agree" value="yes"> 利用規約に同意する</label>
上記のように、labelタグでinputタグ全体を囲む書き方(for属性を省略できる書き方)も可能です。この場合はid属性がなくても紐付けが成立します。
labelを使わずにplaceholder(後述する入力欄内のヒント文字)だけで項目名を示すデザインをよく見かけますが、これはユーザビリティの観点で推奨されません。placeholderは入力を始めると消えてしまうため、入力中に「これは何の欄だったか」が分からなくなりやすいためです。labelは必ず設置しましょう。
05 INPUT TAG inputタグ:type属性で変わる入力欄の種類 1つのタグで10種類以上の入力欄を作り分ける
inputタグは、フォームの中で最も登場回数が多いタグです。type属性の値を変えるだけで、テキスト欄・メール欄・チェックボックス・ラジオボタンなど、まったく違う見た目と挙動の入力欄を作り分けられます。
📚 用語解説
input要素:ユーザーからの入力を受け取るための基本タグ。type属性の値によって、1行テキスト・メールアドレス・数値・日付・チェックボックス・ラジオボタン・ファイル選択など、多様な入力欄を表現できる。開始タグのみで閉じタグを書かない(自己終了タグ)のが特徴。
代表的なtype属性の値と特徴を整理します。
| type値 | 用途 | 特徴 |
|---|---|---|
| text | 通常の1行テキスト | 最も基本的な入力欄。氏名・件名などに使う |
| メールアドレス | 送信前にブラウザが「@やドットを含む形式か」を簡易チェックする | |
| tel | 電話番号 | 国によって桁数・ハイフンの有無が異なるため、ブラウザ側の形式チェックは行われない。スマートフォンでは数字用キーボードが自動表示される |
| number | 数量・年齢などの数値 | 上下の矢印(スピナー)が表示され、数値以外は基本的に入力しにくくなる |
| date | 日付 | 対応ブラウザではカレンダーのピッカーUIが自動表示される |
| checkbox | 複数選択可能な選択肢 | 同じ質問に対して複数の項目にチェックできる |
| radio | 1つだけ選ぶ選択肢 | 同じname属性を持つ項目の中から1つだけ選べる(他を選ぶと自動的に外れる) |
| file | ファイル添付 | 画像や資料などのアップロードに使う |
| hidden | 画面に表示しない値 | ユーザーには見えないが、サーバーに一緒に送信したい値(流入元情報など)を仕込む際に使う |
| submit | 送信ボタン | クリックするとフォームの内容がaction先に送信される |
5-1. checkboxとradioの違い:似ているようで役割が別
checkboxとradioは見た目こそ似ていますが、役割はまったく異なります。checkboxは複数選択が可能、radioは同じname属性を持つグループの中から1つだけしか選べません。
<!-- ラジオボタン:同じname="contact_method"の中から1つだけ選べる --> <p>ご希望の連絡方法</p> <label><input type="radio" name="contact_method" value="email" checked> メール</label> <label><input type="radio" name="contact_method" value="tel"> 電話</label> <!-- チェックボックス:複数を同時にチェックできる --> <p>ご興味のあるサービス(複数選択可)</p> <label><input type="checkbox" name="interest_automation" value="1"> 業務自動化</label> <label><input type="checkbox" name="interest_cc" value="1"> Claude Code導入支援</label>
ラジオボタンは「同じname属性」であることでグループ化され、排他選択(1つだけ選べる状態)になります。name属性を1つずつ変えてしまうと、すべて個別に選択できてしまい「1つだけ選ぶ」という意図が実現できません。ラジオボタンを実装するときは、グループ内で必ずname属性を統一しましょう。
5-2. placeholderとvalueの違い
inputタグにはplaceholder属性とvalue属性があり、どちらも入力欄に文字を表示できますが、役割はまったく異なります。
📚 用語解説
プレースホルダー(placeholder):入力欄が空のときだけ表示される薄いグレー文字のヒント。「例:山田 太郎」のような入力例を示す用途で使われるが、入力を始めると消えてしまい、送信データにも含まれない点に注意。項目名の代わり(labelの代用)として使うのは推奨されない。
06 TEXTAREA TAG textareaタグ:複数行入力欄の作り方 お問い合わせ内容など、長文入力に使う欄
textareaタグは、お問い合わせ内容や自由記述欄のような複数行にわたる長文を入力してもらうためのタグです。inputタグと違い、開始タグと終了タグの両方が必要な点が大きな違いです。
<label for="message">お問い合わせ内容</label> <textarea id="message" name="message" rows="6" cols="40" placeholder="お問い合わせ内容をご記入ください"></textarea>
📚 用語解説
textarea要素:複数行にわたる長文入力を受け付けるタグ。inputタグのように自己終了せず、開始タグ<textarea>と終了タグ</textarea>の間に初期表示したい文字(デフォルト値)を書く。type属性は存在せず、常に複数行のテキスト入力欄として機能する。
rows属性とcols属性で、入力欄の見た目の大きさを指定できます。
| 属性 | 意味 |
|---|---|
| rows | 入力欄に表示する行数の目安(縦の高さ) |
| cols | 1行あたりに表示する文字幅の目安(横の幅) |
rows・cols属性はあくまで目安のサイズであり、実際のレイアウトはCSSのwidth・heightプロパティで細かく調整するのが一般的です。特にスマートフォン対応を考えると、rows属性で最低限の高さだけ指定し、横幅はCSSでレスポンシブに制御する構成が扱いやすくなります。
よくある間違いとして、textareaタグにvalue属性を指定してしまうケースがあります。textareaにはvalue属性は存在せず、初期値を入れたい場合は開始タグと終了タグの間に直接テキストを書きます。
<!-- 誤り:textareaにvalue属性は効かない --> <textarea name="message" value="初期テキスト"></textarea> <!-- 正しい:開始タグと終了タグの間に書く --> <textarea name="message">初期テキスト</textarea>
07 HANDS-ON 実践:お問い合わせフォームを1から作る ここまでのタグを組み合わせて実際に動く形にする
ここまで解説してきたform・label・input・textareaタグを組み合わせて、実際のお問い合わせフォームを1から組み立ててみましょう。
<form action="/contact/submit" method="post"> <!-- お名前 --> <label for="name">お名前<span class="required">必須</span></label> <input type="text" id="name" name="name" placeholder="山田 太郎" required> <!-- メールアドレス --> <label for="email">メールアドレス<span class="required">必須</span></label> <input type="email" id="email" name="email" placeholder="taro@example.com" required> <!-- 電話番号(任意) --> <label for="tel">電話番号</label> <input type="tel" id="tel" name="tel" placeholder="09012345678"> <!-- ご希望の連絡方法 --> <p>ご希望の連絡方法</p> <label><input type="radio" name="contact_method" value="email" checked> メール</label> <label><input type="radio" name="contact_method" value="tel"> 電話</label> <!-- お問い合わせ内容 --> <label for="message">お問い合わせ内容<span class="required">必須</span></label> <textarea id="message" name="message" rows="6" placeholder="お問い合わせ内容をご記入ください" required></textarea> <!-- 送信ボタン --> <button type="submit">送信する</button> </form>
この1つのコードだけで、「お名前」「メールアドレス」「電話番号」「連絡方法の選択」「お問い合わせ内容」を受け付ける、実務レベルのお問い合わせフォームの外観が完成します。ポイントを振り返ります。
7-1. button要素とinput type="submit"の違い
送信ボタンは<button type="submit">送信する</button>のようにbutton要素で作る方法と、<input type="submit" value="送信する">のようにinput要素で作る方法の2通りがあります。
| 要素 | 特徴 |
|---|---|
| <button type="submit"> | ボタンの中にアイコンや装飾用のHTMLを自由に入れられる。近年の実務ではこちらが主流 |
| <input type="submit"> | value属性で指定した文字だけをボタンに表示できる。装飾の自由度は低いがシンプルで確実に動く |
button要素はtype属性を省略すると、ブラウザによっては既定でtype="submit"として扱われます。フォーム内に「クリアボタン」など送信以外の目的のボタンを置く場合は、type="button"を明示しないと意図せずフォームが送信されてしまうことがあるため注意が必要です。
08 VALIDATION & SPAM 入力チェック・スパム対策の基本 「動くフォーム」から「安心して使えるフォーム」へ
フォームは見た目が完成しても、それだけでは実務投入には不十分です。入力ミスの防止と、悪意あるスパム送信への対策も、フォーム設計の重要な要素です。
8-1. required属性によるブラウザ側チェック
input・textareaにrequired属性を付けると、その項目が空欄のまま送信しようとした際、ブラウザが標準機能で送信をブロックし、注意を促す吹き出し(ツールチップ)を表示します。特別なプログラムを書かなくても、HTMLの属性1つだけで基本的な入力チェックができる便利な仕組みです。
📚 用語解説
バリデーション(入力チェック):入力された内容が「正しい形式か」「必須項目が埋まっているか」を確認する処理。HTML標準のrequired属性やtype="email"のような簡易チェックを「クライアント側(ブラウザ側)バリデーション」、サーバー側で再度確認する処理を「サーバー側バリデーション」と呼ぶ。
required属性やtype="email"によるチェックは、あくまでブラウザ上での簡易的な確認にすぎません。ブラウザの開発者ツールを使えば、これらの制限を無効化した状態で送信することも技術的には可能です。個人情報を扱うフォームでは、サーバー側でも改めて同じ内容をチェックする「二重チェック」が必須です。HTML側のチェックだけで安心してはいけません。
8-2. スパム対策の代表的な手法
お問い合わせフォームを公開すると、自動プログラム(ボット)による無関係な送信、いわゆるスパム送信が一定数届くようになります。完全に防ぐことは難しいものの、代表的な対策を組み合わせることで大幅に減らせます。
📚 用語解説
ハニーポット:画面上はCSSで非表示にしてある入力欄を、あえてフォーム内に仕込んでおく対策手法。人間のユーザーには見えないため入力されないが、機械的にフォーム全項目を埋めるスパムボットはこの欄にも文字を入れてしまう。サーバー側で「この欄が埋まっていたらスパムとみなして無視する」処理を行う、比較的手軽な対策として知られる。
reCAPTCHA・ハニーポット・サーバー側チェックはそれぞれ得意な守備範囲が異なり、どれか1つで完全にスパムを防げるわけではありません。実務では複数の対策を組み合わせて、届いてしまうスパムの量を「許容できる水準」まで減らすという考え方が現実的です。
09 WHY IT MATTERS 【独自】非エンジニアの経営者がformタグを知っておくべき理由 コードを書かなくても、仕組みを知るだけで得られるメリット
ここまで解説してきたformタグの仕組みは、正直なところ「経営者が自分でコードを書く」ために必要な知識ではありません。しかし、仕組みの概要だけでも知っておくと、実務上いくつかの明確なメリットがあります。
9-1. 理由1:制作会社・外注先との会話が正確になる
自社サイトのお問い合わせフォームを外注する場面で、「action属性の送信先はどこになっていますか」「必須項目はどれとどれですか」といった質問が具体的にできるようになると、認識のズレによる手戻りを未然に防げます。逆に仕組みを知らないままだと、「フォームが動かない」というトラブルが起きても、原因がHTML側なのかサーバー側なのかの切り分けすら難しくなります。
9-2. 理由2:フォームの入力項目設計は経営判断に直結する
「必須項目を何個にするか」は、一見エンジニアの領分に見えて、実は問い合わせ数(コンバージョン率)に直結する経営判断です。入力項目が多すぎるフォームは離脱率が高くなりやすく、逆に少なすぎると営業に必要な情報が不足します。この設計判断は、HTMLの書き方以前に「何を必須にするか」というビジネス側の意思決定であり、経営者自身が関わるべき領域です。
9-3. 理由3:フォームの不具合に自分で気づけるようになる
フォームの仕組みをざっくり理解していると、「送信ボタンを押しても反応がない」「必須マークがあるのに送信できてしまう」といった不具合に、専門家に聞く前に自分でも気づけるようになります。特にお問い合わせフォームは会社の売上に直結する接点であるため、不具合が放置される期間が長いほど機会損失も大きくなります。
自社のお問い合わせフォームについて、「必須項目は本当に必要な数だけか」「メールアドレス欄はtype="email"になっているか」「送信後に完了メッセージが表示されるか」の3点だけでも、定期的に自分の目で確認する習慣をおすすめします。専門知識がなくても、この3点は非エンジニアの方でも十分にチェックできます。
10 GENAI CASE STUDY 【独自データ】GENAI社内のフォーム関連業務とClaude Code実運用 HTMLを書けるメンバーがいなくても回っている理由
ここでは、弊社(株式会社GENAI)が実際にフォーム制作・改修を含む開発業務をどのように回しているかを、実データを交えて紹介します。
| 項目 | 内容 |
|---|---|
| 契約プラン | Claude Max 20x(月$200 / 約30,000円) |
| 利用開始 | 2025年後半〜 |
| 開発領域での用途 | お問い合わせフォームを含むWordPress/LP制作、業務スクリプトの書き捨て、既存コードの改修 |
| 担当者 | エンジニア専任者を置かず、非エンジニアの社員が指示文(日本語)だけで運用 |
弊社では、経営・営業・広告・開発・経理・秘書業務・個人業務まで社内のあらゆる業務にClaude Codeを絡める方針で運用しています。フォームの新規作成や項目の追加・修正といった開発業務も例外ではなく、「都度数時間かかっていた作業がその場で数分に短縮される」という肌感で回っています。
本記事の削減時間・効果は弊社の肌感ベースの数値であり、業種・業態・担当者のスキルによって変動します。「Max 20xプランを全社で回すとどの程度まで使い倒せるか」の参考情報としてご覧ください。
特にフォームのように「項目を1つ増やす」「必須マークの位置を変える」「入力チェックの条件を変更する」といった細かい修正依頼は、従来であれば都度エンジニアへの依頼やタスク化が必要でした。しかしClaude Codeを使えば、非エンジニアの担当者が「お問い合わせフォームに会社名の入力欄を追加して、必須にして」と日本語で伝えるだけで、該当箇所のコードが自動で生成・修正されます。
1業務だけ
試しに任せる
(例: フォーム改修)
効果検証
時間・精度を
数値化
横展開
同種業務に
拡大適用
全社運用
業務プロセスに
組み込み
この4ステップを2〜3ヶ月かけて回していくと、気がつけば社内のあらゆる開発関連業務にClaude Codeが絡んでいる状態になります。フォームのような小さな改修は、この横展開の「最初の1業務」として選ばれやすい領域でもあります。
11 AI ASSIST Claude Codeにフォーム制作・改修を任せる方法 非エンジニアでも「要件を日本語で伝える」だけでフォームが手に入る
ここまで見てきた通り、formタグの正確な構文・label/input/textareaの使い分け・入力チェック・スパム対策まですべてを正確に覚えて書くのは、非エンジニアの方にとって現実的ではありません。しかし、Claude Codeを使えば、この記事で紹介した注意点を踏まえたフォームのコードを自動で生成させることができます。
| ユースケース | Claude Codeへの指示例 |
|---|---|
| 新規お問い合わせフォームの作成 | 「お名前・会社名・メールアドレス・電話番号・お問い合わせ内容の5項目を持つフォームを作って。会社名以外は必須にして。」 |
| 既存フォームへの項目追加 | 「今のお問い合わせフォームに『ご希望の連絡方法』というラジオボタンを追加して。メールと電話の2択にして。」 |
| 入力チェックの強化 | 「メールアドレス欄が空のまま送信できてしまうので、必須にして、送信前にチェックが入るようにして。」 |
| スパム対策の追加 | 「フォームにハニーポット(見えない入力欄)を仕込んで、ボットからの送信を防ぐ処理を追加して。」 |
<!-- Claude Codeが生成するコード例のパターン -->
<!-- 指示:「会社名(任意)・お名前・メールアドレス・お問い合わせ内容の
フォームを作って。会社名以外は必須にして。」 -->
<form action="/contact/submit" method="post">
<label for="company">会社名</label>
<input type="text" id="company" name="company" placeholder="株式会社◯◯">
<label for="name">お名前<span class="required">必須</span></label>
<input type="text" id="name" name="name" required>
<label for="email">メールアドレス<span class="required">必須</span></label>
<input type="email" id="email" name="email" required>
<label for="message">お問い合わせ内容<span class="required">必須</span></label>
<textarea id="message" name="message" rows="6" required></textarea>
<button type="submit">送信する</button>
</form>
この例のように、Claude Codeへの指示で重要なのは「どの項目を用意したいか」「どれを必須にするか」の2点を明確に伝えることです。この2点さえ伝われば、この記事で解説したようなlabel・required・type属性の使い分けまで考慮したコードが返ってきます。
項目を伝える
必須項目・任意項目を
日本語で指示
コードを生成
label/input/textareaを
自動で組み立て
表示確認
見た目・必須チェックを
実際に確認
組み込んで公開
WordPress等
実運用へ反映
Claude Codeが生成するフォームのコードは高い精度ですが、公開前には「必須項目を空のまま送信してブロックされるか」「送信後に完了メッセージが出るか」を実際に自分でテストする習慣をつけると安心です。裏側の送信処理(サーバー側)は別途依頼・確認が必要な点も忘れずに。
12 CONCLUSION まとめ 仕組みを理解した上で、書く作業はAIに任せる選択肢もある
この記事では、HTMLのformタグの基本構文から、label・input・textareaの使い分け、GETとPOSTの違い、入力チェック・スパム対策、非エンジニアの経営者が知っておくべき理由、そしてClaude Codeを使った効率化までを整理しました。最後にポイントを振り返ります。
フォームは一見地味なパーツですが、正確に理解していないと「動くけど使いにくい」「セキュリティ的に危うい」フォームになりやすい領域です。「仕組みを理解した上で、実際にコードを書く作業はAIに任せる」という組み合わせが、非エンジニアの方にとって最も現実的な向き合い方だと弊社では考えています。
フォーム制作を含むサイト改修・業務のコード化を、AI鬼管理が一緒に設計します
formタグの正確な書き方やスパム対策の仕組みを覚えなくても、Claude Codeに要件を伝えるだけで実務レベルのフォームが手に入ります。
弊社の実運用ノウハウをベースに、個別に導入設計のご相談を承ります。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. formタグのaction属性を省略するとどうなりますか?
A. action属性を省略すると、多くのブラウザでは現在表示しているページ自身にデータが送信されます。ただし挙動はページ構成やブラウザによって差が出ることがあるため、実務では「どこに送るフォームか」を一目で分かるように、action属性は必ず明示的に指定しておくことをおすすめします。省略に頼った実装は、後から見返したときにトラブルの原因を特定しにくくなります。
Q. GETとPOST、結局どちらを使えばいいですか?
A. 検索ボックスのように「送信結果のURLをブックマークや共有で使いたい」場合はGET、お問い合わせフォームや会員登録のように個人情報を含む入力を送る場合はPOSTを使うのが基本の考え方です。GETはURLに入力内容がそのまま表示されるため、氏名やメールアドレスなどを含むフォームでGETを使うのは避けるべきです。迷った場合は、入力フォーム全般に対してPOSTを選んでおけば大きな失敗はありません。
Q. labelタグを使わずにplaceholderだけで項目名を示すのは問題ですか?
A. 推奨されません。placeholderは入力欄が空のときだけ表示されるヒント文字で、実際に文字を入力し始めると消えてしまいます。そのため、入力の途中で「これは何の欄だったか」が分からなくなりやすく、特に長いフォームや複数項目が並ぶ画面では入力ミスやユーザーの離脱につながります。labelタグを使って、常に見える形で項目名を示すのが基本です。
Q. required属性を付ければセキュリティ対策は十分ですか?
A. 十分ではありません。required属性やtype="email"によるチェックは、あくまでブラウザ上での簡易的な確認であり、ブラウザの開発者ツールなどを使えばこれらの制限を回避して送信することも技術的には可能です。個人情報を扱うフォームでは、HTML側のチェックに加えて、サーバー側でも改めて必須項目や形式のチェックを行う「二重チェック」が欠かせません。
Q. textareaにvalue属性で初期値を設定できますか?
A. できません。textarea要素にはvalue属性が存在せず、初期値を表示したい場合は開始タグ<textarea>と終了タグ</textarea>の間に直接テキストを記述します。input要素との仕様の違いを知らないまま実装すると、「value属性を書いたのに反映されない」という状態になりやすいため、この違いは正確に押さえておく必要があります。
Q. チェックボックスとラジオボタンはどう使い分けますか?
A. 複数の選択肢を同時に選ばせたい場合はチェックボックス、選択肢の中から1つだけを選ばせたい場合はラジオボタンを使います。ラジオボタンは同じname属性を持つ項目同士がグループとして扱われ、1つを選ぶと他の選択が自動的に外れる仕組みです。name属性を項目ごとに変えてしまうと排他選択にならないため、実装時は必ずグループ内でname属性を統一してください。
Q. Claude Codeにフォーム制作を依頼するとき、何を伝えればいいですか?
A. 最低限「どんな項目を用意したいか(お名前・メールアドレス・お問い合わせ内容など)」と「どの項目を必須にしたいか」の2点を日本語で具体的に伝えるのが効果的です。この情報があれば、label・input・textareaの使い分けやrequired属性の付け方まで考慮したコードが生成されます。既存フォームの改修であれば、現在のコードと変更したい内容を合わせて伝えると、より精度の高い修正が得られます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AIBPO by AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




