UUID ジェネレーター/ v4 · v7

UUID v4(ランダム)と UUID v7(時系列順)を一括生成。大文字・ハイフンなし形式に対応、ワンクリックコピー。

数量:
5 × UUID v4
c088d977-9f72-4531-a180-85be0b382bc2
5e343cd8-dcce-446f-bd1c-ffec6f01274d
4118c6bc-a1ca-4421-a9e0-917598f5d966
18d5426c-e3f5-4027-a528-8906dbc9fb74
391aa198-6806-40ff-85e8-b8b69e7c294f
UUID v4 は 122 ビットの暗号学的乱数を使用します。1 兆個生成しても衝突確率は約 10⁻¹⁵ で、事実上不可能です。

このツールは役に立ちましたか?

UUIDとは

UUID(Universally Unique Identifier)は128ビットのグローバル一意識別子で、通常32桁の16進数文字で表されます(例: `550e8400-e29b-41d4-a716-446655440000`)。UUID v4はランダムに生成され、衝突確率は極めて低いです(103兆個のUUIDを生成しても重複が1つ発生する確率は50%)。分散システムの一意な主キーとして十分に使用できます。

UUIDのバージョンによる違い

v1はタイムスタンプとMACアドレスに基づく(出所の追跡可能)、v3/v5は名前空間とハッシュに基づく(決定論的)、v4は純粋にランダム(最も一般的)、v7は時系列ソート+ランダム(新標準、ソート性とランダム性を兼顾)。日常開発ではv4が最も一般的で、v7は時系列でソートが必要なデータベース主キーの场景に適しています。

コード例

JavaScript / Node.js
// UUID v4 (browser & Node 19+)
const id = crypto.randomUUID();
// "110e8400-e29b-41d4-a716-446655440000"

// Node.js (< 19)
import { randomUUID } from "crypto";
const id = randomUUID();

// npm: uuid package
import { v4 as uuidv4, v7 as uuidv7 } from "uuid";
console.log(uuidv4());
console.log(uuidv7());
Python
import uuid

# UUID v4
print(uuid.uuid4())
# "a8098c1a-f86e-11da-bd1a-00112444be1e"

# UUID v5 (name-based, deterministic)
print(uuid.uuid5(uuid.NAMESPACE_DNS, "example.com"))

# As hex (no dashes)
print(uuid.uuid4().hex)
Go
// go get github.com/google/uuid
import "github.com/google/uuid"

// UUID v4
id := uuid.New()
fmt.Println(id.String())

// UUID v7 (google/uuid v1.6+)
id7, _ := uuid.NewV7()
fmt.Println(id7.String())
SQL
-- PostgreSQL
SELECT gen_random_uuid();          -- v4
INSERT INTO users (id, name)
  VALUES (gen_random_uuid(), 'Alice');

-- MySQL 8+
SELECT UUID();  -- v1 format
-- For v4: use application layer

-- SQLite (with extension or app)
SELECT lower(hex(randomblob(4))) || '-' ||
  lower(hex(randomblob(2))) || '-4' ||
  substr(lower(hex(randomblob(2))),2) || '-' ||
  substr('89ab', abs(random()) % 4 + 1, 1) ||
  substr(lower(hex(randomblob(2))),2) || '-' ||
  lower(hex(randomblob(6)));

よくある質問

UUID とは何ですか?
UUID(Universally Unique Identifier)は 128 ビットの識別子で、通常 8-4-4-4-12 形式の 32 桁の 16 進文字列(例: 550e8400-e29b-41d4-a716-446655440000)で表されます。RFC 4122 で定義され、分散システムで中央調整なしに一意の ID を生成できます。
UUID v4 と UUID v7 の違いは何ですか?
UUID v4 は完全にランダム(122 ビット)で、シンプルかつ汎用的です。UUID v7 は先頭 48 ビットに Unix ミリ秒タイムスタンプを含むため、自然に時系列順になります。データベースで UUID をソートするだけで作成順が得られ、B-tree インデックスのパフォーマンスも優れています。新規プロジェクトには UUID v7 が推奨されます。
UUID の衝突確率はどのくらいですか?
UUID v4 は 122 ビットのランダム性を使用します。50% の衝突確率に達するには約 2^61(約 230 京)個の UUID を生成する必要があります。毎秒数百万個生成しても実用上衝突の心配はなく、分散主キーとして安全に使用できます。
UUID と ULID のどちらが良いですか?
ULID(Universally Unique Lexicographically Sortable Identifier)は UUID v7 と同様に時系列順ですが、Crockford base32 エンコード(26 文字、ハイフンなし)を使用し、より短い文字列になります。UUID v7 は IETF 標準でエコシステムのサポートが広く、ULID は短い ID が必要な場合に適しています。
データベースで UUID をどのように保存すべきですか?
PostgreSQL にはネイティブの UUID 型があります。MySQL/MariaDB では BINARY(16) でコンパクトに保存するか、CHAR(36) で可読性を確保できます。MongoDB では BinData(3) またはプレーン文字列が使えます。クエリ対象の UUID 列には必ずインデックスを作成してください。
UUID v7 が v4 よりデータベースパフォーマンスが良い理由は?
UUID v4 のランダム性は B-tree のランダム挿入を引き起こし、頻繁なページ分割とキャッシュ効率の低下をもたらします。UUID v7 の時系列順序により、新しい行は常にインデックスの末尾に追加され、自動増分 ID と同様の優れた書き込みパフォーマンスとキャッシュヒット率を実現します。