UUIDジェネレーター
ランダムなバージョン4のUUID(GUIDとも呼ばれます)を、1つずつでも、最大100個まとめてでも生成できます。ブラウザの暗号学的に安全な乱数生成器を使い、コピーする前に大文字にしたり、ハイフンを取り除いたりできます。無料で、登録は不要です。サーバーには何も送信されません。
UUIDジェネレーターの使い方
- 1. 個数を選びます。 1〜100の任意の整数です。初期値は5です。
- 2. 生成を押します。 押すたびに新しいリストが表示されます。ボタンを押すまでは何も生成されません。
- 3. 形式を選びます。 「大文字」と「ハイフンなし」は、すでにあるリストの表記を変えるだけです。新しい値は生成しません。
- 4. コピーします。 各行には個別のコピーボタンがあり、「すべてコピー」を押すと、リスト全体を1行に1つのUUIDとしてコピーできます。
バージョン4のUUIDの構造
UUIDは128ビットの識別子で、16進数の32桁を、ハイフンで区切った5つのグループ(8-4-4-4-12)として書きます。全体で36文字になります。この形式はRFC 9562(2024年)で定義されており、これはRFC 4122に代わるものです。バージョン4はほぼすべてのビットにランダムなデータを使います。固定されているのは6ビットだけです:
| 部分 | 位置 | 値 |
|---|---|---|
| バージョン | 3番目のグループの先頭の数字 | 常に 4 |
| バリアント | 4番目のグループの先頭の数字 | 8、9、a、bのいずれか |
| ランダムなビット | それ以外すべて | 122ビット |
ツールのランダム性が生成した例:e1f22e6e-ea3f-42a7-b43d-164b51542675。3番目のグループは4で始まり、4番目のグループはbで始まっており、これはすべてのv4のUUIDに必要な形です。あなたの値は違うものになります。それこそがポイントです。
2つのUUIDが衝突することはあるのか?
122個のランダムなビットがあるため、取り得る値は2122通り、約5.3 × 1036通りです。誕生日の問題による見積もりでは、どれか2つが一致する確率が50%に達するには、約2.7 × 1018個のUUIDが必要です。1秒間に10億個を生成し続けると、約86年かかります。乱数源が確かなものであれば、データベースのキー、リクエストID、ファイル名などの一般的な用途では、衝突は実際上の問題になりません。このツールはブラウザの暗号学的な生成器(crypto.randomUUID、フォールバックとしてcrypto.getRandomValues)を使い、Math.randomは使いません。
どのUUIDバージョンが必要か?
| バージョン | 作られ方 | 一般的な用途 |
|---|---|---|
| 1 | 時刻(グレゴリオ暦)とノード識別子 | レガシーシステム。いつどこで作られたかが露呈することがあります |
| 3と5 | 名前空間と名前のハッシュ(MD5またはSHA-1) | 名前から導かれる安定したID |
| 4 | ランダムなビット | 汎用の一意なID。このツールが作るもの |
| 7 | Unixのミリ秒タイムスタンプ、その後にランダムなビット | 作成時刻順に並ぶデータベースのキー |
RFC 9562は、v4のランダム性はデータベースのインデックスで局所性が低いと指摘し、時刻に基づくIDにはバージョン1と6より、バージョン7を推奨しています。テーブルが大きく、挿入が頻繁な場合は、時刻順のv7のほうが適しているかもしれません。このページが生成するのはv4だけです。RFCはまた、可能な場合はUUIDをデータベースに16バイトのバイナリとして保存すべきだとしています。テキストだと36文字必要になるためです。
形式:ハイフン、大文字・小文字、GUID
RFC 9562では、16進数の文字は大文字、小文字、混在のいずれでも使えます。大文字と小文字のどちらで書いても、同じUUIDは同じ識別子です。標準的な表記にはハイフンがあります。ハイフンのない32桁の形式は、多くのデータベースやAPIが受け付ける一般的な表記ですが、使う前に相手側の仕様を確認してください。GUIDはMicrosoftが同じ128ビットの識別子につけた名称です。このページで作ったv4のUUIDは、GUIDが求められる場面ならどこでもそのまま使えます。
よくある質問
- UUID v4とは何ですか?
- 128ビットの汎用一意識別子で、そのうち122ビットがランダムで、6ビットがバージョン(4)とバリアントを示します。たとえば 550e8400-e29b-41d4-a716-446655440000 のように書かれます。
- 生成した2つのUUIDが衝突することはありますか?
- 理論上はあり得ますが、実際にはまず起きません。取り得る値は約5.3 × 1036通りあり、どれかが衝突する確率が50%になるには約2.7 × 1018個が必要です。1秒間に10億個作るとして、約86年です。
- 乱数は暗号学的に安全ですか?
- はい。このツールはブラウザの crypto.randomUUID を呼び出します。それがない場合は crypto.getRandomValues を使います。どちらも Math.random ではなく、暗号学的に安全な乱数生成器を使います。
- UUIDはサーバーで生成されますか?
- いいえ。ブラウザ内で作られ、どこにも送信されず、保存もされません。もう一度生成すると、まったく新しいリストになります。
- UUIDとGUIDは同じものですか?
- はい。GUIDはMicrosoftが同じ128ビットの識別子につけた用語です。バージョン4のUUIDは、変更せずにGUIDとして使えます。Windowsのツールでは、GUIDが大文字で表示されたり、波括弧で囲まれたりすることがあります。
- 「大文字」と「ハイフンなし」は何をしますか?
- 書き方だけを変えます。大文字にすると16進数の文字が大文字になります。RFC 9562はこれを同じUUIDとして扱います。ハイフンなしにすると、32文字の形式になります。受け取り側がその形式を想定している場合にだけ使ってください。
- UUIDを秘密の値やパスワードとして使えますか?
- いいえ。UUIDは一意であることを目的としたもので、秘密にするためのものではありません。RFC 9562も、UUIDが推測しにくいと想定すべきではなく、セキュリティ上の資格情報として使ってはならないとしています。秘密の値にはパスワードジェネレーターを使ってください。