MAXLENGTHのワナ

みずほダイレクトでログインできないトラブルが出る場合
http://itpro.nikkeibp.co.jp/article/NEWS/20060126/227975/

いままでパスワードは6桁までだったのが、32桁まで対応したところ「今までのパスワードが使えなくなった!」というユーザーが続出したという話。うちにも(ユーザーなので)お知らせのメールが来ました。

もともと入力制限で6桁までしか入力できなかった(MAXLENGTH=6)ので、ユーザーが7桁目を入力しても無視されていた。ところが桁数が増えたので、7桁目も(当然)入力されてしまい、パスワード不一致!となるわけ。

今まで:"ABCDEFG" と入力 → "ABCDEF" までで切り捨て
変更後:"ABCDEFG" と入力 → "ABCDEFG" となる → "ABCDEF"とは不一致!

なんのことはない、ユーザーの誤認によるもので、バグでもなんでもない。技術者ならたぶんそう考える。

だけど、自分もみずほのインターネットバンキングは利用しているのだけど、たしかもともとパスワード入力欄が、6桁ギリギリまでしか表示できないサイズになっていたように思う。そうすると、余分に入力した文字が実際に入力されているかどうか、実は見た目ではわからない。

パスワードではない普通の入力欄で、文字数が入りきらない入力をすると、先頭が左にスクロールしていってさらに入力ができるようになる。パスワードの場合は入力がぜんぶ「*」になるから、スクロールしているのかどうかわからない。右側に余白があればスクロールしているとは思わないだろうが、幅がちょうどだからそれも期待できない。

対策としては、最初から入力欄をじゅうぶんに(といってもあと2,3文字ぶん)幅がとってあれば「あ、6文字しか入らないんだな」ということがわかりやすくなっていたはずだ。

でももっと根本的な問題は、技術者の側で「6文字しか入らないように作ってある」ものが、ユーザーにはそうは見えなかった、わからなかったというところだと思う。6文字以上は入力を受け付けないし、そう画面に明記もしてあるし、そもそもパスワードを設定するときに6文字の制限があるんだから7文字入力するほうがおかしいだろう!と思うのが技術者だろう。

6文字しか入力できない、という制限をかけるのなら、7文字以上入力したらそれが間違いであることがはっきりわかるようになっていないといけない。キーを押しても入らない、だけ、というのは不十分かもしれない。

さらに言えば、ユーザーが7文字入力しているつもりである以上、システムとしてはそれに対してちゃんと「パスワードが違うよ」という警告を表示してあげるのがスジのはず。文字数のエラーではなくてね。6文字までなんていうのはシステムの都合なんだから、ユーザーがそれを意識しなきゃいけないのは不適当だ。ユーザーは「自分が設定したパスワードどおり」であるかどうかだけ意識すればよいはずなのだ。

まあ、入力欄からはみ出す入力ができちゃうようなコントロールをデザインしちゃった(そして蔓延させた)人々が悪いんだ、と言ってもいいのかもしれないけれど。