Pack Camo

UUID 生成ツール(v4・v7・ULID・NanoID)

UUID v4・v7、ULID、NanoID をまとめて生成し、任意の UUID を解析します。 処理はすべて端末内で完結し、アップロードは一切ありません。

入力
Count · format
出力
UUID v4 · UUID v7 · ULID · NanoID
0 個の ID

解析

有効
はい
種類
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 を生成する方法

  1. 種類を選びます。単純なランダム ID なら UUID v4、作成順に並べたいなら UUID v7 または ULID、URL 用の短い ID なら NanoID です。
  2. 必要な個数を、入力欄またはクイックボタンで最大 10,000 まで指定します。
  3. 形式を選びます。小文字か大文字か、ハイフンの有無、GUID 風に {波かっこ} で囲むか、SQL の IN (…) リストや JSON 配列に貼り付けられるよう引用符とカンマを付けるかです。
  4. リスト全体をコピーするか、.txt、.csv、.json としてダウンロードします。再生成を押すと新しい一式が作られます。
  5. 手元の 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 の暗号論的乱数生成器を使ってブラウザ内で生成され、サーバーに送信・保存されることはありません。