TwitterやFacebookといったインターネット上のサービスでアカウントを作成する際は、必ずと言っていいほど「ユーザー名」を登録しますが、使用できない文字が含まれていたり、すでに登録済みのユーザー名を登録しようとしたりして、エラーが表示されるのを目にしたことがある人もいるはず。そんなユーザー名の制限やこれからのユーザー名のあり方について、エンジニアのLord氏が語っています。

Identity Beyond Usernames - Lord i/o

https://lord.io/blog/2020/usernames/

テキストによるSNSとして多くのユーザーを抱えるTwitterの最初期においては、主な投稿インターフェースはSMSだったとのこと。以前までTwitterで採用されていた140字という文字数制限もSMSの文字数制限に由来しており、TwitterがスマートフォンやPCで利用されるようになった今でも、Twitterでフォーマットを好き勝手に変更したりリッチテキストを使用したりすることはできません。しかし、今のTwitterユーザーはUnicodeを利用してテキストジェネレーターでフォントを変えたり、絵文字を利用したりして豊かな表現が可能です。



Twitterの投稿内容はUnicodeによる表現ができますが、ユーザー名だけはSMSが主なプラットフォームだった時代と変わらず「aからzまでのアルファベットと数字による15文字までの文字列」という制限がかかったままだとLord氏。GitHubやFacebookなど、他の多くのウェブサイトも似たような制限があり、QQやWeChatといった、主に中国で利用されるメッセージサービスでも、ユーザーの識別には漢字ではなく数字を用いているとのこと。Lord氏はなぜユーザー名にUnicodeが使えないのかを、世界で最も巨大な名前によるシステムとも言える「DNS」を例に説明しています。

FirefoxでASCIIコードの「epic.com」にアクセスすると、ヘルスケアソフトウェア企業の「エピック・システムズ」のウェブサイトが表示されますが……



Unicodeの文字列である「еріс.com」にアクセスすると、「Epic Games」というウェブサイトが表示されました。



このように、ASCIIコードとUnicodeによる2つのドメイン名をアドレスバーから見分けるのは難しく、フィッシング詐欺につながる危険性があります。Chromeの場合はUnicodeをDNSで使用可能な文字列に変換したPunycodeが表示されますが、問題の本質は「視覚的に同じであるテキストを、コンピューターが理解するバイト単位でも同じであると思い込んでいる」ことにあるとLord氏は指摘しています。



たとえユーザー名を英字のみにしたとしても、「ユーザー名の変更」に関する問題が残されているとのこと。例えばGitHubアカウントのユーザー名を変更すると、古いユーザー名のリポジトリは新しいユーザー名にリダイレクトされます、しかし、古いユーザー名とまったく同じユーザー名で第三者がGitHubのアカウントを取得し、まったく同じ名前のリポジトリを作成した場合、リダイレクトは機能しなくなってしまうとのこと。Instagramも、2015年まではユーザー名を変更すると自分宛のメンションがすべて消えてしまう仕様だったり、Google社内においても、利用するユーザー名は不変であることが前提で、変更には何日もかかったりと、ユーザー名の変更には多くの問題があるとLord氏は語っています。

こうしたユーザー名の変更に関する問題に解決策を示したのが、2億5000万人もの利用者がいるチャットアプリ「Discord」です。Discordはユーザー名をひとつのサーバーで管理しており、ユーザー名の衝突や妥当なユーザー名の検索がほぼ不可能であるため、ユーザー名の一意性を無くして問題を回避したとのこと。Discordが生成した識別番号をユーザーが指定したユーザー名に加えることで、複数のユーザーが同じユーザー名を持つことを可能にしています。



by Underway In Ireland

また、Discordと同じチャットアプリのSlackは、2017年にユーザーネームを完全に廃止し、表示名のみを採用することを決定。ユーザーは表示名を用いてメンションを行うことが可能で、表示名が重複している場合はエラーが表示され、メンションを送信したい相手の選択を促されるとのこと。DiscordやSlackによるユーザー名の進歩は、テキストの一意性に依存せずとも自動補完を行える多機能なテキスト編集画面を構築できたからこそ可能になったとLord氏。



テキストの一意性に頼っているのはユーザー名だけではなく、プログラムの変数やファイルシステムのディレクトリ名など、他にも多くの例があります。ユーザー名の制限を突破するためには、テキスト自体の修正ではなく、一意性のある識別子を別に設けることが大切であることをDiscordやSlackが示していますが、同時に「平易なテキスト編集画面では、アイデンティティとしてのユーザー名と、ラベルとしてのユーザー名を混同させてしまう」問題があるとLord氏は指摘。「これはテキストの問題ではなく、テキスト編集における問題です」とコメントしています。