読者です 読者をやめる 読者になる 読者になる

ようこそ、ユーザIDさん

こんな経験はありませんか?

f:id:noire722:20110219035924p:image
メールアドレスと1対1で対応する一意なユーザIDを必要とするWebサービスにおいて

  • いつも使っているお気に入りのユーザ名が既に他人に使われていて萎える
  • IDの後ろに誕生日を付ける


なぜ同じ名前を使ってはいけないのでしょうか。
リアルの世界では同姓同名の人がたくさんいるのに…

ユーザIDがあなたの名前

多くのWebサービスではユーザIDがあなたの名前となります。
ログイン時にはこのユーザIDとパスワードを使って認証し、システムはあなたをユーザIDで呼びます。
例) ようこそ、ユーザIDさん

Twitter の場合

お馴染みの Twitter を例に挙げて考えます。
f:id:noire722:20110219040418p:image

項目名 用途 重複の可・不可
名前 プロフィール用/飾り 重複可
ユーザ名(screen_name) ログイン/URL/リプライ・DMの宛先指定 重複不可
メールアドレス ログイン 重複不可

アカウント作成時にはこのような項目を入力して登録します。

通常、Twitter上では screen_name で誰かとやりとりをします。
もしこの screen_name が重複可能だったら、ある特定の人にリプライを送るつもりが複数人へと送ってしまうことになってしまいます。
そのため、あなたはお気に入りの単語の後に誕生日などの数字を付けたものを考える羽目になります。noire722とか


screen_name でリプライを交わすことはリアルの世界で名前やあだ名で呼び合うことに似ていますが、名前やあだ名は重複可能です。
では、なぜリアルでは混乱が起きないのでしょうか。それは別の方法で個人を特定している前提があるからです。
顔や声などの身体的特徴、住所や電話番号etc...これらを足し合わせれば日常生活で困らない程度には個人を特定出来ます。

Twitter はメールアドレスであなたを特定出来るのでは?

出来ます。事実、ログイン認証時にメールアドレスを使うことが出来ます。
ですが、さすがにメールアドレスでお互いを呼び合うのは難儀ですし、個人情報の問題もあります。
じゃあ、やっぱり screen_name は一意じゃないとダメ?

"一意"とは:
ある値が2つ以上存在しないこと。
様々な値が存在するグループの中で、同じ値が重複していない場合、「値は一意である」と表現する。

実はもう一つユーザIDが存在する

http://api.twitter.com/1/users/show.json?screen_name=noire722

上のAPIを叩けば僕のプロフィールなどを見ることが出来ます。
f:id:noire722:20110219045724p:image

取得結果の最後の方に"45427812"という数字があります。これは登録時に Twitter が僕に割り振った一意なシステムIDです。

つまりTwitter のシステムは screen_name が重複していてもこのシステムIDで僕を特定することが出来ます。
それは、screen_name が一意でなければならない理由に必然性は無く、UI(見せ方)の問題であることを意味します。


そして Twitter はあくまで一例です。

まとめ

一意であるメールアドレスに対応する一意なシステムIDを自動採番することが出来るのに
一意なユーザIDをユーザに登録させる意味が本当にあるのか。
それはおそらくケースバイケースです。一意なユーザIDの便宜上の利点も確かにありますし、サービスの内容にもよるかもしれません。

ちなみに、Twitter と似たサービスで facebook という超有名なWebサービスがありますが、こちらは名前の重複を許容しており、ログイン認証はメールアドレスとパスワードを使って行います。ニコニコ動画もそうですね。
Twitter dis や facebook を宣伝する意図はありません…というか facebook 全然使ってません。


facebookの仕様について指摘があったため補足しておきます。

  • facebookのscreen_nameも重複を許可していない
    • 誤解を招く表現だったことをお詫びします。上で言及した"名前"は姓名のことです。Twitterと違うのはそのscreen_nameが個人のページのURLぐらいにしか使われないことで、発言や会話する上でほとんど意識しないでよいことです。
  • screen_nameの代わりに数字のIDを用いるのは覚えにくいしよくない
    • その通りだと思います。が、そもそもそのIDを隠蔽した作りにすることは可能なのではないかという提案です。(一意なscreen_nameが名前として認識されることがネット上では当たり前である、このことに対してのif)

以上、妄想Tweet まで。