テストする人。

ソフトウェアテストってわかんない。テストとQAのゆるゆるブログ。

IDの桁数についての話

プロローグ

こないだテストしてて、とある仕様に引っかかったんですね。

 

   ログインIDは6桁以上14桁以内とする

 

え?何で?で、BTSに何でよ?って書いたら(いや、もう少しちゃんと書いたけど)

「一般的に」という回答

 

   ???ファッ( ゚Д゚)???

 

いつから、一般的にログインIDは6桁以上14桁以内になったの?

何?私 浦島太郎?

※後で、言葉足らずによる誤認識だったことが判明するのだけど

 

問題点

私が疑問になった点は以下

  • ログインIDって基本的にユニークなのに桁数制限いるの?
  • まぁ制限あってもいいけど、上限が必要な理由とかある?
  • とか14って数字はどこから出たの?
  • 一般的なら文献なり使用しているサイトあるよね?
  • 一般的なら会社内なりで周知しなきゃ

 

 Twitterに投げてみる

一般問題はTwitterに投げたら、きっと誰かが拾ってくれる。

そう信じて投げてみた(-ω-)/ ↓

 

 優しいフォロワーさんが、いくつかURLを貼ってくれたのだけど、どうもパスワードについてのURLばかり。

パスワード8桁以上推奨なのはわかった。

しかし、やはりログインIDについては書いているサイトが見当たらない('ω')

 

別の同僚に聞いてみる

 

 担当者が一般的というからには、他のエンジニアからしても一般的だろう。

そうだ、こないだテストしたシステムもログインIDに桁数制限つけてたよね。

ということで、聞いてみた。

 

・・・結論からすると、ログインIDに限らず、すべてのテキスト項目に最大桁数制限を設けていたorz

そうなると、論点とは違う。

 

その時に、さらに別のエンジニアとも話してみる。

彼は一番私が考えているログインID制限に近い考えをしていた。

 

私が考えているログインID制限
  • ログインIDは桁数の制限は基本的に必要ない
  • 桁数が必要だとすれば、パスワードと同じ8桁以上にする
  • ログインIDはユニークであること
  • ログインIDは半角英数、一部記号で構成すること

 

偉い人に聞いてみよう

 ・・・んん?どうも一般的(少なくとも同僚の間では)ではなさそうだぞ。

ま・・・まさか、社内がトレンドに追いついていないのかΣ(゚Д゚)?!

 

でも、調べてもググっても、IDの桁数について説明しているものは出てこない。

そこで、先ほどフォロワーさんに教えてもらったURLの1つを見る。

 

徳丸浩の日記

ん?このお名前どっかで見たことがある。

 

     はっ?!(左前の本を見ながら)

 

この本の著者じゃないか!!!

 

ググってみたら、Twitterもなさっていることが判明。厚かましいかと思いつつTweetしてみた。

 

 

・・・あれ?

 

   セキュリティ上の理由は思いつかないので

 

つまり、やっぱりログインIDに桁数は必要ないじゃないか。

もちろん、仰っているようにデザインやDB制限がある場合は必要なんだろうけど。

 

直接対決する

対決というと、聞こえが悪いけど(闘ったわけではない)

ここまで調べたり聞いて、これといったものが出ないので、再度本人に聞いてみることにした。

 

勘違い

 どうやら、「一般的」というのは「ログインIDに何らかの桁数制限をつけたあげた方が優しい」ということだったらしい。

それも、上記からすると「?」になるのだけど、数字に関しての根拠は特にないと。

 

なるほど。

 

 何となくお互いに言葉足らずだったのが原因だったみたい。

それでも、感覚的に何かを思って、こういう制限をつけたはずだろうと

さらに話をしてみることに

 

ログインIDに最小桁数の制限をつける意図

他のエンジニアとも話したのですが、これは、お客様に対する「安心感」を与えるための”優しさ”という点が一番強そう

ログインIDに最小桁数制限をつけないサイトはTwitterを始め、たくさんあるのですが

やっぱり、「ない」より「多少つけたあげる」方が「何となくセキュリティに守られている感」があるようです。

(本気でセキュリティを考えるのであれば、パスワードの桁数や規則を整備してあげた方が効果的のようですが)

 

ログインIDに最大桁数の制限をつける意図

 まず2つは徳丸さんが仰っていたような点はあげられます。

・デザイン的な問題(長すぎてデザイン崩れ起こすのもね・・)

・DBの制限

 

なのですが、DB制限について 興味深い(というか知らなかった)話がありました。

PostgreSQLMySQLの大きな違い

私が携わるシステムのDBはPostgreSQLが多いのですが、今回はMySQLだったこと。

 

あまりDBを意識していなかったのですが、両者の大きな違いが

  Text型にインデックスを貼れるか貼れないか

ということ。

PostgreSQLはインデックスが貼れるということなので、

割りとText型を使うのが主流のようです。⇒最大桁数を意識しなくてもDB上問題ない

 

MySQLはText型にインデックスが”そのままでは”貼れないので、用途に応じてString型を使う必要がある⇒最大桁数を決めなければならない 

    なるほど(´・ω・`)

 

PostgresSQLということにすっかり甘えてきましたが、これから意識しようと思います。 

 

数字の謎

制限を付ける理由としては、何となく解決しました。

では、なぜ6桁~14桁としたのでしょう

 

最小桁数を6桁とした理由

 エンジニアに引き続き「何で6桁にしたのさ?」と話していたところ

 

   「IDとして意味のあるものをつけて欲しい

 

という思いが込められていると教えてもらいました。

 だって、ID1文字とか2文字じゃなかなかないよね?

かといって、パスワードにあわせて8文字になると、一単語として成り立つ文字少ないよね?

 

こんな感じがいいんだよ↓

     × green 短い

     × red  短い

     ○ Purple  このくらいからがイイ

 

おぉ、何か納得(感覚的な問題なんだけど)

 

 最大桁数を14にした理由

特にないらしい(´・ω・`)ショボーン

ただ、先ほどの6桁+8桁(パスワードの推奨最小桁数)=14桁になるなぁと

思った時に 何となく腑に落ちました。

 

エピローグ

結果、セキュリティ上IDに桁数をつける重要性は特にないということだったわけですが、お客様に対するUIだったり、潜勢的にエンジニアが意識していた「想い」などが分かって、楽しかったです。

色んな人を巻き込む形にはなりましたが・・・ありがとうございました。