UUIDジェネレーター
UUIDジェネレーターは、UUID(汎用一意識別子)v4を自動生成するオンラインツールです。大文字/小文字の設定やハイフンの有無などをカスタマイズできます。
✨ 生成されたUUID
UUID(Universally Unique Identifier)v4を生成します。各UUIDは統計的に一意で、データベースキー、セッションIDなどに使用されます。
💡 例
550e8400-e29b-41d4-a716-446655440000550E8400-E29B-41D4-A716-446655440000550e8400e29b41d4a716446655440000機能
- 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);
}
}
セキュリティとベストプラクティス
推奨事項
- データベースの主キー: UUIDは独立したキー生成が必要な分散データベースに最適
- 公開ID: 順次でないため外部に公開しても安全
- APIキー: APIキー生成の一部として有用
- 一時ファイル名: ファイル名の衝突を防ぐのに最適
非推奨事項
- 暗号化キーには不適: UUIDは暗号化キーとしては十分安全ではありません
- パスワード保存には不適: 適切なパスワードハッシュの代わりにUUIDを使用しないでください
- 順次要件: UUIDはランダムなので、ソート順序が必要な場合は使用しないでください
- 容量制約シナリオ: 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文字、コンパクトフォーマット)
システム要件に基づいて選択してください。