UUID 生成ツール(v4・v7・ULID・NanoID)
UUID v4・v7、ULID、NanoID をまとめて生成し、任意の UUID を解析します。 処理はすべて端末内で完結し、アップロードは一切ありません。
- 入力
- Count · format
- 出力
- UUID v4 · UUID v7 · ULID · NanoID
解析
- 有効
- はい
- 種類
- UUID v7
- バージョン
- 7:Unix 時刻順
- バリアント
- RFC 9562(標準)
- 正規形
- 0192be1c-a07b-7014-95a7-6e2daca81c16
- 作成日時
- 2024-10-24T10:40:00.123Z
UUID キー付きのテストデータを行ごと用意したいですか? モックデータ生成ツールを開く
あらゆる種類の ID に対応する UUID ジェネレーター
この UUID 生成ツールは、ランダムな UUID v4、時系列順の UUID v7、ULID、NanoID を、1 個から 1 万個まで一度に、コードやデータベースが求めるとおりの形式で作成します。既存の ID を解析欄に貼り付ければ、有効かどうかを確認し、バージョン、バリアント、作成された日時を読み取れます。すべての ID はブラウザの暗号論的乱数生成器から作られ、サーバーに何かを要求したり送信したりすることはありません。
UUID を生成する方法
- 種類を選びます。単純なランダム ID なら UUID v4、作成順に並べたいなら UUID v7 または ULID、URL 用の短い ID なら NanoID です。
- 必要な個数を、入力欄またはクイックボタンで最大 10,000 まで指定します。
- 形式を選びます。小文字か大文字か、ハイフンの有無、GUID 風に
{波かっこ}で囲むか、SQL のIN (…)リストや JSON 配列に貼り付けられるよう引用符とカンマを付けるかです。 - リスト全体をコピーするか、.txt、.csv、.json としてダウンロードします。再生成を押すと新しい一式が作られます。
- 手元の ID を確認するには、リストの下の解析欄に貼り付けます。
UUID v4 と UUID v7、どちらを使うべきか
UUID は 128 ビットの識別子で、3f2c8a1e-5b7d-4e9f-a0c1-2d3e4f5a6b7c のように 32 桁の 16 進数を 5 つのグループに分けて書きます。そのうち 6 ビットは固定で、4 ビットがバージョン(3 番目のグループの最初の桁)、2 ビットがバリアント(標準の UUID では 4 番目のグループの最初の桁が 8、9、a、b のいずれか)を表します。
バージョン 4 は残りの 122 ビットをランダムなデータで埋めます。ほぼどこでも標準として使われ、いつどこで作られたかを何も明かさず、2 つが衝突する確率は無視できるほどです。重複が 1 つ生じる確率が五分五分になるまでには、毎秒約 10 億個を 85 年間生成し続ける必要があります。
2024 年に RFC 9562 で標準化されたバージョン 7 は、ミリ秒単位の 48 ビットの Unix タイムスタンプを先頭に置き、残りをランダムなビットで埋めます。そのため新しい v7 の ID は作成順に並び、データベースの B-tree インデックスをコンパクトに保てます。挿入がランダムなページではなくインデックスの末尾に入るためで、Postgres、MySQL、SQL Server のユーザーが主キーを v4 から v7 に切り替えている主な理由です。その代わり、ID を持つ人は誰でも作成日時を読み取れます。このジェネレーターは、RFC に記述された 12 ビットのカウンターを使い、同じミリ秒内でも v7 の ID が厳密に増加するようにしています。
ULID と NanoID
より短く大文字・小文字を区別しない文字列で時刻順に並べたいなら ULID を、短縮リンクや招待コードのように長さが重要で時刻順は不要な公開用の ID には NanoID を使ってください。
- ULID
- 01JAZ1S83VV6F35M4HSN97TA7X のような Crockford base32 の 26 文字で、48 ビットのミリ秒タイムスタンプの後に 80 ビットのランダムなビットが続きます。文字列として時刻順に並び、紛らわしい I、L、O、U を使わず、UUID と同じ 128 ビットに収まるので uuid 型の列に保存できます。単調増加モードでは、同じミリ秒内に作られた ID のランダム部分を 1 ずつ増やします。
- NanoID
- コンパクトなランダム文字列で、既定では A–Z、a–z、0–9、_、- からなる 21 文字、ランダム性は約 126 ビットです。UUID v4 と同等の衝突耐性をより少ない文字数で実現し、URL やファイル名でもエンコードなしで安全に使えます。
- カスタムの文字セット
- NanoID では、数字のみ、小文字のみ、英数字、紛らわしい文字を除いたセット、または自分で入力した任意の文字セットを使えます。ツールが結果のランダム性のビット数を表示するので、安全な長さを選べます。
GUID、波かっこ、その他の形式
GUID は UUID と同じものを指す Microsoft の呼び名です。.NET、Windows のレジストリ、COM では、{3F2C8A1E-5B7D-4E9F-A0C1-2D3E4F5A6B7C} のように波かっこで囲んだ大文字で表示されることが多く、波かっこのオプションはこの形を出力します。ハイフンなしの 32 桁を求めるシステムもあれば、binary(16) の列に保存するシステムもあります。これらはすべて同じ 128 ビットです。
引用符付きの形式ではカンマも自動で付くので、1,000 個の ID をそのまま WHERE id IN (…) や JSON 配列に入れられます。ID だけでなくリアルな行データが必要なら、モックデータ生成ツールで UUID の列を含むテーブル全体を作れます。
既存の UUID を読み取る
解析欄は、ハイフン、波かっこ、引用符、urn:uuid: プレフィックスの有無にかかわらず UUID を受け付け、ULID も大文字・小文字どちらでも受け付けます。値が正しい形式か、どのバージョンとバリアントを示しているかを表示し、時刻ベースのバージョン 1、6、7 と ULID については、埋め込まれた作成日時を ISO 8601 形式で、お使いのタイムゾーンと UTC の両方で表示します。
バージョン 3 と 5 は名前空間と名前のハッシュ(MD5 と SHA-1)なので、同じ入力からは常に同じ UUID が得られ、読み取れる時刻はありません。バージョン 8 は独自のレイアウト用に予約されています。Nil UUID(すべて 0)と Max UUID(すべて 1)は RFC で定義された特別な値です。
よくある質問
- UUID と GUID の違いは何ですか?
- 実質的な違いはありません。GUID は UUID を指す Microsoft の呼び名です。どちらも 128 ビットの識別子で、Microsoft のツールでは大文字で波かっこに囲んで表示されることが多いです。
- データベースの主キーには UUID v4 と v7 のどちらを使うべきですか?
- 主キーには v7 がおすすめです。先頭のタイムスタンプにより新しいキーが挿入順に並ぶので、B-tree インデックスがコンパクトに保たれ、挿入も高速になります。レコードの作成日時を ID から知られたくない場合は v4 を使ってください。
- 生成した UUID が重複することはありますか?
- 理論上はあり得ますが、実際にはありません。v4 の UUID には 122 ビットのランダムなビットがあるので、重複が 1 つでも起こりそうになるまでには約 270 京個を作る必要があります。
- UUID から作成日時を取り出せますか?
- 時刻ベースのバージョンだけです。v1、v6、v7 と ULID にはタイムスタンプが含まれています。解析欄に貼り付けると、お使いのタイムゾーンでの日時が表示されます。ランダムな v4 や、ハッシュベースの v3・v5 の UUID には時刻は含まれません。
- ULID とは何で、UUID とどう違うのですか?
- ULID は Crockford base32 の 26 文字で書く 128 ビットの ID で、先頭にミリ秒のタイムスタンプがあるので作成時刻順に並びます。サイズは UUID と同じで、より短いテキスト形式で UUID v7 と同じ目的を果たします。
- NanoID は何文字にすべきですか?
- 64 文字の URL セーフな文字セットから選ぶ既定の 21 文字なら、ランダム性は約 126 ビットで UUID v4 に匹敵します。小さなデータセットならより短い ID でも構いませんが、ツールに表示されるビット数を確認してください。約 64 ビットを下回ると、大規模では衝突が現実的になります。
- ここで生成した UUID は安全でプライベートですか?
- はい。Web Crypto API の暗号論的乱数生成器を使ってブラウザ内で生成され、サーバーに送信・保存されることはありません。