0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【手で書いて覚える個人開発 #05】HTML のフォームと意味のあるタグ

0
Last updated at Posted at 2026-11-04

この記事は、プログラミングをまったく知らない人が「AI に頼らず、自分の手でアプリやサイトを作れる」ようになるための連載(全85本)の第5回です。毎日1本ずつ公開します。

前の回: #04 HTML の骨組み:見出し・段落・リンク・画像

この記事でできるようになること

入力欄とボタンのあるフォームを作れるようになります。あわせて、ページの部品に「ここはヘッダー」「ここはメイン」と名札をつける、意味のあるタグも使えるようになります。

説明

フォームは「申込用紙」

ログイン画面、検索ボックス、投稿画面。Web で「何かを入力して送る」場所は、ぜんぶフォームです。紙の申込用紙にたとえると、次のように対応します。

申込用紙 HTML
用紙全体 <form>
「お名前」と書いてある項目名 <label>
記入欄 <input> / <textarea> / <select>
提出ボタン <button>

今日使うタグ

タグ 意味
<form> フォーム全体を囲む
<label for="..."> 入力欄の項目名。for に入力欄の id を書く
<input type="text"> 1行の文字入力欄
<input type="checkbox"> チェックボックス
<textarea> 複数行の入力欄
<select> と <option> 選択肢から選ぶプルダウン
<button type="submit"> 送信ボタン

大事な属性が3つあります。

  • id: その要素の「背番号」。ページの中で重ならない名前をつける
  • name: 送るデータの「ラベル」。これがない欄の中身は送られません
  • for(label に書く): どの入力欄の項目名かを、id で結びつける

label と入力欄を結びつけると、項目名をクリックしただけで入力欄にカーソルが入ります。画面を読み上げるソフトを使う人にも、どの欄かが伝わります。

意味のあるタグ(セマンティクス)

<h1> や <p> のほかに、ページの場所そのものに名前をつけるタグがあります。

タグ 意味
<header> ページ(や区画)の頭の部分
<nav> メニュー・リンクのかたまり
<main> ページの主役の内容(1ページに1つ)
<section> 内容のまとまり
<footer> ページの終わりの部分

見た目はどれも変わりません。でも、検索エンジンや読み上げソフトが「ここがメインだな」と理解しやすくなります。お店の看板のようなものです。

手を動かす

コピーせず、自分で打ってください。

1. 準備

前回の html-practice フォルダを VS Code で開き(なければ mkdir html-practice で作る)、新しいファイル form.html を作ります。

2. 骨組みを打つ

前回の骨組みを自分の手で打ち、<title> を 音楽仲間への投稿フォーム にします。

3. <body> の中を書く

<header>
  <h1>OTOMO ふうの投稿フォーム</h1>
  <nav>
    <a href="#form">投稿する</a>
  </nav>
</header>
<main>
  <section id="form">
    <h2>ひとこと投稿</h2>
    <form action="" method="get">
      <p>
        <label for="nickname">ニックネーム</label><br>
        <input type="text" id="nickname" name="nickname" placeholder="例:たろう" required>
      </p>
      <p>
        <label for="genre">好きなジャンル</label><br>
        <select id="genre" name="genre">
          <option value="techno">テクノ</option>
          <option value="house">ハウス</option>
          <option value="ambient">アンビエント</option>
        </select>
      </p>
      <p>
        <label for="message">ひとこと</label><br>
        <textarea id="message" name="message" rows="4" cols="30"></textarea>
      </p>
      <p>
        <label><input type="checkbox" name="open" value="yes"> 公開する</label>
      </p>
      <button type="submit">投稿する</button>
    </form>
  </section>
</main>
<footer>
  <p>手で書いて覚える個人開発</p>
</footer>

新しく出てきた属性です。

  • placeholder: 入力前にうすく出る見本の文字
  • required: 空のままでは送れなくする(ブラウザが止めてくれる)
  • rows / cols: 複数行欄の高さと幅の目安(文字数)
  • <option value="techno">テクノ</option>: 画面には「テクノ」と出て、送られる値は techno
  • method="get": 入力した内容を、ページのアドレスの後ろにくっつけて送るやり方

4. ブラウザで開いて送ってみる

open form.html

ニックネームに「たろう」と入れ、ジャンルを選び、「投稿する」を押します。このフォームには送り先のサーバーがないので、ページが読み込み直されるだけですが、アドレス欄の末尾が変わります。form.html?nickname=...&genre=techno&message=... のように、name に書いた名前と入力内容が 名前=値 の形でつながって見えるはずです(日本語は %E3... のような記号の列に変わります)。これが「フォームが送るデータ」の正体です。

5. わざと name を消してみる

ニックネームの name="nickname" を消して保存し、もう一度送ってみてください。アドレスから nickname= が消えます。name がない欄は送られないことを自分の目で確かめましょう。確かめたら元に戻します。

練習問題

答えを見ずに解いてみてください。

  1. 「好きな機材」を1行で入力する欄を、label つきで足してください(id と name は gear)。
  2. ジャンルの選択肢に「ダブ」(value は dub)を足してください。
  3. 項目名の「ニックネーム」の文字をクリックして、入力欄にカーソルが入ることを確かめてください。入らないときは何が原因か考えてください。

よくあるエラーと直し方

HTML は間違えてもエラーメッセージを出さず、黙って動かなくなります。

項目名をクリックしても入力欄に入らない

label の for と、入力欄の id が一字でも違うと結びつきません。たとえば for="nicname"(k が抜けた)と id="nickname" では、ブラウザは何も言わず、結びつけをあきらめます。両方をコピーせず見比べて直します。

入力した内容が送られない

その欄に name がありません。id だけでは送られないので注意してください。

送信ボタンを押しても何も起きない

ボタンが <form> の外にあるか、</form> を閉じる場所を間違えている可能性があります。ボタンが <form> と </form> の間にあることを確認します。

空のまま送れてしまう

required を書き忘れています。ただし required はブラウザ側の確認だけです。本当の安全は、あとの回で学ぶサーバー側(データを受け取る側)の確認でも守ります。

答え

1.

<p>
  <label for="gear">好きな機材</label><br>
  <input type="text" id="gear" name="gear">
</p>

2.

<option value="dub">ダブ</option>

<select> と </select> の間に書きます。

3. 入らないときは、label の for と入力欄の id が同じ名前になっているかを確認します。大文字・小文字も区別されます。

次回予告

次回は「#06 CSS 入門:色・文字・余白」です。今日作ったフォームを、色や余白で見やすく整えます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?