🆔 UUID生成ツール(v4 / v7)
完全ランダムなUUID v4と、時系列でソートできるUUID v7を生成します。最大1000個までまとめて生成でき、大文字・ハイフンなし・中括弧つきなどの形式にも変換可能。暗号学的に安全な乱数を使用し、生成はすべてブラウザ内で完結します。
🔒 crypto.getRandomValues による安全な乱数を使用。生成結果はサーバーに送信されません。
📑 このページの内容
🔎 UUIDとは・構造の読み方
UUID(Universally Unique Identifier)は、中央の管理者なしに、世界中で重複しないIDを作るための仕組みです。128ビットの値を16進数で表し、8-4-4-4-12の形で区切って表記します。
01900e8b-5f4a-7c2d-af31-9b4c8d2e6f70
- 赤の位置=バージョン番号。4ならv4、7ならv7です。生成されたUUIDを見ればどの方式か判別できます。
- 青の位置=バリアント。RFC準拠のUUIDでは 8・9・a・b のいずれかになります。
- 残りの部分が、ランダム値やタイムスタンプなどの実データです。
そのため、上の生成結果を見て「3文字目のブロックの先頭が7になっているか」を確認すれば、正しくv7が生成されているかを目視でも検証できます。
⚖️ v4とv7、どちらを使うべきか
| v4(ランダム) | v7(時系列) | |
|---|---|---|
| 構造 | 122ビットすべてランダム | 先頭48ビットがミリ秒時刻+残りランダム |
| ソート | 順序に意味なし | 文字列順=生成順 |
| 生成時刻 | 推測できない | UUIDから分かる |
| DBの主キー | △ インデックスが断片化しやすい | ✅ 挿入性能が良い |
| 外部公開 | ✅ 情報が漏れない | △ 作成時刻が推測される |
使い分けの目安:データベースの主キーやログのIDなど、大量に発行して順序が役立つものはv7。URLに載せる公開IDや、作成時刻を知られたくないトークン的な用途はv4が無難です。
💡 v7はRFC 9562(2024年発行)で正式に標準化された比較的新しい方式です。利用するライブラリやDBが対応しているかを確認してください。
🗄 データベースの主キーに使うときの注意
- ランダムなIDは挿入性能を下げます。B-Treeインデックスは値の順に並ぶため、v4のようにバラバラな値を挿入するとページ分割が頻発します。大量挿入があるテーブルではv7かULIDを検討してください。
- 文字列型ではなくバイナリ型で保存すると省容量です。36文字の文字列(36バイト)より、16バイトのバイナリ(MySQLなら
BINARY(16))のほうが容量もインデックスも小さくなります。 - 連番IDの代わりに使うと件数が推測されなくなります。URLに
/users/123と出す設計は登録者数が推測できてしまいますが、UUIDなら防げます(v7の場合は作成時刻が分かる点に注意)。 - 人が読み上げる場面には向きません。電話サポートで伝えるIDなどには、短くて誤読しにくい独自コードを別に用意しましょう。
❓ よくある質問
- Q. UUIDは重複しませんか?
- 理論上ゼロではありませんが、実用上は無視できます。v4は122ビットのランダム性があり、10億個生成しても重複確率は極めて小さい値です。本ツールは暗号学的に安全な
crypto.getRandomValuesを使用しています。 - Q. GUIDとUUIDは違いますか?
- 実質同じものです。GUIDはMicrosoftでの呼称で、中括弧つきで表記されることが多いという違いがあります。上の「形式」で中括弧つきに変換できます。
- Q. 何個まで生成できますか?
- 一度に1000個までです。それ以上必要な場合は、生成を繰り返すか、サーバーサイドのライブラリをご利用ください。
- Q. 生成したUUIDは記録されますか?
- されません。ブラウザ内で生成され、サーバーには一切送信されないため、あなたが生成した値を他者が知ることはできません。
- Q. v1(MACアドレス+時刻)は生成できますか?
- 対応していません。v1はネットワークカードのMACアドレスを含むため端末が特定される可能性があり、現在は推奨されないためです。時系列が必要ならv7をお使いください。