« 2009年4月 | トップページ | 2009年6月 »

2009/05/09

WEBサービスにたまに(?)見られる、いただけない仕様7つ



自分自身もプログラマーですが、やはり利用者の立場になることも多いので、そういう場合、「人の振り見てわが振り直せ」で教訓とさせていただくことも多いです。それにしても、「何で?」と思いたくなることもあること(ぶっちゃけた話、「センス悪い」と感じること)があるのも事実です。

1.過剰な入力チェック(型編)
(フリガナ編)
「私は、お客様がフリガナをカタカナで入力したか平仮名で入力したか知っているぞ」と自慢をしたいのかなんなのか、こういうチェックをしているサイト結構あります。フリガナと書いているのに漢字で入力してきたり(姓名の「名」をこの欄に入れてくる場合、たまにあり。)するのは確かに情報として役に立ちませんが、平仮名かカタカナかが問題になるケースは少ないように思います。ソートや検索する機能を付けたい場合は、平仮名かカタカナで統一されているべきでしょうが、そうであっても、例えばカタカナで入力して欲しいのに平仮名で入力されていたら、プログラムで(サーバ側で)自動的にカタカナに変換してあげたらどうでしょうか?

そもそも、こういう親切な設計にしないでエラーメッセージだけ出すサイトに限って、「やまだ たろう」なり「ヤマダ タロウ」なりの記入例をフォームに記載していない場合が多いです。さらには、「フリガナ」とカタカナで「振り仮名」のことを書いていたらカタカナであり、「ふりがな」と平仮名で「振り仮名」のことが書かれていれば、「平仮名で入力してください」の意味だという暗黙のルールが広くあるかのように勝手に錯覚?しているのかなと感じます。「カタカナで入力しろ」とも一言もフォーム上には書いていない癖して、確認画面では、「フリガナはカタカナでご記入ください」とかノタマウ。大して重要でないサインアップなら、そこで止めたくなります。

(電話番号編)
同じように、電話番号でハイフンを入れて欲しくないなら、「ハイフンは入力しないでください」と最低限、入力欄の近くに書いておくなり、maxlengthを指定して、「ああ、ハイフンは入れないで欲しいという意味だな」と思わせる設計にしておいてほしいです。入力が終わって確認画面に進んでから「電話番号にハイフンは入れないでください」とか言われた日には、カチンと来ます。

ハイフンを入れて欲しくなければ、プログラムでハイフンを削除してからDBに入れればいいことではないのでしょうか? 全角の数字を入れてきたら、半角の数字に変えるのだってあまりにも簡単にできます。また、IE専用になりますが、スタイルシートでime-modeの設定は可能であり、「(一応、)半角文字しか入力できないように」はできます。「a」とか「&」とか数字やハイフン以外の文字が入っていたら、出鱈目入力の可能性もありますし、エラーにすべきでしょうが、「03-8675-1234」なんかは、言いたいことは十分に分かるんじゃないかと思うんですけど、ついつい判別してしまうんですね、プログラムをはじめて間もない頃は。プログラムの教科書をそのまま実践で使っているのが間違いの元?

(番地編)
また、住所の番地の入力方法までチェックしているサイトがあって、困ることがあります。私も実際エラーに引っかかってしまったのですが、ついプログラマーの癖で、「英数字を全角で入力するのは素人の証拠」という観念が頭のどこかにあるので、番地も半角で入力したところ、「半角数字は使わないでください」とか怒られたことがあります。スパマーが脆弱性のあるフォームCGIを探すために出鱈目な文字を入力してくることがあるので、「住所が全て半角英数字だった場合、エラーにする」処理を入れたことは私もありますが、番地の入力方法まで全角・半角チェックって、どうなんでしょうか? SQLインジェクションを気にしているのでしょうか? であっても、半角数字ぐらい許してもらえないでしょうか? どうしても全角文字で統一したいなら、半角の番地は全角にプログラムで変換してもらえないでしょうか?

ただし、入力チェックはプログラムやセキュリティの基本ですから全てを否定するものではありません。例えば、メールアドレスの型チェックはセキュリティの意味合いから、無茶苦茶重要でしょう。ただ、その場合でも、全角英数字は半角英数字に自動変換するぐらいのことはやってあげてもいいと思います。

2.行き過ぎたセキュリティ
かなり特殊なケースだとは思いますが、最近実際にあったのが、ある会員制サイト(有料)を訪問したら、前回ログインしたパソコンと違うかクッキーが消去されているかで確認ができないので、「父親か母親の名前」「本籍地」「誕生日」を入力しろと怒られました。これは、突っ込みどころ満載のサイトである。

まず、クッキーの消去は何も悪いことではありません。セキュリティソフトが削除することも最近はあるし、パソコンの調子が悪くなれば、クッキーを削除することもあります。そもそも、このサイトの人はあまり考えていないようですが、同じ端末でも、ブラウザを変えれば、クッキーは共有されません。また、XPからVistaパソコンに買い換えた場合でも同様です。また、自宅からアクセスした人が会社からアクセスしてはいけないのでしょうか? こういうエラーメッセージを出すサイトは、IDとパスワードを異なる人で共有されては困るとかいうことを心配しているのは分かりますが、設計が悪すぎでしょう。

私もプログラマーとして、こういう依頼をしてくるクライアントに会ったことがありましたが、「こうこうこうだからダメ」と説明しました。それもあってなのか、結局私のところには仕事は来ませんでしたが、私ならお金をもらっても、このような設計のサイトは作りたくないです。(その時のクライアントは、IPアドレスまでチェックする・前回のIPアドレスと比較するとか言ってきましたので、さらにひどいと言えるかもしれません。固定IPの人がどれだけいるのでしょうか? ブロードバンドになって、結構固定に近いことはありますが、このような設計のサイトが増えれば、プロバイダもおいそれとは変えられなくなります。)

IDとパスワードを使いまわされる問題はたしかに深刻ですが、それはログインしてからの作業をこまめにログに残すなどして、同じ時間帯にログインしている人が複数いないかとか、IPアドレスが全然違う人が頻繁に交互にログインしているとかいう情報をつかんでから、(やるにしても)それから証拠を突きつけるべきではないでしょうか? 一律怪しいものは切捨てでは、過剰でしょう。

次に、「父親か母親の名前」の入力ですが、「秘密の質問」の設定項目があったのかもしれませんが、自分はそのとき、父親の名前を入力したのか母親の名前を入力したのかを全く思い出せません。また、サーバ側で完全一致で照合認証しているのか、賢く照合しているのか分からないので、性と名の間に半角スペースを入れたのか全角スペースを入れたか、それとも姓名の「名」だけだったのか思い出せません。両親の苗字は自分と同じことが多いでしょうが、離婚・再婚している場合もあるから違うかもしれないから、「姓」も入力させられたのかなとか考えました)。

結局、「姓(全角スペース)名」が正解だったのですが・・・。だったら、最初から入力欄を二つ準備して「姓」と「名」を別々に入れられるようにしてほしかったです。さらに、本籍地の入力もかなり焦りました。最初、本籍地に都道府県だけ入力したらダメで、結局全部入れてOKになりました。ここでも、番地を全角で入力すべきか半角で入力すべきかで、大いに迷いました。

誕生日の入力は結構オーソドックスですが、このサイトの場合、これがテキストフィールド1つだけでした。どのように入力していいのかさっぱり分かりません。「19**年**月**日」と入力すると、「19**/**/**」の型で入力しろとか言ってきます。「最初から言え!」というか、プルダウンか、せめて、年と月・日は別々に入力できるようにしてくれないと、「年」と書かずに「/」で書けと後から言われても・・・。超能力者でもあるまいし・・・。

3.noreply@~から返信して、メールソフトでの返信は不可・WEB上から再問い合わせしろとか言ってみる
問い合わせをデータベース化するために仕方がないとか理由があるかもしれませんが、それだけでないように思います。要は、再問い合わせしてもらいたくないというのが根底にあるように思えてならない。的外れな回答をしておいて、「そんなこと誰も聞いていません。よく読んでください。」と言われるのが嫌なのか、WEB上で一から入力させる。問い合わせ番号が割り振られ、前回の入力事項は省けるようにしていたらまだしも、全部入力させるサイトが結構あります。

4.ログインしないとメールマガジンの解除ができない
パスワードを忘れているときが結構あり、解除できない。届いたら削除すればいいだけと言われればそれまでですが、そこまでして読ませたいのか?と悲しくなります。

その人専用のワンクリック解除のURLを準備してもらうか、メールマガジンぐらい、メールアドレスの入力だけで解除できるようにして(事後の確認メールは必要です。)ぐらいにしてほしいです。

5.メッセージ欄の文字数制限が厳しすぎ
あるお店にクレームを出そうとすると「300文字以内」とか国語の文章問題みたいな制限がついていて、結局、クレームの抜粋の抜粋を書いて、後は、「電話してきてください」とだけ書くしかありませんでした。私のクレーム・怒りがさらにひどくなったのは当然である。あまりだらだらと書かれても読むのが大変というのは分かりますが、300文字はないでしょう。しかも300文字が300バイトの意味だったりします。

また、ついつい300文字か1,000文字以内かどうかの判別にのみ目が言ってしまいがちですが、何文字ぐらいオーバーしているかというのが結構重要な場合があります。また、文字数と言ってもバイト数のことを言っているのか、それとも全角1,000文字(2,000バイト)の意味のどうなのか、PHPのmb_strlen関数やJavaScriptのlengthメソッドのような文字数カウント方法なのかも分からないので、システム(プログラム)が私のinputを何文字だと解釈しているかという情報は重要になってくる場合があります。「1,000文字以内(2,000バイト)で入力してください。お客様は現在、2,546バイト入力されています。」のようなエラーメッセージがあれば、546バイトだから約275文字ぐらい削らないとなと考えられます。ここまで作りこむのは結構面倒ですから私も後回し(実際にはやらないことも少ないです)にすることが多いですが、できるだけ心がけたいです。

続きを読む "WEBサービスにたまに(?)見られる、いただけない仕様7つ"

| | コメント (0) | トラックバック (0)

« 2009年4月 | トップページ | 2009年6月 »