ツール

UUIDジェネレーター|v4・v7を安全に生成(コピー・ダウンロード対応)

    🔒 生成したUUIDはサーバーに送信・保存されません。すべてブラウザ内で生成しています。

    UUIDとは(v4とv7の違い)

    UUIDは、世界中で重複しにくい128ビットの識別子です。
    データベースの主キーや、
    ファイル名・リクエストIDなどに使われます。

    いちばん使うのはv4(乱数)
    予測されにくく、用途を選びません。
    時間順にソートしたいなら v7
    先頭に時刻が入るので、DBの主キーに向いています。

    v4とv7の使い分け

    とにかく安全な乱数が欲しいなら v4。
    作成順に並べたい、大量INSERTでの
    インデックス断片化を避けたい――
    そんな時はv7が便利です。

    v4は完全ランダムなので、
    並び順に意味はありません。
    v7は先頭48ビットがミリ秒精度の時刻
    文字列のまま並べても、ほぼ時間順になります。

    各言語でUUIDを生成する方法

    主要な言語での生成例です。
    多くは標準ライブラリだけで v4 を作れます。

    Java

    import java.util.UUID;
    
    UUID id = UUID.randomUUID();   // v4(乱数)
    String s = id.toString();

    Kotlin

    import java.util.UUID
    
    val id = UUID.randomUUID()     // v4(乱数)
    val s = id.toString()

    JavaScript

    crypto.randomUUID()   // v4(ブラウザ / Node 19+・要セキュアコンテキスト)

    Python

    import uuid
    
    uuid.uuid4()   # v4(乱数)

    PostgreSQL

    SELECT gen_random_uuid();   -- v4(PostgreSQL 13+ 標準)

    v7は新しめの形式です。
    標準で未対応の言語では、
    対応ライブラリで生成してください。

    UUIDは衝突しないの?

    v4は122ビットが乱数です。
    現実的な件数では衝突はまず起きません
    ただし「絶対に0」ではないので、
    DB側のユニーク制約も付けておくと安心です。

    よくある間違い・注意点

    自前の乱数で自作して安全性を落とす
    (暗号用途は必ずcrypto系で)
    v1のMACアドレス埋め込みで情報が漏れる
    大文字小文字やハイフンの有無で突き合わせが失敗する
    v7の順序を厳密な生成順と過信する(同一ミリ秒内は乱数)

    よくある質問

    UUIDのバージョンはどれを使えばいい?

    迷ったらv4で大丈夫です。
    時間順ソートやDB主キー用途ならv7を選びましょう。

    主キーにするならv4とv7どっち?

    大量INSERTで断片化を避けたいならv7
    とはいえv4でも、
    実用上は問題ないことが多いです。

    このツールのUUIDはサーバーに送られますか?

    送られません
    すべてブラウザ内で生成し、
    サーバーに送信・保存もしていません。

    生成したUUIDは本当に一意ですか?

    v4は事実上一意です。
    厳密な保証が必要なら、
    DBのユニーク制約と併用してください。

    大文字にしたいのですが?

    標準は小文字・ハイフンありです。
    必要なら生成後に大文字化を。
    多くのシステムは大小を区別しない点に注意です。

    UUIDは「とりあえずv4」で大抵OK。
    並び順が欲しくなったらv7を思い出してください。
    このページをブックマークして、
    必要なときにサッと生成を。
    それではまた!