forms

フォーム (HTML)

[1] HTMLフォーム (form) とは、 通常の内容マーク制御子 (コントロール) (control) と呼ぶ特殊な要素、 制御子の (ラベル) からなる文書の部分です。 利用者は普通、制御子を編集することによってフォームをめてから、 フォームを提出します。

[2] 仕様書:

[3]

フォームの再設定 (リセット) (reset)
フォームを再設定すると、制御子現在値初期値に戻されます。 初期値がない時の挙動は未定義です。 HTML 4 17.2
フォームの提出 (submit)
フォームを提出すると、成功制御子の名前と現在値の組がフォーム処理エージェントに渡されます。 HTML 4 17.2, 17.13

概念

[17] 次のような概念や機能があります。

レンダリング

[5] WWWブラウザが頁を読み込みながら徐々にレンダリングしていると、 その頁に含まれるフォームも当然徐々にレンダリングされていくことになります。 しかし、 UA は、 フォーム全体をレンダリングするまで利用者がフォームを提出できないようにするべきです。 クライアント側スクリプトが使われている時にも、 フォームの絡みでうまく動作しなくなる虞があります。 HTML 4 B.6.1

また、タブ移動 (tabindex) にも注意が必要です。 HTML 4 B.6.1

法律に関して

[6] フォーム自体は純粋に技術ですが、そのフォームの使い方により法律に関する問題が関係することがよくあります。 例えば、日本国の法律が適用される場合、 個人情報を扱うのであれば個人情報保護法に注意する必要があります。 また、通信販売等の商取引の目的で使用するのであれば、 特定商取引に関する法律に基づく表示が必要かもしれません。

事業者利用者 (顧客) の所在地など、場合によっては複数の地域法律条例などの対象になることがあるかもしれません。

安全性に関して

[7] なりすまし: フォームが含まれる部分を特定の (信頼できると思われている有名企業や公的機関、あるいは銀行や通販サイトなどの) Webサイトの構成や特定のシステム (Webブラウザオペレーティング・システムの機能など) の画面に見せかけたりして、実際の怪しい情報送信先を偽る手口が取られることがよくあります。 (一般に利用者が常にあらゆることに注意を払い続けることは困難なので、フォームではなく単純なリンクを用意するだけでも怪しい Web頁への誘導に十分利用可能です。)

Web が普及して多くの (知識の乏しい) 人も利用するようになったり、 商取引に利用されることが多くなったりしたこともあり、 近年このようななりすまし行為の温床となる機能や実装方法自体も Webブラウザ等の脆弱性とみなされるようになっています。

しかし、単体の Webブラウザの対策は進んでいますが、 仕様上回避不能な場合もありますし、 Webブラウザ以外の用途が主のソフトウェアに Webブラウザ機能が組込まれている場合は対策が十分でないこともあります。

特に問題が起こり得ると考えられるのは電子メイルHTML などのフォームを利用した場合です。 電子メイルの送信元情報などは容易に詐称可能なことや、 フォーム提出先の情報を明示しない実装が一般的なことから、 信頼できる送信元からの情報提供依頼に偽装し、 しかも (知識の乏しい) 閲覧者に信頼させることが比較的容易です。

[8] 電子メイルフォームを含めて送信し、 受信者提出させる方法は現在のところ然程使われていませんから、 電子メイル利用者エージェントフォームを無効にするのがよいかもしれません。 ただ、正しく使えば非常に有益な機能なだけに、 安全対策のために利用できなくなるのは残念なことでもあります。

HTML 以外の類似したフォーム技術

[24] フォーム

歴史

[4] ウェブのフォームのおおよその進化の過程:

         簡易版フォーム      完全版フォーム      追加機能              関連規格
                                                 isindex
                             HTML+
                               ↓
                             HTML 3
          HTML 2.0  ←←←← (I-D, W3C WD)       file upload
          (RFC 1866)           ↓                (RFC 1867)
            ↓  ↓             ↓                keygen (NN)
      HTML 3.2  HTML 2.x       ↓
     (W3C Rec)  (RFC 2070)→ HTML 4 (Web Forms 1.0)
         ↓                  (W3C Rec)           device-upload
         ↓                    ↓                (W3C Submission)
         ↓                  XHTML 1.0           自動補完 (WinIE 他)   ime-mode (WinIE)
         ↓                  (W3C Rec)           入力制御 (携帯電話)
    Basic        XHTML m12n    ↓                                       XForms 1.0
    Forms Module  (W3C Rec)  Forms Module                               (W3C Rec)
                               ↓
                             Web Forms 2.0                              CSS3
                             (WHAT WD)                                  (W3C Drafts)

フォームの誕生

[71] >>72 多分最初の input 要素の提案。 isindex 要素の汎用版として。この時は TimBL がちょっとなぁって感じで HTML 仕様には入っていない。

[73] HTML要素概説
要素名
isindex
要素名
input
要素名
doneinput
日付
説明
Kevin Hoadleywww-talk への投稿で、 isindex の改良として input, doneinput を提案した。 doneinput提出ボタンを表す。
出典

[29] WWW-Talk 1992: Searching, http://1997.webhistory.org/www.lists/www-talk.1992/0466.html

[30] WWW-Talk Jan-Mar 1993: Re: Searching, http://1997.webhistory.org/www.lists/www-talk.1993q1/0005.html

[31] WWW-Talk Jan-Mar 1993: INPUT tag (was: Searching), http://1997.webhistory.org/www.lists/www-talk.1993q1/0079.html

[65] このうち var について、 DanC は否定的な見解を示していました。 文書の一部分ではなく全体として head属性とするのがいいのではないかとしていました。 >>42

[66] 後に似た名前の別の提案が出ました。 <variable>
[41] HTML要素概説
要素名
input
日付
説明
NJITJim Whitescarverwww-talk への投稿で、 input の実装意向を示した。検索語を入力させるものだった。 >>75
出典
注釈
[216] HTML要素概説
要素名
var
日付
説明
NJITJim Whitescarverwww-talk への投稿で、 var の実装意向を示した。キャッシュ制御のため可変部分を示すものだった。 >>64
出典
参照
variable
参照
output
参照
input

[28] WWW-Talk Jan-Mar 1993: Re: INPUT tag (was: Searching), http://1997.webhistory.org/www.lists/www-talk.1993q1/0083.html

[27] WWW-Talk Jan-Mar 1993: Re: QueryForms and Input tag, http://1997.webhistory.org/www.lists/www-talk.1993q1/0088.html

[43] HTML要素概説
要素名
queryform
要素名
recall
要素名
if
要素名
input
日付
説明
Dan Connollywww-talk への投稿で、 Jim Whitescarver 案への返信として、 フォーム機能案を示した。 input はより現行のものに近づいた。 queryformrecall, if などを使った照会文の雛形を head 内で記述する。 >>74 XFormsmodel に近い。
出典

[25] WWW-Talk Jan-Mar 1993: QueryForms and Input tag, http://1997.webhistory.org/www.lists/www-talk.1993q1/0085.html

[26] WWW-Talk Jan-Mar 1993: Re Re QueryForms and Input tag, http://1997.webhistory.org/www.lists/www-talk.1993q1/0089.html

[44] HTML要素概説
要素名
input
要素名
select
要素名
choice
日付
説明
Dave Raggettwww-talk への投稿で、 Dan Connolly 案への返信として、 フォームコントロールの要件を整理し、 input, select, choice の案を提示した。 choice は現在の option に当たる。
出典

[32] WWW-Talk Jan-Mar 1993: Re: INPUT tag (was: Searching), http://1997.webhistory.org/www.lists/www-talk.1993q1/0093.html

[45] WWW-Talk Apr-Jun 1993: HTML+ DTD in ftp://info.cern.ch/pub/www/dev/htmlplus.dtd, http://1997.webhistory.org/www.lists/www-talk.1993q2/0430.html

[46] HTML要素概説
要素名
input
要素名
select
日付
説明
HTML+ DTD に、 input, select が追加された。 >>67
出典
注釈
  • [67] 当時の版は現存せず、 choice なのか option なのか、 form はあったのかは不明。
[50] HTML要素概説
要素名
form
要素名
input
日付
説明
HTML+ DTD に、 form, input がある。 HTML+19930713 現行仕様に近いが、違いもある。
[68] HTML要素概説
要素名
mh
日付
説明
HTML+ DTDmh がある。 HTML+19930713 現在の mailto: URLsubject 引数に当たる。

[33] WWW-Talk Jul-Sep 1993: Submitting input-form data to server, http://1997.webhistory.org/www.lists/www-talk.1993q3/0810.html

[48] HTML要素概説
要素名
form
要素名
input
日付
説明
WWWWW で入力フォーム機能も議論された。 その詳細は伝わらないが、 form, input がほぼ現在の形で合意されたらしい。 ViolaWWW がこれを直ちに実装した。
出典

[47] WWW-Talk Jul-Sep 1993: Submitting input-form data to server, http://1997.webhistory.org/www.lists/www-talk.1993q3/0812.html

[34] WWW-Talk Jul-Sep 1993: Fill-out form support, , http://1997.webhistory.org/www.lists/www-talk.1993q3/0816.html

[35] WWW-Talk Jul-Sep 1993: suggestion for form/ismap handling, http://1997.webhistory.org/www.lists/www-talk.1993q3/0968.html

[37] >>36>>34 から参照されているが、現存最古が >>36>>38 はそれと同内容で、時刻が1994年。

[39] >>36Mosaic for X version 2.0 の新機能紹介。 >>40Mosaic for X version 2.0 の公開を伝えるのメール。

[51] >>34 はその投稿数時間前に大きく変わったといっていて、そのしばらく後に prerelease 3 が出るという。 prerelease 2 にもフォーム機能は含まれていて、 3 とはかなり違ったものだったということか。

[52] What's New, October 1993, , https://web.archive.org/web/19961220064730/http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/old-whats-new/whats-new-1093.html

[53] >>52 条に

Note: This page requires fill-out forms support as found in Mosaic 2.0 prerelease 4 or later.

とある。 prerelease 3 と 4 の間にも機能追加があったものか。

[54] >>52 条に

If you are using Mosaic 2.0 prerelease 6,

とある。すると prelease 6 でも変更があった可能性がある。

[55] HTML要素概説
要素名
form
要素名
mh
要素名
input
要素名
textarea
要素名
select
要素名
option
日付
説明
HTML+ に、 form, mh, input, textarea, select, option がある。 HTML+19931028
[49] HTML要素概説
要素名
form
要素名
input
要素名
select
要素名
option
要素名
textarea
要素名
isindex
日付
説明
頃公開された NCSA Mosaic 2.0 は、 form, input, select, option, textarea を実装していた。 現行仕様である。 これより前の prerelease 版から実装されていた。 isindexform をエミュレートする形で再実装された。
出典

[61] Index of /MarkUp/html-test/ncsa, https://www.w3.org/MarkUp/html-test/ncsa/

[69] HTML要素概説
要素名
form
要素名
input
要素名
select
要素名
option
要素名
textarea
日付
説明
HTML DTDform, input, select, option, textarea が追加された。 HTML19940407

[62] Index of /MarkUp/html-test/forms, https://www.w3.org/MarkUp/html-test/forms/

HTML4

[21] HTML 4 仕様書は、 既知の問題点として、 特に次のことを (もしかしたら将来の規格で改善するかもしれない例として) 取り上げています。

[22] HTML 4 仕様書 B.6.2 Future projects IW:HTML4:"appendix/notes.html#h-B.6.2"

  • フォーム欄の種類が現代的な UI に比べて少ない。例えば表データやスライド器や複数頁配置の機能が無い。
  • 鯖が提出したフォームの欄の値を更新できず、 HTML 文書全体を送らなければならない。
  • 音声ブラウザ視覚障害者がフォームと対話するのに問題がある。
  • input//imageクライアント側画像写像を使えるように usemap 属性を追加するのがよいかも。位置に対応する area 要素が鯖に渡す値を提供する。鯖側のスクリプトを修正しなくて済むように、 area が座標を提供できるよう拡張するのが適当かも。

[56] Forms Overview, InetSDK, , https://web.archive.org/web/20001109225300/http://msdn.microsoft.com/workshop/author/forms/formsoverview.asp

[59] User Agent Authentication Form Elements, , https://www.w3.org/TR/1999/NOTE-authentform-19990203

[60] HTML要素概説
要素名
authform
日付
説明
Agranat Systems, Inc.Microsoft CorporationW3C に提出した仕様案に、 authform がある。 認証フォームを表す。
出典
参照
form

Web Forms 1.0

[20] Web Forms 1.0 は、 HTML 4.01フォーム機能の通称です。 Web Forms 2.0 に対する拡張前という意味で使われることがあった語です。

HTML 以外

[58] HTML要素概説
要素名
input
要素名
select
要素名
option
要素名
optgroup
要素名
fieldset
借用先
WML 1.3

HTML5

[57] HTML要素概説
要素名
form
要素名
input
日付
説明
Google検索のデータベースを使った調査によると、 要素の利用数第18, 19位が form, input だった。
出典

メモ

[9] * がついた項目は必須ですのようになってることが多い中、逆に* がついた項目は任意ですなこともあって紛らわしい。

(名無しさん 2006-10-30 23:57:10 +00:00)

Web Forms

[10] Web Forms は、ウェブで用いられている HTMLフォームの仕組みです。

[11] Web Forms 1.0 は、 HTML 4 のフォームの章で定義されたフォーム機能です。

元々の HTML 4 版と、そのまま XML に移植した XHTML 1.0 版、 XHTML m12nForms モジュールの大きく3種類がありますが、 いずれも本質的には同じです。

[12] Web Forms 2.0 は、 WHAT が提案する拡張されたフォーム機能です。 Web Forms 2.0 と既存の UA のフォーム関連の拡張に加えて様々な新機能が含められています。 HTML 4 の拡張と XHTML 1 モジュールの2種類の使い方ができます。

[13] ところで、 Web Forms 1.0 は初代のフォーム (HTML 2.0 版 ≒ HTML 3.2 版) にファイルうpとか fieldset とかを追加したものなのですけど、初代の方にも誰か番号を付けてくれないのですかね? 0.0 とか 0.5 とか? HTTP のように 0.9 というのもありかも。

XHTML m12n Basic Forms モジュール (HTML 3.2 版 + label) にもついでに番号を振ってもらえるといいかもとか。

[14] Web Forms 2.0 ( 版) http://www.whatwg.org/specs/web-forms/current-work/#forms

[15] 使いやすさ日記: 672. Googleが作るとクレジット決済Webフォームはこうなる ( ( 版)) http://usability.ueyesdesign.co.jp/diary/672_googleweb.html

[16] XBL 2.0 ( ( 版)) http://dev.w3.org/2006/xbl2/Overview.html#html-forms

[18] DocBook 5.x Customizations ( 版) http://docbook.org/schemas/5x-custom.html

This is a community project; it is not an official product of the DocBook Technical Committee.

The “forms” schema adds HTML forms elements to DocBook.

[19] Google Online Security Blog: Next Steps Toward More Connection Security () https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html

Beginning in October 2017, Chrome will show the “Not secure” warning in two additional situations: when users enter data on an HTTP page, and on all HTTP pages visited in Incognito mode.

[23] New in Chrome 62  |  Web  |  Google Developers () https://developers.google.com/web/updates/2017/10/nic62