本文へスキップ

UUIDジェネレーター

UUIDジェネレーターは、UUID(汎用一意識別子)v4を自動生成するオンラインツールです。大文字/小文字の設定やハイフンの有無などをカスタマイズできます。

⚙️ 生成オプション

✨ 生成されたUUID

UUID(Universally Unique Identifier)v4を生成します。各UUIDは統計的に一意で、データベースキー、セッションIDなどに使用されます。

💡 例

デフォルト(小文字、ハイフン):
550e8400-e29b-41d4-a716-446655440000
大文字:
550E8400-E29B-41D4-A716-446655440000
ハイフンなし:
550e8400e29b41d4a716446655440000

機能

  • UUID v4生成: 暗号的にランダムな統計的に一意なIDを生成
  • 複数生成: 一度に複数のUUIDを生成(1〜10個)
  • 大文字/小文字: 大文字と小文字の形式を選択
  • ハイフンオプション: ハイフン付きまたはなしで生成
  • ワンクリックコピー: クリックしてUUIDをクリップボードにコピー

UUIDとは?

UUID(Universally Unique Identifier)は、ソフトウェアシステムで使用される128ビットの一意識別子です。UUID v4は乱数を使用して識別子を生成し、統計的な一意性を保証します。

UUIDのフォーマット

標準的なUUIDフォーマットは、8-4-4-4-12の形式でハイフンで区切られた32文字の16進数で表されます:

550e8400-e29b-41d4-a716-446655440000

各セクションは以下で構成されています:

  • 第1セクション(8文字): 時間ベースのLow
  • 第2セクション(4文字): 時間ベースのMid
  • 第3セクション(4文字): バージョンと時間ベースのHigh
  • 第4セクション(4文字): クロックシーケンス
  • 第5セクション(12文字): ノード(通常MACアドレス)

UUID v4の場合、ほとんどのフィールドはランダムに生成され、バージョンフィールドは'4'に固定されます。

使用例

1. データベースの主キー

CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
username VARCHAR(50),
email VARCHAR(100)
);

2. セッションID

const sessionId = crypto.randomUUID();
localStorage.setItem('sessionId', sessionId);

3. ファイル名

const uploadFile = (file) => {
const uuid = crypto.randomUUID();
const extension = file.name.split('.').pop();
const fileName = `${uuid}.${extension}`;
// ファイルをアップロード...
};

4. 分散システムのID

import uuid

def create_transaction():
transaction_id = str(uuid.uuid4())
return {
'id': transaction_id,
'timestamp': datetime.now(),
'status': 'pending'
}

プログラミング例

JavaScript

// ブラウザ環境 - Web Crypto API
const uuid = crypto.randomUUID();
console.log(uuid); // 550e8400-e29b-41d4-a716-446655440000

// ハイフンなし
const uuidNoHyphens = crypto.randomUUID().replace(/-/g, '');
console.log(uuidNoHyphens); // 550e8400e29b41d4a716446655440000

// 大文字
const uuidUpper = crypto.randomUUID().toUpperCase();
console.log(uuidUpper); // 550E8400-E29B-41D4-A716-446655440000

Python

import uuid

# UUID v4を生成
generated_uuid = uuid.uuid4()
print(generated_uuid) # 550e8400-e29b-41d4-a716-446655440000

# 文字列に変換
uuid_str = str(generated_uuid)

# ハイフンなし
uuid_no_hyphens = uuid_str.replace('-', '')
print(uuid_no_hyphens) # 550e8400e29b41d4a716446655440000

# 大文字
uuid_upper = uuid_str.upper()
print(uuid_upper) # 550E8400-E29B-41D4-A716-446655440000

PHP

// ramsey/uuidライブラリを使用
use Ramsey\Uuid\Uuid;

$uuid = Uuid::uuid4();
echo $uuid->toString(); // 550e8400-e29b-41d4-a716-446655440000

// ハイフンなし
echo str_replace('-', '', $uuid->toString());

// 大文字
echo strtoupper($uuid->toString());

Java

import java.util.UUID;

public class UuidExample {
public static void main(String[] args) {
// UUIDを生成
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());

// ハイフンなし
String uuidNoHyphens = uuid.toString().replace("-", "");
System.out.println(uuidNoHyphens);

// 大文字
String uuidUpper = uuid.toString().toUpperCase();
System.out.println(uuidUpper);
}
}

C#

using System;

class Program
{
static void Main()
{
// UUIDを生成
Guid uuid = Guid.NewGuid();
Console.WriteLine(uuid.ToString());

// ハイフンなし
string uuidNoHyphens = uuid.ToString("N");
Console.WriteLine(uuidNoHyphens);

// 大文字
string uuidUpper = uuid.ToString().ToUpper();
Console.WriteLine(uuidUpper);
}
}

セキュリティとベストプラクティス

推奨事項

  1. データベースの主キー: UUIDは独立したキー生成が必要な分散データベースに最適
  2. 公開ID: 順次でないため外部に公開しても安全
  3. APIキー: APIキー生成の一部として有用
  4. 一時ファイル名: ファイル名の衝突を防ぐのに最適

非推奨事項

  1. 暗号化キーには不適: UUIDは暗号化キーとしては十分安全ではありません
  2. パスワード保存には不適: 適切なパスワードハッシュの代わりにUUIDを使用しないでください
  3. 順次要件: UUIDはランダムなので、ソート順序が必要な場合は使用しないでください
  4. 容量制約シナリオ: 128ビットのUUIDは、短いIDと比較して非効率的な場合があります

衝突確率

UUID v4は122ビットのランダム性を使用します(128ビット全体のうち、6ビットはバージョンとバリアントに使用)。

  • 可能なUUID数: 2^122 ≈ 5.3 × 10^36
  • 衝突確率: 実質的にゼロ
    • 85年間毎秒10億個のUUIDを生成しても、衝突確率は50%未満

ブラウザ互換性

このツールで使用されるcrypto.randomUUID() APIは以下でサポートされています:

  • Chrome 92+
  • Firefox 95+
  • Safari 15.4+
  • Edge 92+

古いブラウザの場合は、ポリフィルまたはuuidのようなライブラリの使用が推奨されます。

よくある質問

Q1. UUIDバージョンの違いは?

A: 複数のUUIDバージョンがあります:

  • バージョン1: 時間ベース(MACアドレスを含む)
  • バージョン3: MD5ハッシュベース
  • バージョン4: ランダム(最もよく使用される)
  • バージョン5: SHA-1ハッシュベース

バージョン4は、シンプルさとランダム性により最もよく使用されます。

Q2. UUIDは本当に一意ですか?

A: 統計的には、はい。122ビットのランダム性により、衝突の確率は無視できます。ただし、数学的に絶対的な一意性は保証されません。

Q3. UUIDをデータベースの主キーとして使用できますか?

A: はい、ただし考慮事項があります:

  • 長所: グローバルに一意、クライアント側で生成可能、分散システムに安全
  • 短所: より大きなストレージスペース(整数の4〜8バイトに対して16バイト)、順次順序なし、インデックス作成がわずかに遅い

Q4. UUIDは安全ですか?

A: UUIDは暗号的に安全なキーではありません。予測不可能ですが、適切な暗号化キーや認証トークンの代わりにはなりません。

Q5. ハイフンありとなしの違いは?

A: 純粋にフォーマットの違いです:

  • ハイフンあり: 550e8400-e29b-41d4-a716-446655440000(36文字、標準フォーマット)
  • ハイフンなし: 550e8400e29b41d4a716446655440000(32文字、コンパクトフォーマット)

システム要件に基づいて選択してください。

Q6. 自動インクリメントIDの代わりにUUIDを使用する理由は?

A: UUIDの利点:

  • 分散生成: 複数のサーバーが競合なしに独立してIDを生成できる
  • セキュリティ: 順次でないため、次のIDを推測するのが難しい
  • オフライン生成: データベース接続なしで生成できる
  • データのマージ: 複数のソースからのデータをID競合なしで簡単にマージ

自動インクリメントIDが適している場合:

  • パフォーマンス: より高速なインデックス作成と小さなストレージ
  • シンプルさ: デバッグと読み取りが容易
  • 順序付け: 自然な時系列順序

関連ツール