結論

ユーザー名は、パソコンや Web サービスが「この人はだれか」を見分けるために、ログインのときに入力する名前です。他の人に見せるための「表示名」や、システムの中で使われる番号の「ID(ユーザーID)」とは別物で、多くのサービスでは半角英数字と一部の記号だけが使えます。「アカウント名」はユーザー名と同じ意味で使われることが多い一方、X や Mac のように、表示名側をそう呼ぶ場面もあるので、画面ごとに確かめるのが確実です。

この記事でわかること

  • ユーザー名・ID・アカウント名・表示名・メールアドレスの違いと、名前を変えても変わらないもの
  • Ubuntu の useradd と adduser に26通りの名前を入れて、通った名前・断られた名前とエラーの原文
  • 入力欄の検証コードを Chromium で動かした結果と、自分のユーザー名や入力欄のルールをその場で確かめる手順

2026年10月29日更新|Ubuntu 24.04・shadow 4.13(useradd)・adduser 3.137・Chromium 153で実行確認

この記事で実際に動かしたもの:ホストのユーザー一覧に触れないよう、mount 名前空間の中で /etc の写しを差し替えたうえで useradd と adduser に26通りと5通りの名前を入れ、終了コードとエラーの原文を記録しました。あわせて、ユーザー名を変えてもファイルの持ち主が番号(UID)で保たれる様子を ls -l と ls -n で確かめ、127.0.0.1 の 22900 番に置いた自作の登録フォームを Chromium 153 で開いて、HTML の pattern 属性と JavaScript の検証がどの名前を止めるかを測りました。

登録画面で「ユーザー名」の欄を見て、メールアドレスを入れればよいのか、ニックネームを入れればよいのか迷った経験は多くの人にあるはずです。迷う原因は、サービスごとに「ユーザー名」「ID」「アカウント名」「表示名」の呼び方が少しずつ違うことにあります。最初に、1人の利用者に付く名前の関係を図で示します。メールアドレスはユーザー名の代わりにログインに使われることが多く、図ではユーザー名と同じ位置にあたります。

flowchart TD
    P[利用者] --> U[ユーザー名<br>ログインで入力]
    P --> D[表示名<br>他人に見える]
    U --> I[ID・番号<br>システムが使う]
    D -.-> I

よく調べられることの答えを先にまとめます。

知りたいこと 答え 詳しい節
ユーザー名とは ログインのときに入力して、利用者を見分けるための名前 ユーザー名とは(ふだんの意味とITの意味)
ユーザー名とIDの違い ユーザー名は人が読む名前、ID はシステムが使う番号。ユーザー名を変えても ID は変わらないことが多い ユーザー名・ID・アカウント名・表示名の違い
ユーザー名と表示名(ニックネーム)の違い 表示名は他の人に見せる名前で、日本語や絵文字が使えることが多い。ユーザー名は重複できない ユーザー名・ID・アカウント名・表示名の違い
ユーザー名に使える文字 多くは半角英数字と _ ・ - ・ . の一部。長さや記号はサービスごとに違う 主なサービスのユーザー名のルール比較
ユーザー名の例 taro_yamada、t-yamada、yamada2026 など。誕生日や電話番号は入れない ユーザー名の例と決め方のコツ
自分のユーザー名の確認方法 パソコンなら whoami。Web サービスはプロフィールやアカウントの設定画面 最初の5分:自分のユーザー名を確かめる
ユーザー名を忘れたとき 登録したメールアドレスや電話番号から、各サービスの公式の復元手順で探す ユーザー名を忘れたときの探し方
Linux のユーザー名のルール Ubuntu の useradd は意外に多くの文字を通す。adduser は英小文字始まりなどに絞る Linuxのユーザー名に使える文字

確認環境:Ubuntu 24.04.5 LTS(カーネル 6.18)の上で、Ubuntu の passwd パッケージ(1:4.13+dfsg1-4ubuntu3.2。shadow 4.13 の useradd・usermod)と adduser 3.137ubuntu1 を使いました。ユーザーの追加は、unshare -m で作った mount 名前空間の中で、作業用のフォルダー(/dev/shm/t229)に写した /etc・/var/log・/home をバインドマウントで差し替えてから行い、ホストの /etc/passwd が実行前後とも57行のまま変わらないことを確かめています。useradd のマニュアルは、同じ版の .deb を apt-get download で取得して作業用のフォルダーに展開し、英語版の CAVEATS 節を読みました。入力欄の検証は、127.0.0.1 の 22900 番に Python 3.13.18 の http.server で置いた自作のページを、Chromium 153.0.8010.12(Chrome for Testing)を playwright 1.63.0 から開いて確かめています。X・GitHub・Gmail・Google Workspace・Windows・Mac のルールと手順は、各社の公式ヘルプとドキュメントで確かめた範囲だけを書きました。他の人のアカウントを調べる方法は扱いません。外部のサービスには接続せず、アカウントも作っていません。図は mermaid-cli 11.16.0 で描画を確かめています(確認日 2026年10月29日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「ユーザー名とは|ID・アカウント名・表示名の違いと使える文字を実測」

ユーザー名とは(ふだんの意味とITの意味)

この節では、ユーザー名という言葉がふだんの会話とコンピューターの世界でどう違うかと、なぜ半角英数字が求められることが多いのかが分かります。

ユーザー名(user name・username)は、user(使う人)と name(名前)を合わせた言葉で、コンピューターや Web サービスが利用者を1人ずつ見分けるための名前です。多くの場合、パスワードと組み合わせてログインに使います。辞書(デジタル大辞泉)にも、利用者を識別するための名前で、多くはアルファベットと数字を組み合わせた十数文字程度までの文字列、と説明されています。「ユーザーネーム」も同じ意味です。

ふだんの会話で「名前」と言えば氏名やあだ名のことですが、IT の「ユーザー名」は、同じサービスの中で2人が同じものを持てない、という点が大きく違います。「山田太郎」さんは世の中に何人もいますが、同じサービスで taro_yamada を使えるのは1人だけです。この「重ならない」という性質があるため、ログインの鍵の片方として使えます。

場面 「ユーザー名」が指すもの 例 気をつけること
ふだんの言葉 アプリやゲームで使う呼び名全般 ゲームのプレイヤー名、ニックネーム IT の場面では「表示名」にあたることが多い
Web サービス・SNS ログインや @ の後ろに付く、重複できない名前 X の @taro_yamada、GitHub の taro-yamada 表示名とは別に決める
パソコン(Windows・Mac・Linux) OS にサインインするアカウントの名前 Linux の taro、Mac の「ユーザ名」 ホームフォルダーの名前にも使われる
会社のシステム 社員番号やメールアドレスの @ の前 yamada.t、ドメイン\yamada 管理者が決めることが多い
Wi-Fi やルーター 管理画面にログインするための名前 admin など機器ごとの初期値 初期値のまま使わない(機器の説明書に従って変える)
プログラミング ログイン処理や入力欄で扱う文字列 autocomplete="username" の入力欄 検証と、見た目が同じ名前の扱いが要る

半角英数字が求められることが多いのは、URL(例:サービス名.com/taro_yamada)・メールアドレス・フォルダー名など、日本語や記号をそのまま使いにくい場所にユーザー名がそのまま入るためです。全角の「taro」と半角の「taro」のように、見た目が似ているのに中身の違う文字が混ざると、本人も運営側も区別しにくくなる、という理由もあります(後の節で実測します)。

ユーザー名・ID・アカウント名・表示名・メールアドレスの違い

この節では、似た言葉5つがそれぞれ何を指すかと、名前を変えたときに変わるもの・変わらないものが分かります。

5つは「だれが見るか」「重複できるか」「変えられるか」で見分けます。ユーザー名はログインで使う重複できない名前、表示名は他の人に見せる名前、ID はシステムの中で使う番号、メールアドレスは連絡先を兼ねたログイン用の名前です。アカウント名は、サービスによってユーザー名を指したり表示名を指したりする言葉です。

呼び方 主な役割 重複 変更 例
ユーザー名 ログインで入力する。@ の後ろや URL に出ることもある できない できるサービスが多いが、回数や期間に制限がある場合も taro_yamada
表示名(名前・ニックネーム・フルネーム) 画面で他の人に見せる できることが多い いつでもできることが多い 山田 太郎、たろう
ID(ユーザーID・UID) システムの中で利用者を指す番号や記号 できない ふつうは変わらない Linux の UID 2290
アカウント名 ユーザー名と同じ意味のことが多い。表示名を指すサービスもある サービスによる サービスによる Mac の「ユーザ名」、Windows の表示名
メールアドレス 連絡先。ユーザー名の代わりにログインに使うサービスも多い できない サービスによる taro@example.com

「ID」という言葉は特に混ざりやすい言葉です。LINE の「ID」や会社の「ログインID」のように、ユーザー名そのものを ID と呼ぶ場面もあれば、Linux の UID のように番号だけを指す場面もあります。迷ったら「ログインの画面で入力するものか」「システムが勝手に付けた番号か」で見分けると、取り違えが減ります。

1ユーザー名

ログインで入力する名前。サービスの中で1人だけが使える。X では @ の後ろの部分。

2表示名

他の人の画面に出る名前。X では「名前」、Mac では「フルネーム」と呼ばれる。

3ID・番号

システムが使う番号。ユーザー名を変えても、ファイルの持ち主やフォロワーはこれでつながる。

4メールアドレス

連絡先を兼ねる。Google や Microsoft ではこれ自体がアカウントの名前になる。

X のヘルプでは、ユーザー名を変更しても既存のフォロワー・ダイレクトメッセージ・返信は引き継がれ、変わるのはポストの横に表示されるユーザー名だけ、と説明されています。また、表示名(名前)はユーザー名とは別のもので、いつでも変更できるとされています。同じヘルプには、以前のユーザー名はすぐに他の利用者が使える状態になる、という注意もあります。ユーザー名を変えるときは、この点を先に知っておくと安心です。

最初の5分:自分のユーザー名を確かめる

この節では、パソコンにいまサインインしているユーザー名を、ターミナルやコマンドプロンプトの1行で確かめる手順が分かります。

Linux・Mac・Windows のどれでも、whoami(「私はだれ?」の意味)と打つと、いまのユーザー名が表示されます。設定画面を探すより早く、表示名ではなくログイン用の名前が出るのが利点です。

1

ターミナルを開く

Linux はターミナル、Mac は「アプリケーション」→「ユーティリティ」→「ターミナル」、Windows はコマンドプロンプトか PowerShell を開く。

管理者として開く手順は要らない

2

whoami と打って Enter

Linux・Mac ではユーザー名だけ、Windows では「コンピューター名またはドメイン\ユーザー名」の形で表示される。

Windows の形式は Microsoft Learn の whoami の説明による

3

番号(ID)も見る

Linux・Mac では id で UID と所属グループ、Windows では whoami /user でセキュリティ識別子(SID)が見られる。

名前と番号が別物だと分かる

手元の検証用ユーザー(名前空間の中で作った t_yamada)で実行した結果は次のとおりです。whoami と id -un は名前、id -u は番号を返します。

$ whoami
t_yamada
$ id -un
t_yamada
$ id -u
2290
$ echo USER=$USER
USER=t_yamada

環境変数の $USER(Windows のコマンドプロンプトでは %USERNAME%)もユーザー名を持っていますが、ログインの仕方によっては空のことがあります。今回の作業用の端末でも、root のまま echo "USER=$USER" を実行すると USER= と空で表示されました。確実なのは whoami か id です。

Mac の画面で確かめるときは、Apple サポートの「macOS のユーザアカウントやホームフォルダの名前を変更する」によると、「ユーザとグループ」の詳細オプションにある「ユーザ名」欄がアカウント名で、ホームフォルダーの名前と一致させるものです。同じ画面の「フルネーム」は表示用の名前で、ユーザ名と一致させる必要がなく、スペースも含められます。Mac では「ユーザ名=ログイン用」「フルネーム=表示名」と覚えると混ざりません。

Linuxのユーザー名はUIDの「名札」

この節では、パソコンの中でユーザー名と番号(ID)がどう結び付いているかを、実際にユーザー名を変えた前後の表示で確かめられます。

Linux では、ファイルの持ち主やプロセスの持ち主は番号(UID)で記録されていて、ユーザー名は /etc/passwd で番号に付けた「名札」です。名札を付け替えても、番号が同じなら持ち物はそのまま残ります。これは Web サービスで「ユーザー名を変えてもフォロワーが残る」のと同じ考え方です。

名前空間の中で、ユーザー名 taro・UID 2290・表示名(GECOS 欄)「山田 太郎」のユーザーを作り、ファイルを1つ持たせてから、ユーザー名を t_yamada に変えました。

$ getent passwd taro
taro:x:2290:2290:山田 太郎:/home/taro:/bin/bash
$ id taro
uid=2290(taro) gid=2290(taro) groups=2290(taro)
$ ls -l /home/taro/memo.txt
-rw-r--r-- 1 taro taro 0 Oct 31 11:13 /home/taro/memo.txt
$ ls -n /home/taro/memo.txt
-rw-r--r-- 1 2290 2290 0 Oct 31 11:13 /home/taro/memo.txt
$ usermod -l t_yamada taro
$ ls -l /home/taro/memo.txt
-rw-r--r-- 1 t_yamada taro 0 Oct 31 11:13 /home/taro/memo.txt
$ getent passwd 2290
t_yamada:x:2290:2290:山田 太郎:/home/taro:/bin/bash
$ id taro
id: 'taro': no such user

読み取れることは3つあります。1つ目に、ls -n(名前ではなく番号で表示)では持ち主が 2290 と出ていて、これがディスクに記録されている本当の値です。2つ目に、ユーザー名を変えると ls -l の持ち主の表示だけが t_yamada に変わり、ファイル自体には何もしていません。3つ目に、ホームフォルダーは /home/taro のまま残り、グループ名も taro のままでした。名札だけを付け替えたので、関連する名前は自動ではそろいません。

ユーザー名(名札)

人が読むための名前。usermod -l で変えられる

ls -l・whoami・ログイン画面で使われる

変えると、ホームフォルダー名やグループ名とずれることがある

UID(番号)

システムが持ち主を記録する値

ls -n・id -u で見える

変えると、ファイルの持ち主との対応が崩れるため、ふつうは変えない

Mac の公式手順でも、ユーザ名を変えるときはホームフォルダーの名前とパスも合わせて変え、作業前にバックアップを取り、名前を変えるアカウントにはログインせず別の管理者アカウントで作業するよう案内されています。名札とフォルダー名がずれたままだと、ログインできなくなることがあるためです。ユーザーの追加と sudo の付け方の手順そのものは、関連記事「Linuxユーザー追加とsudo権限付与|useradd手順と確認コマンド一覧」で扱っています。この記事では、名前のルールに絞って見ていきます。

Linuxのユーザー名に使える文字(useraddとadduserで26通り試した結果)

この節では、Ubuntu の useradd と adduser がどんなユーザー名を受け付け、どんな名前を断るのかを、実際に入れた結果とマニュアルの記述で比べられます。

Ubuntu 24.04 の useradd は、思ったより多くの名前を通します。日本語・@・ピリオドも通り、断られたのは「数字だけ」「- や + や ~ で始まる」「空白・コロン・コンマを含む」「33文字以上」「すでにある名前」でした。一方、対話式の adduser は既定で英小文字始まり・英小文字と数字と - と _ だけに絞っています。

useradd のマニュアルの CAVEATS 節には、本来のルール(shadow のもとの規則)と、Debian・Ubuntu で緩めたルールが並んで書かれています。

Usernames may contain only lower and upper case letters, digits, underscores, or dashes.
They can end with a dollar sign. Dashes are not allowed at the beginning of the username.
Fully numeric usernames and usernames . or .. are also disallowed.

On Debian, the only constraints are that usernames must neither start with a dash ('-')
nor plus ('+') nor tilde ('~') nor contain a colon (':'), a comma (','), or a whitespace
(space: ' ', end of line: '\n', tabulation: '\t', etc.). Note that using a slash ('/') may
break the default algorithm for the definition of the user's home directory.

On Ubuntu, the same constraints as Debian are in place, with the additional constraint
that the username cannot be fully numeric. This includes octal and hexadecimal syntax.

この記述どおりかを確かめるため、useradd -M -l -N -g users(ホームを作らない・ログ記録をしない・同名グループを作らない)で26通りの名前を入れました。

unshare -m --propagation private ./try.sh

# try.sh の中身(抜粋)
mount --bind /dev/shm/t229/etc /etc
mount --bind /dev/shm/t229/varlog /var/log
for n in taro Taro 1taro 123 -taro 'taro yamada' 'taro@example.com' '山田' ...; do
  out=$(useradd -M -l -N -g users -s /usr/sbin/nologin -- "$n" 2>&1); rc=$?
  printf '%s\t%s\t%s\n' "$n" "$rc" "$out"
done
15通りuseradd が通した名前26通り中。日本語・@・. を含む
11通りuseradd が断った名前終了コード 3 が10件、9 が1件
32文字通った最長の名前33文字は invalid user name
入れた名前 useradd の結果 マニュアルとの対応
taro・taro_yamada・taro-yamada・_taro 通った(終了コード 0) もとの規則でも Debian の規則でも使える
Taro・1taro・taro$ 通った 大文字・数字始まり・末尾の $ は使える
taro.yamada・taro@example.com・山田 通った もとの規則では使えないが、Debian・Ubuntu では通る
taro/x・.・..・.taro 通った / はホームの決め方を壊すおそれ。. と .. はもとの規則では禁止
123・0x1f・0755 invalid user name(3) Ubuntu 独自の「数字だけは不可」。8進・16進の書き方も含む
-taro・+taro・~taro invalid user name(3) 先頭の - ・ + ・ ~ は不可
taro yamada・taro:x・taro,x invalid user name(3) 空白・コロン・コンマは不可
英小文字と数字で33文字 invalid user name(3) マニュアルに数字はないが、32文字は通り33文字で断られた
root user 'root' already exists(9) すでにある名前は使えない

断られたときの原文は次の形です。--badname を付けるとこの検査を飛ばせる、と案内されます。実際に --badname を付けると、Taro.Y のような名前も通りました。

useradd: invalid user name '123': use --badname to ignore
useradd: invalid user name 'taro yamada': use --badname to ignore
useradd: user 'root' already exists

同じ名前空間で、Ubuntu で人を追加するときによく使う adduser にも5通りを入れました。adduser は /etc/adduser.conf の NAME_REGEX(既定は ^[a-z][-a-z0-9_]*\$?$)で先に名前を絞ります。

入れた名前 adduser の結果 理由
hanako 通った(UID 1001) NAME_REGEX に合う
Hanako 断られた(終了コード 31) 大文字は NAME_REGEX に合わない
hanako.sato 断られた(31) ピリオドは NAME_REGEX に合わない
2hanako 断られた(31) 先頭は英小文字に限られる
山田花子 断られた(31) 別の検査(英数字・_ ・ . ・ @ ・ - だけ)に合わない
err: Please enter a username matching the regular expression
     configured via the NAME_REGEX configuration variable.  Use the
     `--allow-bad-names' option to relax this check or reconfigure
     NAME_REGEX in configuration.

err: To avoid problems, the username should consist only of
     letters, digits, underscores, periods, at signs and dashes, and
     not start with a dash (as defined by IEEE Std 1003.1-2001). For
     compatibility with Samba machine accounts, $ is also supported
     at the end of the username.  (Use the `--allow-all-names' option
     to bypass this restriction.)

useradd が通すからといって、日本語や @ や . を含むユーザー名を付けてよいわけではありません。シェルのスクリプト・バックアップの道具・ファイル共有など、他のプログラムがもとの規則(英数字と _ と -)を前提にしていることがあるためです。Linux のユーザー名は、adduser の既定に合う「英小文字で始まり、英小文字・数字・ - ・ _ だけ、32文字以内」にそろえるのが安全です。root で作業するときの注意は、関連記事「Linuxのsuとsudoの違い|su -・sudo -i・-sの比較表」で扱っています。

主なサービスのユーザー名のルール比較

この節では、X・GitHub・Gmail・Google Workspace・Windows・Mac で、ユーザー名に使える文字と長さがどう違うかが分かります。

使える記号はサービスごとにばらばらで、「_ は使えるが - は使えない」(X)、「- は使えるが _ は使えない」(GitHub)、「. だけ使える」(Gmail)のように逆になることもあります。複数のサービスで同じ名前を使いたいなら、英小文字と数字だけで作るのがいちばん通りやすい形です。

サービス・OS 長さ 使える文字 主な注意(公式の記述)
X(ユーザー名) 15文字まで 英数字と _ 記号・ダッシュ・スペースは不可。表示名は50文字まで
GitHub 39文字以下(外部認証の説明) 英数字と - 先頭・末尾の - と連続した - は不可(正規化の規則)
Gmail(@gmail.com) 6〜30文字 英字・数字・ピリオド & = _ ' - + , < > は不可。ピリオドは連続・先頭・末尾不可で、受信では無視される
Google Workspace(会社のメール) 64文字まで 英小文字・数字・ - ・ _ ・ ' ・ . 大文字は小文字に変換。ピリオドは文字として区別される
Windows(ローカルのユーザー アカウント名) 20文字まで 下の記号以外 ピリオドで終われない。コンマと " / [ ] : | < > + = ; ? * などは不可
Mac(ユーザ名) 公式ページに記載なし 公式ページに記載なし ホームフォルダー名と一致させる。新しいホームフォルダー名にスペースを入れない

表の出典と補足です。X は X ヘルプセンターの「ユーザー名に関するルール」で、XAdmin という文字を含むユーザー名は公式アカウント以外使えないこと、凍結・削除されたアカウントが使っていたユーザー名はすぐには使えないことも書かれています。GitHub は、GitHub Enterprise Server のドキュメント「外部認証のユーザー名に関する考慮事項」で、ユーザー名には英数字とダッシュだけを含められること、英数字以外はダッシュに置き換えられること(mona.the.octocat は mona-the-octocat になる)が説明されています。

Gmail は Gmail ヘルプの「Create a username」で6〜30文字・英字と数字とピリオドと案内され、「Gmail アドレスでのピリオドの扱い」には、johnsmith@gmail.com 宛てのメールは john.smith@gmail.com 宛てでも同じ受信トレイに届き、他の人がピリオド付きの形で新しくアカウントを作ることもできない、とあります。Google Workspace の「ユーザーとグループの名前に関するガイドライン」では、独自ドメインのメールではピリオドが文字として扱われ、username と user.name が別のアカウントになる点が逆です。abuse と postmaster は予約語でどちらも使えません。

Windows は Microsoft Learn の USER_INFO_0 構造体の説明で、ユーザー アカウント名は20文字まで、ピリオドで終われない、コンマや指定の記号と制御文字を含められない、とされています(一覧の一部の文字はページ上で表示が欠けているため、表には読み取れる記号だけを載せました)。Windows の設定画面に出る名前は、Microsoft サポートの「ユーザー アカウント名を変更する方法」にあるとおり Microsoft アカウントなどの名前が反映されたもので、変更が全体に反映されるまで最大24時間かかることがあり、Wingdings のような標準以外のフォントの文字を使うとサインインできなくなるおそれがあると案内されています。Instagram などここにないサービスは、ルールが変わることもあるため、登録画面と各社の公式ヘルプで確かめるのが確実です。

ユーザー名の入力欄はどう検証されるか(Chromiumで実測)

この節では、Web の登録フォームでユーザー名のルールがどこで確かめられているかと、ブラウザーの検証だけでは止まらない名前があることが分かります。

HTML の入力欄には、required(必須)・minlength/maxlength(長さ)・pattern(使える文字)でルールを書けます。ただし、ブラウザーの検証は「人が入力したとき」を前提にしていて、スクリプトで値を入れた場合や、ブラウザーを通さない送信は止められません。最終的な判定はサーバー側で行う必要があります。

次の登録フォームを 127.0.0.1 に置き、ルールを「半角英小文字・数字・ _ の3〜15文字、数字だけと予約語は不可」としました。

<label for="u">ユーザー名</label>
<input id="u" name="username" autocomplete="username"
       required minlength="3" maxlength="15" pattern="[a-z0-9_]+">
<p id="msg"></p>

<script>
const RESERVED = new Set(['admin', 'root', 'support', 'help', 'login', 'null']);
function checkUsername(raw) {
  const v = raw.normalize('NFKC');
  if (v !== raw) return {ok: false, why: '全角や互換文字が含まれる(NFKCで「' + v + '」になる)'};
  if (!/^[a-z0-9_]{3,15}$/.test(v)) return {ok: false, why: '半角英小文字・数字・_ の3〜15文字にする'};
  if (/^\d+$/.test(v)) return {ok: false, why: '数字だけは使えない'};
  if (RESERVED.has(v)) return {ok: false, why: '予約語のため使えない'};
  return {ok: true, why: ''};
}
document.getElementById('u').addEventListener('input', e => {
  const r = checkUsername(e.target.value);
  e.target.setCustomValidity(r.ok ? '' : r.why);
  document.getElementById('msg').textContent = r.why;
});
</script>

autocomplete="username" は、ブラウザーやパスワード管理の道具に「ここはユーザー名の欄」と伝える値です(MDN の autocomplete 属性の説明では「ユーザー名またはアカウント名」)。この欄を付けておくと、保存したログイン情報が正しい欄に入りやすくなります。

playwright から Chromium 153 を動かし、10通りの値を「HTML の属性だけ(値をスクリプトで代入)」と「JavaScript の検証あり(入力として送る)」の2通りで判定させました。

入れた値 HTML の属性だけ JavaScript の検証あり
taro_yamada 通る 通る
Taro 止まる(patternMismatch) 止まる(3〜15文字にする)
ta(2文字) 通る(tooShort にならない) 止まる(tooShort と独自の検証)
taro-yamada 止まる(patternMismatch) 止まる
taro(全角) 止まる(patternMismatch) 止まる(NFKC で「taro」になる、と表示)
tаro(а はキリル文字) 止まる(patternMismatch) 止まる
admin 通る 止まる(予約語)
12345 通る 止まる(数字だけ)
英小文字16文字 通る(16文字のまま tooLong にならない) 入力が15文字で切られて通る
空 止まる(valueMissing) 止まる(valueMissing)

キーボードからの入力として20文字を打ち込むと、maxlength によって15文字目までしか入りませんでした。2文字の ab を打ち込んだ場合は、tooShort が true になりました。つまり、minlength と maxlength は「人が入力したとき」には効き、スクリプトで代入した値には効きません。

typed abcdefghijklmno            ← 20文字打って15文字だけ入った
typed ab True                    ← 打ち込んだ2文字は tooShort になる
url after submit Taro: http://127.0.0.1:22900/index.html          ← 送信されない
REQ http://127.0.0.1:22900/index.html?username=taro_yamada        ← 送信される

ブラウザーは、ルールに合わない値では送信ボタンを押しても送信しませんでした。一方、同じ URL に curl で ?username=Taro を付けて送ると、検証のない http.server は 200 を返しました。ブラウザーを通さない送信はいつでもできるため、サーバー側でも同じルールで確かめ直すのが前提です。required や pattern の書き方は、関連記事「HTMLフォームバリデーション|required・pattern早見表と完成例」で扱っています。

なお、今回のヘッドレスの Chromium では、エラーの文言は Please match the requested format. や Please fill out this field. と英語で表示されました(起動時に --lang=ja を付けても同じでした)。ふだん使う日本語表示の Chrome では日本語の文言になります。ルールを利用者に伝えるには、ブラウザー任せにせず、setCustomValidity や欄の下の説明文で「半角英小文字・数字・ _ の3〜15文字」のように具体的に書くと親切です。

見た目が同じユーザー名(全角・大文字・キリル文字)の扱い

この節では、画面では同じに見えるのにコンピューターには別の文字列として扱われるユーザー名と、作る側がどうそろえるかが分かります。

「taro」「Taro」「taro」「tаro」は、人には同じに見えても、中のバイト列はすべて違います。そのまま登録を許すと、別人が見分けのつかない名前を取れてしまいます。多くのサービスが「半角英数字だけ」「大文字は小文字に変換」と決めているのは、この問題を避けるためです。

Python 3.13 で、Unicode の正規化(NFKC。全角の英数字や半角カタカナを標準の形にそろえる処理)と casefold(大文字・小文字をそろえる処理)をかけ、「taro」と同じとみなされるかを調べました。

import unicodedata as u
def key(s): return u.normalize('NFKC', s).casefold()
for n in ['taro', 'Taro', 'TARO', 'taro', 'tаro', 'タロウ']:
    print(repr(n), n.encode().hex(' '), repr(key(n)), key(n) == 'taro')
名前 UTF-8 のバイト列 そろえた後 taro と同じか
taro 74 61 72 6f taro 同じ
Taro・TARO 54 61 72 6f など taro 同じ(casefold で)
taro(全角) ef bd 94 ef bd 81 …(12バイト) taro 同じ(NFKC で)
tаro(а はキリル文字) 74 d0 b0 72 6f tаro のまま 別物(正規化では見抜けない)
タロウ(半角カタカナ) ef be 80 ef be 9b ef bd b3 タロウ 別物(全角カタカナになる)

キリル文字の а(CYRILLIC SMALL LETTER A)は、正規化をかけてもラテン文字の a(LATIN SMALL LETTER A)にはなりません。Chromium の開発者ツールで [...'tаro'].map(c => c.codePointAt(0).toString(16)) を実行すると ['74', '430', '72', '6f'] と、2文字目だけ番号が違うことが分かります。見分けのつかない名前を防ぐいちばん確実な方法は、使える文字を半角英数字と一部の記号に絞ることです。日本語の表示名を許す場合も、ログインに使うユーザー名とは分けて扱います。

重複の判定

避けたい入力された文字列をそのまま比べて「まだ使われていない」と判断する
→
代わりにNFKC と小文字化でそろえた値で重複を調べ、そろえた値を保存する

Taro と taro が別人として登録されるのを防ぐ

使える文字

避けたいユーザー名に日本語や記号を自由に許し、表示名と同じ欄で扱う
→
代わりにユーザー名は半角英数字と _ などに絞り、日本語は表示名の欄で受け付ける

キリル文字のような見分けのつかない文字を入口で止められる

検証の場所

避けたいブラウザーの pattern だけでルールを守らせる
→
代わりにブラウザーは案内のため、サーバーは同じルールで必ず確かめ直す

curl などブラウザーを通さない送信は pattern を通らない

正規表現で文字の種類を判定するときの注意は、関連記事「メールアドレスの正規表現|実用パターンとチェックの注意点」でも扱っています。ユーザー名の代わりにメールアドレスでログインさせる場合は、こちらの考え方が役に立ちます。

自分で確かめる:開発者ツールで入力欄のルールを1行で読む

この節では、登録画面を開いたまま、その入力欄にどんなルールが書かれているかを、ブラウザーの開発者ツールの1行で確かめる手順が分かります。

Chrome や Edge で登録画面を開き、F12(Mac は Command+Option+I)で開発者ツールを開いて「Console」に次の1行を貼ると、その画面の入力欄の名前・種類・ルールが一覧で出ます。何度も「使えない文字が含まれています」と言われるときに、何文字まで・どの文字が許されているかの手がかりになります。

[...document.querySelectorAll('input')].map(i => ({name: i.name, autocomplete: i.autocomplete, pattern: i.pattern, minLength: i.minLength, maxLength: i.maxLength, required: i.required}))

この記事の検証用フォームで実行した結果です。minLength・maxLength は指定がないと -1 になります。

[{name: 'username', autocomplete: 'username', pattern: '[a-z0-9_]+',
  minLength: 3, maxLength: 15, required: true}]

続けて、思い付いた名前がその pattern に合うかを、同じ Console で確かめられます。pattern 属性は値全体に一致する必要があるため、^ と $ で囲んで試します。

/^[a-z0-9_]{3,15}$/.test('taro_yamada')   // true
/^[a-z0-9_]{3,15}$/.test('Taro')          // false

ただし、多くのサービスはサーバー側にもルールを持っていて、HTML に書かれていないルール(予約語や、すでに使われている名前)もあります。ここで分かるのは「画面に書かれているルール」だけで、最終的な判定は登録画面の案内と公式ヘルプに従います。自分の画面の中で確かめるだけの手順で、他の人の情報は読み取りません。

ユーザー名の例と決め方のコツ(個人情報を入れない)

この節では、ユーザー名の具体的な例と、後から困らないための決め方が分かります。

ユーザー名は、半角英小文字と数字を中心に、覚えやすく、個人を特定しにくく、パスワードとはまったく違うものにします。ユーザー名は多くの場合、他の人にも見える情報です。誕生日・電話番号・住所・本名のフルスペルを入れると、本人確認の質問の答えやパスワードの推測の手がかりを自分から公開することになります。

例 評価 理由
taro_yamada 使いやすい 読みやすい。ただし本名なので、仕事用など公開してよい場面向き
t_yamada・tyamada 使いやすい 短く、多くのサービスの文字の制限に収まる
blue_kettle42 使いやすい 本名と結び付かない。趣味のサービス向き
taro19900514 避けたい 生年月日が分かる。本人確認やパスワードの推測に使われるおそれ
yamada09012345678 避けたい 電話番号を公開してしまう
taro-yamada.dev サービスによる X では - と . が、Gmail では - が使えない
admin・support 使えないことが多い 予約語として断られる。運営と誤解される名前も避ける
  • 1半角英小文字と数字を中心にするX・GitHub・Gmail のどれでも通りやすい。記号は _ か - の片方だけにする
  • 215文字以内に収めるX の上限が15文字。短いほど口頭でも伝えやすい
  • 3誕生日・電話番号・住所・本名のフルスペルを入れないユーザー名は他の人に見えることが多い
  • 4パスワードと似せないユーザー名の一部をパスワードに使うと推測されやすい
  • 5仕事用と趣味用を分けるか先に決める同じ名前を使い回すと、別のサービスの投稿同士が結び付けられる
  • 6決めた名前と登録先をパスワード管理の道具に控える忘れたときに探す手間が減る

同じユーザー名を複数のサービスでそろえるかは、仕事で名前を知ってもらいたいならそろえる、私生活と分けたいなら変える、というように目的で決めるのがおすすめです。パスワードの決め方そのものは、関連記事「パスワードの新常識8選|定期変更不要・bcrypt・ソルト」で扱っています。

ユーザー名を忘れたときの探し方

この節では、自分のユーザー名を忘れたときに、どこから順に探せばよいかが分かります。

まず手元の記録(パスワード管理の道具・ブラウザーに保存したログイン情報・登録時のメール)を探し、見つからなければ、登録したメールアドレスか電話番号を使って各サービスの公式の復元手順を使います。復元は本人確認のための仕組みなので、自分のアカウントにしか使えません。

  1. 1パスワード管理の道具とブラウザーを見るブラウザーに保存したパスワードの一覧に、サイトごとのユーザー名が残っていることがある
  2. 2登録時のメールを探すメールソフトでサービス名や「登録」「ようこそ」で検索する。本文にユーザー名が書かれていることが多い
  3. 3メールアドレスでログインを試す多くのサービスはユーザー名の欄にメールアドレスや電話番号も入れられる
  4. 4公式の復元手順を使うログイン画面の「ユーザー名を忘れた場合」などのリンクから進む
  5. 5パソコンなら whoami で確かめるログインできている端末があれば、その場で表示できる

主なサービスの公式の案内は次のとおりです。Google アカウントは、Google アカウント ヘルプ「存在するアカウントについて確認する」にある「ユーザー名を復元する」から、登録時の情報(予備のメールアドレスや電話番号)を入れて探し、見つかった場合は本人確認の質問に答えます。Microsoft アカウントは、Microsoft サポートの「Microsoft アカウントにサインインできない」から、ユーザー名の調べ方(Username lookup)の案内に進みます。Mac のユーザ名は、「ユーザとグループ」の詳細オプションに表示されます。

Windows のパソコンでは、サインイン画面に出ている名前が表示名で、ログイン用の名前とは違う場合があります。コマンドプロンプトで whoami を実行すると、Microsoft Learn の説明どおり「ドメイン\ユーザー名」の形でいまのユーザー名が分かります。会社のパソコンやシステムのユーザー名は、自分で探すよりも、社内の管理者に問い合わせるのが早く確実です。

よくあるエラーとつまずき(原文つき)

この節では、ユーザー名を決めるときや入力するときに出るメッセージと、その意味・直し方が分かります。

出たメッセージ・様子 場面 意味と直し方
useradd: invalid user name '123': use --badname to ignore Ubuntu の useradd に数字だけの名前 Ubuntu では数字だけ(8進・16進の書き方も含む)は不可。英字を入れる
useradd: invalid user name 'taro yamada' 空白を含む名前 空白・コロン・コンマは不可。taro_yamada のように _ でつなぐ
useradd: user 'root' already exists すでにある名前(終了コード 9) 別の名前にする。getent passwd 名前 で事前に確かめられる
err: Please enter a username matching the regular expression configured via the NAME_REGEX ... adduser に大文字や . を含む名前 英小文字で始め、英小文字・数字・ - ・ _ だけにする
Please match the requested format. Web の入力欄(pattern に合わない) 使える文字を画面の案内か開発者ツールの1行で確かめ、全角を半角に直す
Please fill out this field. Web の入力欄(required で空) 欄が空。前後の空白だけになっていないかも見る
id: 'taro': no such user 名前を変えた後に前の名前で調べた 新しい名前で調べるか、getent passwd 2290 のように番号で調べる
「そのユーザー名はすでに使用されています」 Gmail で、ピリオドだけ違うアドレスを作ろうとした Gmail はピリオドを無視するため同じ名前とみなされる(Gmail ヘルプの説明)
ユーザー名もパスワードも合っているのにログインできない Web サービス全般 表示名やメールアドレスと取り違えていないか、全角や大文字が混ざっていないかを見る

いちばん多いのは、表示名(ニックネーム)をユーザー名の欄に入れてしまうつまずきです。X のプロフィールでは、太字の大きな文字が表示名、その下の @ で始まる文字がユーザー名です。ログインに使うのは @ の後ろの部分(@ は入れない)か、登録したメールアドレス・電話番号です。もう1つ多いのが、日本語入力がオンのまま打って全角の英数字が入るケースで、見た目では気付きにくいため、入力し直すときは日本語入力をオフにします。

判断表:どの名前をどこに使うか

この節では、ログイン・プロフィール・作る側の設計で、ユーザー名・表示名・ID・メールアドレスのどれを使うかの目安が分かります。

「人が入力する・人が呼ぶ」ならユーザー名、「人に見せる」なら表示名、「システムが結び付ける」なら ID、「連絡する・本人確認する」ならメールアドレスです。作る側は、変わる可能性のある名前を、データを結び付ける鍵にしないことが大切です。

場面 使う名前 理由
ログイン画面で入力する ユーザー名かメールアドレス 重複しないため本人を1人に絞れる
SNS で自分を紹介する・メンションしてもらう ユーザー名(@ の後ろ) 同じ表示名の別人と区別できる
投稿やチャットで名前を見せる 表示名 日本語や本名・屋号を使え、いつでも変えられる
作る側:データベースで投稿や注文と結び付ける ID(番号・UUID) ユーザー名を変えても結び付きが崩れない
作る側:重複を調べる 正規化(NFKC・小文字化)した後のユーザー名 Taro と taro、全角と半角を同じとみなせる
パスワードを忘れたときの連絡 メールアドレス・電話番号 本人に届く連絡先で本人確認ができる
Linux のユーザーを作る adduser の既定に合うユーザー名 他のプログラムがもとの規則を前提にしても困らない

よくある質問

この節では、ユーザー名についてよく検索される疑問への答えが分かります。

Q. ユーザー名とアカウント名は同じですか?

A. 同じ意味で使われることが多いです。ただし、Windows の設定画面では表示される名前を「ユーザー アカウント名」と呼ぶなど、表示名側を指す場面もあります。ログインの画面で入力するものかどうかで見分けると確実です。

Q. ユーザー名とIDの違いは何ですか?

A. ユーザー名は人が読んで入力する名前、ID はシステムが利用者を指すための番号や記号です。Linux では UID という番号があり、ユーザー名を変えても番号は変わりません(この記事の実測)。ただし、ログインID のようにユーザー名そのものを ID と呼ぶサービスもあります。

Q. ユーザー名にメールアドレスを使ってもよいですか?

A. メールアドレスでログインする仕組みのサービスなら、それが正しい使い方です。一方、ユーザー名が他の人に公開されるサービスで、メールアドレスと同じ文字列をユーザー名にすると、アドレスを推測されやすくなります。公開されるユーザー名には、アドレスの @ の前と違う名前を選ぶと安心です。

Q. ユーザー名に日本語は使えますか?

A. X・GitHub・Gmail のユーザー名では使えません(各公式の説明で英数字と一部の記号に限られています)。Ubuntu の useradd は日本語の名前も通しましたが、adduser は断り、他のプログラムとの相性も悪いため避けます。日本語は表示名で使います。

Q. 大文字と小文字は区別されますか?

A. サービスによります。Google Workspace のユーザー名は大文字で入力しても小文字に変換されます。Linux の useradd は Taro と taro を別のユーザーとして作れます。迷ったら小文字だけで作るのが安全です。

Q. ユーザー名は変更できますか?

A. X のように設定からいつでも変えられるサービスもあれば、変えられない・回数に制限があるサービスもあります。X では変更してもフォロワーやメッセージは引き継がれ、前のユーザー名はすぐに他の人が使える状態になります。パソコンのユーザー名は、ホームフォルダー名とずれないよう公式の手順に沿って変えます。

Q. ユーザー名を他の人に知られても問題ありませんか?

A. 多くのサービスでユーザー名は公開される前提の情報で、それだけでログインされることはありません。ただし、ログインの鍵の片方ではあるので、パスワードを強くし、二段階認証を有効にしておきます。ユーザー名から推測できる文字列をパスワードに使わないことも大切です。

Q. 「そのユーザー名は使用できません」と出るのはなぜですか?

A. 主な原因は、すでに他の人が使っている、使えない文字や長さを含む、予約語(admin・support など)にあたる、の3つです。全角の英数字が混ざっていないかも見ます。開発者ツールの1行で入力欄の pattern と最大文字数を確かめると、文字の問題かどうかを切り分けられます。

Q. Wi-Fi やルーターのユーザー名とは何ですか?

A. ルーターなどの管理画面にログインするための名前です。機器ごとの初期値が説明書や本体のラベルに書かれていることが多く、初期値のまま使い続けず、説明書の手順に従って変えるのが安全です。Wi-Fi に接続するときの「ネットワーク名(SSID)」とは別のものです。

Q. 作る側は、ユーザー名をデータの鍵にしてよいですか?

A. 避けるのが基本です。ユーザー名は変更されることがあるため、投稿や注文は変わらない ID と結び付け、ユーザー名は正規化した値で重複を調べて保存します。この記事の Linux の例でも、名前を変えたあと持ち物をつないでいたのは UID でした。

まとめ

この節では、この記事の要点を5つに絞って振り返ります。

  • ユーザー名は、ログインで入力する重複できない名前。表示名は他の人に見せる名前、ID はシステムが使う番号で、アカウント名はサービスによって指すものが違う。
  • 自分のユーザー名は whoami で確かめられる。Linux・Mac・Windows のどれでも1行で表示でき、id や whoami /user で番号も見られる。
  • 使える文字はサービスごとにばらばら。X は英数字と _ で15文字まで、GitHub は英数字と -、Gmail は英字・数字・ピリオドの6〜30文字。そろえるなら英小文字と数字だけにする。
  • Ubuntu の useradd は日本語や @ まで通すが、adduser は絞る。26通りの実測で、断られたのは数字だけ・先頭の - + ~・空白やコロン・33文字以上・既存の名前だった。
  • 入力欄の検証はブラウザーとサーバーの両方で行う。pattern はスクリプトや curl の送信を止められず、キリル文字のような見分けのつかない文字は使える文字を絞って防ぐ。

参考・出典

この節では、この記事で確かめた公式の情報源が分かります(いずれも確認日 2026年10月29日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「ユーザー名とは|ID・アカウント名・表示名の違いと使える文字を実測」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?