

ネットでの通信販売などで、お客様情報を
入力するフォームとかありますよね。
そこで疑問があります。
電話番号で「-(ハイフン)」をなしにする必要があるフォームが
たびたびあります。(半角数字のみの入力)
あれは、CGI側でハイフンをとって格納すればいいと
思うのですが、なぜそうしないのですか?
もちろん、理由は作れるとは思います。
・ハイフン以外を使う人がいるかも「@」とか「:」とか
などです。
まあ、原理的には色々と考えられますが、実際のところ、
現実的には、「-(ハイフン)」をとって格納すれば問題は
生じないと思います。
仕事でフォームを作ることもありますが、自分の場合はそうしていて、
問題になったことなどありません。
(実装も極めて簡単です)
もちろん、ものごとには一長一短あって、メリット・デメリットあると思います。
結局
「総合してどちらがいいか」
にはなりますが、なぜ、現状のような「ー(ハイフン)禁止」が多いのでしょうか。
メリットはあるのでしょうか。
フォーム作成者に質問です。

No.6ベストアンサー
- 回答日時:
プログラマです。
ある程度大きな組織で、CGIなどを用いて開発をしていました。
組織的に開発していたので、独学ではなく、ある程度ちゃんと
したプログラムを書いていたと思います。(たぶん、誰もが知っている組織です)
(開発は「コードレビュー」という制度があり、他のプログラマのチェックを絶えず受ける)
質問者様のいう指摘はもっともだと思います。
ここでは書きませんが入力データの格納方法は様々で
他の回答者が言うような
「データには手を付けないで保管するのが基本」
などという常識は全くありません。
むしろ
「状況に応じて、いかに効率よく(わかりやすく)格納するか」
というほうがプログラマの腕の見せ所です。
そういう観点でみると、フォーム入力の場合、
「確認画面でハイフンなどを消したもの(もしくはハイフンを加えたもの)を表示する」
がもっともユーザフレンドリなCGIだと思います。
つまり、
(ある程度)入力したものから答えを推測して、処理系に適したフォーマットに整形する
ということです。
「推測」とかくと「推測はだめだ。外れることもある」などと言われそうですが、
フォームの性質上、入力間違いは普通にありますし、「半角数字だけ抜き出す」で
十分対応できます。
実際、私が書くときはそのような考えは常に持っています。
だけど、実際のところは、多くの2流プログラマは
「動けばいい」
「わかりにくくさえなければいい」
「ある程度、不便でも間違わなければいい」
などと
「ある程度ユーザが真面目に入力する」
を前提にしているんです。
それで、納品には耐えられますし、よりユーザフレンドリな
インターフェースは仕様書には現れません。
仕様書にあるのは、
「電話番号を入力し、格納すること」
などであって、
「ハイフンの有無にかかわらずに入力できる」
などまで書かれません。
つまり単純にプログラマの質の問題です。
会社によっては、レビューもほとんどなく納品までこぎつけますし、
「ユーザフレンドリ」
の度合いについては、そこまで厳しくない場合も多いです。
また、フォームなどは使いまわすので、改善されにくい面もあります。
しかし、入力者が数人ならばいいですが、大きなシステムとなると、
何万人もそのフォームを使いますので、
「プログラムの行数が増えて大変」
とか
「格納配列が多くなって可読性が下がる」
みたいな理由で、プログラマが「不便を許容」することはあり得ません。
単に、そのプログラマが
「そういう方法が思いつかないだけ」
です。
実際、フォームを見てもらえればわかりますが、ハイフンの有無に関係ない
フォームもありますよ。
専門家のご意見参考になります。
確かに、開発者って人によって
「便利さを追求する人」
もいるし
「そういうのは無駄」
っていか、そもそも、最低限の機能以外考えない人っていますね。
「プログラマの質の問題」
というのはとても納得です。
普段作っている側で、使う側から見ると
「このCGIはこうすれば利便性高まるのに」
って結構ありますよね。
その一つが「フォームの電話番号」でした。
No.8
- 回答日時:
> ネットでの通信販売などで、お客様情報を
> 入力するフォームとかありますよね。
てかこの文面見てませんでした。
これであれば、スマホ対応していたとしても、ハイフン禁止しなくていいと思いますね。
ただ明記しているだけで許可されているかもしれませんが、マジで禁止しているなら、システム側の都合があるか、他の記号なども禁止しなければらないのだからという理由で一律禁止しているかのどちらかではないでしょうかね。
何か怪しい動作で複数注文されていたりだとか、何かあった時にみたいな分析や集計とかで電話番号を使うから、数字だけの方が都合がいい、ということから、ハイフン禁止とか。
どの道、内部でどんな管理をしてようが、ユーザーが入力していない値を確認や登録値としてユーザーに見せるというのはおかしいと思いますけどね。
No.7
- 回答日時:
なんか思ったのが、作ってるシステムのモノに依存した考えではありませんか?
それは今までの回答も然りかと思いました。
色んな場合があるので、一律どうだってことないんじゃないですかね。
ハイフン禁止にするメリットは、ユーザーの立場では無く、システム側の都合だけかもしれませんね。
ハイフン禁止と謳われていて、マジでハイフンが入力できない一般人が利用できるサイトって一例だせますか?
例えば懸賞の応募ページ。
これは、ハイフンが入っていようがいまいが、一律ハイフンを取り除いてDB格納してもいいでしょう。
むしろその方がシステム上、『都合がいい』かもしれない。
確認ページまでは入力された値で表示してるけど、どうせユーザーには二度と表示することがないし、DBでは数字のみにしてるぜ!という。
事実、めざましテレビのじゃんけんの応募ページなどは、半角数字のみを入れてくださいとされる入力欄で、ハイフンを入れてもエラーになりません。
内部でどうしているかは知りませんが。
例えばアカウント関係のページ。
これは、ハイフンが入っていようがいまいが、入力された値がそのままDB格納されるべきでしょう。
勝手に取り除いたり付け加えたりすることにより、『意図しない値で登録される』と認識する人間は絶対数います。
更には、UXなどの関係上、確認ページなど設けない場合もあり得ます。
にも関わらず入力値と異なる値が登録されたら、それは逆にUXのレベルが低いですよね。
私なら、こっちが求めてもいねー値に勝手に変えやがってとムカつきますし、とりあえず文句は言います。
例えば世界レベル(ローカライズされていない)のページ。
絶対的に正しいという基準がありませんから、これもアカウント関係のページと同じでしょうね。
例えば社内システムや、複数のシステムが乱立して成り立っているなどのページ。
システムが1つだけとは限らず、他システムと連携する場合もあります。
そのせいで、そもそも入力欄を3つに『分けなければならない』ということもあり得ます。
逆にハイフンを絶対に入れないとダメというパターンもあるかもしれません。
例えばスマホ対応しているページ。
スマホでは、<input type="tel" />である時、数字キーボードが表示され、ハイフンは入力できません。
他の入力要素(numberなど)にすることでユーザビリティが下がります。
しかし、習慣などで『03-1234-5678』のようにやりたがります。
その関係上、注意喚起の意味で『ハイフン禁止』(ハイフンは入力できません)と謳っているかもしれませんが、PCでやってみると、案外ハイフンが許可されていたり、なんてこともあり得るでしょう。
ちなみに個人的にはですが、電話番号レベル『だけ』で、DBのバイナリ型の列に登録なんて、どんなDBを利用していても経験上、一度も見たことありません。
No.5
- 回答日時:
> 「半角数字以外は取り除く」
ユーザーが自分が入力したものと違うものが表示されたら不信に思うでしょ
データ管理の基本中の基本、ユーザーから渡されたデータは原則
変化せずに登録するんですよ(逆に不正なデータは登録しない)
そのために不正なデータは入力時点で間違いだと知らしめるのがあるべき姿です。
失礼ですが、現場での経験はありますか??
言語にもよりますが、データ管理方法など千差万別。
そもそも「変化せずに登録」って何ですか。
言語によってはオブジェクト管理しますよね。
バイナリ管理しますよね。圧縮したり、ほかのデータと一緒に配列を作ったりしますよね。
様々な変換や格納方法がありますよね。
元のデータに戻ればいいんですよ。
「ハイフンを取り除く」
だって、もし必要ならば、その情報を保持することなんてコーディン上全然面倒な
ことじゃないですよね。
元データを配列に格納しつつ、正しいデータとして取り扱うなんて、
全然難しいことではないですよ。
データが二つ必要だとか、メモリの無駄遣い、とかいうかもしれませんが、
多くの処理系において、ユーザが意識しない配列や変数なんて山ほどありますよ。
例えば、内部で、配列を二つ用意すればいいだけです。
それが手間だとかいうかもしれませんが、まともなプログラマなら、
ユーザ側の手間と天秤にかけますし、私の感覚(や周囲のプロと話した感覚)だと
その手間を惜しむような理由は想像できないんです。
もちろん、一長一短、デメリットもあるしメリットもある。
結局は総合判断ですよ。だけど、総合判断すると、上述の意見なんです。
No.4
- 回答日時:
や、だから、半角数字以外を取り除くとかそういう次元の話ではなくて、どのような人、どのような端末やアプリケーションでも無理なく入力できる最小公約数な入力方式が好まれているわけですが。
日本人だろうがアメリカ人だろうが。
フロントエンドがwebページだろうがクライアントアプリだろうが。
数値チェックなどは、それに付随して行われているだけです。
だから、電話番号の入力の他に国コードの入力を要する場合もありますよね。
日本人でPC限定でしか考えてないサイトやページは、ハイフン制約があったり、そもそも入力欄が3つに分かれてたりしますよ。
No.2
- 回答日時:
そもそもハイフン自体が変動するからです
たとえば多摩地区だと昔
042x-yy-zzzzだったのが今は042-yyy-zzzzになっています
電話局の都合で変わる可能性があるものをあえてユーザーに書かせる意味がありません。
(市外局番なしでかけなくてはいけない理由もないし)
携帯だと多くの人が
090-xxxx-yyyyという区切りが正しいと思っているきらいがありますが
実際には会社の区切りで考えると090-xxx-yyyyyが正しいと考えるべきです。
そんなふわっとしたハイフンの位置をユーザーに正確に入れさせることができますか?
そういう諸事情を鑑みれば、ハイフン無しの入力が最強です
No.1
- 回答日時:
ひとことで言えば、CGI 作成側の技術的なコストの問題です。
"-" の記号は一意ではありません。半角の場合、マイナスと長音があり、全角の場合だともっと色々あります。
更に、市内局番を ( ) で括る人もいます。これらを取り除くのに数十ステップは費やします。
数字だけに限定すれば簡単に処理できるのに余計な文字が入るとそれを取り除く為にとても複雑な処理をしなければならないのです。
入力時点で後々不要となる記号類をはじいておけばその後の処理は楽です。
ゴミの分別をお願いするのと同じです。
数字以外を取り除くってかなり楽な処理じゃないですか?
経験者から見ると、
「なぜやらないの?」
って思うんです。
失礼ながら経験者ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- ビジネスマナー・ビジネス文書 苦情は電話で返すマナーでもあるのですか? ちょっと自分がいつも言ってるお店の要望しただけで、本社では 3 2023/01/28 20:42
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- PHP sessioncookieをではなくcookieを使わなければならない理由について… 4 2022/11/07 13:01
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- クレジットカード とあるサブスクリプションを購入しようと思って、 2 2022/05/17 15:06
- 確定申告 公金受取口座登録後、e-Taxで口座情報を入力する必要はありますか 2 2022/05/09 06:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBS 条件中の条件
-
メルマガ登録とありますが・・...
-
「10週間ウェブ開発講座」のPut...
-
gooポイントについて。よろしく...
-
ifでの条件分岐
-
VB.net テキストボックスの入力...
-
至急です。Yahoo!IDを作りたく...
-
ネット内で「事後通販」という...
-
STEAMでゲームを購入したところ...
-
kindleで青空文庫を読むには?
-
ETC 購入2年後の支払い 忘...
-
アマゾン商品支払い
-
ETCの変わった販売方法?
-
インターネット環境のないパソ...
-
第5人格の体験分割みたいなも...
-
agodaで現地決済にしたのにカー...
-
当てはまる言葉を教えてください。
-
クレジットカードの番号をかえ...
-
ヤフーBBからの請求が・・
-
海外サイトからドル建てで購入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ハイフンとマイナス
-
VBAのTextBoxに半角数字のみ入...
-
TextBoxに半角数字のみの入力し...
-
入力フォーム(電話番号)
-
テキストボックスの入力制限
-
VB2005 TextBoxに何も入力しな...
-
scanf( )で日本語を入力する方...
-
フォームの内容のチェック
-
「FROM 句の構文エラーです」が...
-
メールフォームのFAX番号で「記...
-
VS2010Exprsライセンスキー取得...
-
フォーム入力の際、電話番号等...
-
VBA ユーザーフォーム テキスト...
-
Eメールを一度で複数の人に送...
-
imode用の郵便番号検索CGI
-
JSPで、日本語入力のON/OFF
-
単純なコマンドプロンプトが動...
-
WinAPIで日本語入力モード(倍...
-
リッチテキストでIMEを動作させ...
-
メールが送れません
おすすめ情報