Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

name属性(ネームアトリビュート)とは | 意味や読み方など丁寧でわかりやすい用語解説

name属性(ネームアトリビュート)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

名前属性 (ナマエゾクセイ)

英語表記

name attribute (ネーム アトリビュート)

用語解説

name属性とは、HTML要素、特にフォーム関連の要素に名前を割り当てるための重要な属性である。この属性の主な目的は、ウェブブラウザからサーバーへデータを送信する際に、そのデータが何を意味するのかをサーバー側で識別できるようにすること、そしてJavaScriptから特定の要素にアクセスする手段を提供することにある。ウェブアプリケーションにおいて、ユーザーからの入力を受け取り、処理するために不可欠な役割を担っている。

概要として、name属性はHTMLのinput、select、textareaといったフォーム要素に付与されることが最も一般的である。例えば、ユーザーが入力した氏名やメールアドレスなどの情報をサーバーに送る際、ただ単に「値」だけを送信しても、サーバー側ではそれが氏名なのかメールアドレスなのかを区別できない。そこで、name属性に「username」や「email」といった名前を設定することで、「usernameという名前の入力欄には、この値が入力された」という形でデータをペアにして送信することが可能になる。これにより、サーバーサイドのプログラムは受け取ったデータの意味を理解し、適切に処理できるようになる。また、JavaScriptを用いてHTMLドキュメント内の特定の要素を取得したり、操作したりする際にもname属性が利用される場合がある。さらに、歴史的にはページ内の特定の場所を指し示すアンカーとしても利用されてきた経緯がある。

詳細に入ると、name属性の機能は要素の種類によってその重要性や挙動が異なる。

最も広く使われるのはフォーム要素における利用である。

  • テキスト入力欄、パスワード入力欄 (input type="text", input type="password")、テキストエリア (textarea)、ドロップダウンリスト (select): これらの要素では、name属性はその要素に入力または選択された値と一対一で対応する名前となる。フォームが送信されると、「name属性に設定された名前=入力・選択された値」という形式でデータがサーバーに送られる。例えば、<input type="text" name="firstName">という要素に「太郎」と入力されれば、「firstName=太郎」としてデータが送られる。サーバーサイドのプログラムはこの「firstName」という名前を使って「太郎」という値を取得する。
  • ラジオボタン (input type="radio"): ラジオボタンでは、同じname属性を持つ複数のラジオボタンが一つのグループを形成する。このグループの中からユーザーは必ず一つだけを選択できる。例えば、性別を選択させるために<input type="radio" name="gender" value="male"><input type="radio" name="gender" value="female">のように設定すると、「gender」というグループの中から「male」または「female」のいずれかの値が送信されることになる。name属性を共通化することで、ブラウザが自動的に排他的な選択肢として扱うため、非常に重要な役割を果たす。
  • チェックボックス (input type="checkbox"): チェックボックスでは、ラジオボタンとは異なり、同じname属性を持つ複数のチェックボックスから複数を選択できる。例えば、趣味を選択させるために<input type="checkbox" name="hobbies" value="reading"><input type="checkbox" name="hobbies" value="traveling">のように設定すると、選択されたすべての値が「hobbies=reading&hobbies=traveling」のような形式でサーバーに送られる。サーバーサイドでは、これを配列として受け取り、複数の選択肢を処理することが可能になる。name属性の末尾に[]を付加する(例: name="hobbies[]")ことで、多くのサーバーサイド言語で配列として扱いやすくなるという慣習もある。
  • ファイルアップロード (input type="file"): ファイルをアップロードする際にもname属性は使われる。この属性で指定された名前が、サーバー側でアップロードされたファイルデータを受け取る際の識別子となる。
  • 隠しフィールド (input type="hidden"): ユーザーには表示されないが、特定の情報をフォームと一緒にサーバーに送りたい場合に利用される。name属性とvalue属性を持ち、ユーザーの目には触れずにデータを送信する役割を果たす。

JavaScriptにおける利用としては、document.getElementsByName()メソッドを使用して、指定したname属性を持つ要素を複数取得できる。これにより、同じ名前を持つラジオボタンやチェックボックスのグループ全体を操作したり、特定のフォーム要素の値を動的に変更したりすることが可能になる。また、特定のフォーム要素にアクセスする際、document.forms[0].elements.要素名のように、name属性を使って要素を参照できる場合もある。

URLのフラグメント識別子としての利用は、HTML4までは<a name="anchorName">のようにして、ページ内の特定の位置に名前を付け、<a href="#anchorName">でその位置へジャンプさせる機能があった。しかし、HTML5からはこの用途にはid属性を使うことが推奨されており、<div id="anchorName">のように記述するのが現代的な方法である。name属性をアンカーとして使う方法は非推奨となったが、古いウェブページや互換性のために見かけることがある。

フレーム要素における利用では、<iframe><frame>要素のname属性が、<a>タグのtarget属性と組み合わせて使用されることがある。例えば、<iframe name="myFrame">と定義されたフレームに対して、<a href="page.html" target="myFrame">とすることで、リンクをクリックした際にpage.htmlmyFrameという名前のフレーム内に表示されるように制御できる。

最後に、name属性はid属性と混同されがちだが、両者には明確な違いがある。id属性はHTMLドキュメント内で一意である必要があり、主にJavaScriptでの特定の要素へのアクセスやCSSでのスタイリングの対象として使われる。一方、name属性はフォーム送信時のデータ識別が主な目的であり、ラジオボタンやチェックボックスのように複数の要素に同じname属性を設定することが許容される。適切な場面で適切な属性を使い分けることが、効果的なウェブ開発には不可欠である。命名においては、サーバーサイドでの処理を考慮し、意味が分かりやすく、一貫性のある名前を設定することが推奨される。

関連コンテンツ