このツールとは?
UUID(Universally Unique Identifier)とは、550e8400-e29b-41d4-a716-446655440000 のように、36文字で表記される128ビットの識別子です。 バージョン4のUUIDはランダムなデータから生成されるため、衝突が起こる可能性は極めて低く、実際には無視できるほどです。重複が発生する可能性が高くなるまで、1秒あたり10億個のUUIDを数十年にわたって生成し続けることができます。
UUIDは、データベースの主キー、トレース用のリクエストID、ファイル名、APIキーなど、中央管理機関との調整を必要とせずに識別子が必要なあらゆる場面で使用されます。
なぜこれを使うのか?
- 暗号的に安全:脆弱な Math.random() ではなく、crypto.randomUUID() を使用しています。
- 一括生成 — 一度に最大500個のUUIDを生成。1行につき1つずつ、コピーして貼り付けるだけで利用可能です。
- 特定の書式要件があるシステム向けの、大文字表記およびハイフンなしのオプション。
- ブラウザ上でオフラインで動作します。UUIDが外部に送信されることは一切ありません。
- 無料で即座に利用可能、ログイン不要。
使い方
- 必要なUUIDの数(1~500)を選択してください。
- 必要に応じて、「大文字にする」または「ハイフンを削除する」にチェックを入れてください。
- 「UUIDを生成」をクリックしてください。
- リスト全体をコピーするには、「すべてコピー」をクリックしてください。
例
入力
Count: 3出力
f47ac10b-58cc-4372-a567-0e02b2c3d479
9c858901-8a57-4791-81fe-4c455b099bc9
16fd2706-8baf-433b-82eb-8c7fada847da各UUIDは、安全な乱数データに基づいて個別に生成されます。
一般的な利用例
- データベースの主キー:UUID を使用すると、挿入前に有効な ID を生成できます。これは、オフラインファーストのアプリや、サーバーがレコードを承認する前にクライアントがそのレコードを参照する必要がある場合に役立ちます。
- 分散システム:複数のサーバーが、相互の調整を必要とせず、IDの衝突リスクもなく、独立してIDを生成できる。これは、単一の「真実の源」を必要とする自動インクリメント整数とは対照的である。
- 冪等性キー:APIリクエストを再試行する際に同じUUIDを送信することで、サーバーは重複した送信を認識し、安全に無視することができます。
- テスト用フィクスチャとシードデータ:テスト用データベースへのデータ投入やAPIレスポンスの模擬生成のために、数百個の一意なIDを一度に一括生成します。
- React/Vue のリストキー:リスト項目にまだ固有のIDが割り当てられていない場合、生成された UUID を開発中の安定したキーとして使用できます。
知っておくべき制限事項
UUIDは作成日時順にソートすることができません。v4のランダム性により、新しいIDはデータベースのインデックス内で互いに近接してソートされないため、大規模な環境では挿入パフォーマンスが低下する可能性があります(これが、タイムスタンプ順にソートされるUUID v7が代替手段として存在する理由です)。 時間順と一意性を両立させる必要がある場合は、v4よりもv7やSnowflakeスタイルのIDの方が適しています。
UUIDだけではセキュリティ認証情報とはなりません。あるUUIDから別のUUIDを予測できないという意味では推測不可能ですが、実際の認証トークンに必要な監査機能、有効期限、失効機能などは当初から設計されていません。それらが必要な場合は、専用のセッション/APIトークンライブラリを使用してください。
ランダム性は実際にはどのように機能するのか
v4 UUID は、122 ビットが真にランダムな値で構成されています(残りの 6 ビットは、RFC 4122 仕様に従い、バージョンとバリアントを示すために固定されています)。 このツールは、ブラウザのWeb Crypto APIを介してcrypto.getRandomValues()からそのランダム性を得ています。これは、TLS鍵やその他の暗号処理にも使用されるのと同じ基盤となるソースであり、はるかに脆弱なMath.random()ではありません。Math.random()は予測可能であるため、これに基づいて構築された一部の古いUUIDライブラリは、推測可能なIDを生成するとして批判されてきました。
衝突の確率を具体的に言えば、122ビットのランダムなビット数の場合、たった1回の衝突が発生する確率が50%になるには、約2.71京個のUUIDを生成する必要がある。これは、いかなる単一のアプリケーションが生成しうる数よりも、数桁も大きい数である。 このため、UUID v4は、数学的には衝突の可能性がゼロではないものの、実際には事実上衝突がないものとみなされています。
よくある質問
生成された2つのUUIDが衝突することはありますか?
理論的には「はい」ですが、実際には「いいえ」です。v4 UUIDは122ビットのランダムなビットで構成されています。数兆個生成した後でも、衝突の確率はごくわずかであり、これらを一意なものとして扱っても問題ありません。
UUIDの各バージョンの違いは何ですか?
v1はタイムスタンプとMACアドレスに基づいており(情報が漏洩する)、v4は完全にランダム(最も一般的な選択肢)、v5はハッシュ処理によって名前から導出され(決定論的)、v7は時間順のランダム(データベースのインデックスに適している)。このツールはv4を生成する。
これらのUUIDは、トークンとして十分なセキュリティを備えているでしょうか?
これらは暗号学的に安全な乱数生成源を使用しており、Math.random() よりもはるかに優れています。セッショントークンについては、エントロピーの高い専用のトークン生成器が依然として推奨されますが、識別子としては v4 UUID でも問題ありません。
UUIDはGUIDと同じものですか?
はい。GUID(Globally Unique Identifier)は、この128ビット形式を指すマイクロソフトの呼称です。これらの用語は同義です。
生成されたUUIDは保存または記録されますか?
いいえ。生成処理はブラウザ内でローカルに行われます。何も送信、保存、記録されることはありません。表示されるすべてのUUIDは、画面上にのみ存在します。