pipipipi.net

UUID生成

UUIDの生成・デコード・検証ツール

バージョン:
生成数:

v4: 完全ランダム。衝突確率は極めて低い

v7: タイムスタンプ(ミリ秒精度)を含む。ソート可能でデータベースのインデックスに適する

UUID生成ツールでできること

UUID v4(ランダム)・v7(タイムスタンプ付き)の生成、v5(名前ベース・SHA-1)の生成、既存UUIDのデコード、複数UUIDの一括バリデーションが行えます。開発・テスト作業で必要なUUIDをブラウザ上で即座に取得できます。

使い方

UUID 生成タブ
バージョン(v4 / v7)と生成数(1 / 5 / 10)を選択して「生成」ボタンを押すとUUIDが生成されます。個別コピー・すべてコピー・クリア機能付きです。
デコードタブ
UUIDを入力して「デコード」ボタンを押すと、バージョン・バリアント・タイムスタンプ(v1/v6/v7の場合)を解析して表示します。
v5 生成タブ
ネームスペース(DNS / URL / OID / X500 / カスタム)と名前を指定して、名前ベースのUUID v5を生成します。同じ入力からは常に同じUUIDが得られます。
バリデーションタブ
複数のUUIDを改行区切りで貼り付けて「検証」を押すと、各UUIDの形式チェック・バージョン・バリアント・重複の有無を一覧表示します。

活用シーン

  • データベースの主キー生成 — RDBMSやNoSQLデータベースのレコードに一意なIDを付与する用途で広く使われています。MySQLやPostgreSQLのUUID型カラム、MongoDBの_idフィールドなど、フレームワーク問わず利用できます。自動採番(AUTO_INCREMENT)と異なり、分散システムや複数DBのマイグレーション時にID衝突が起きないメリットがあります。
  • APIリクエストのトレーシングID — マイクロサービス構成のシステムでは、一つのAPIリクエストが複数のサービスをまたいで処理されます。リクエストごとにUUIDを発行してHTTPヘッダー(X-Request-IDなど)に付与することで、ログ解析時に特定リクエストの処理経路を追跡できます。
  • 一意なファイル名の生成 — ユーザーがアップロードしたファイルをサーバーに保存する際、元のファイル名をそのまま使うとディレクトリトラバーサルや同名ファイルの上書きといったリスクがあります。UUIDをファイル名に使うことで、安全かつ衝突のないファイル管理が実現できます。
  • テストデータの準備 — ユニットテストや結合テストで複数のエンティティを作成する際、IDとして使えるUUIDをまとめて生成しておくと便利です。10件一括生成してそのままテストコードに貼り付けることができます。

UUIDのバージョンと使い分け

UUIDには複数のバージョンがあり、用途によって使い分けることが推奨されています。

v4(ランダム)
122ビットが完全にランダムな値で構成されます。生成のたびに異なる値が得られ、順序性はありません。最も広く普及しているバージョンで、データベースの主キーやトークンなど多くの用途に適しています。
v7(タイムスタンプ付きランダム)
先頭48ビットにUnixミリ秒タイムスタンプが埋め込まれ、残りがランダムな値です。時系列順に並べることができるため、インデックスの断片化が起きにくく、データベースの書き込みパフォーマンスが向上します。新規プロジェクトではv4よりv7を選ぶメリットがある場面が増えています。
v5(名前ベース・SHA-1)
ネームスペースと名前の組み合わせから決定論的にUUIDを生成します。同じ入力に対して常に同じUUIDが得られるため、リソースURLからIDを導出したい場合や、冪等性が必要な処理に向いています。

衝突確率について

UUID v4の衝突確率は現実的にはほぼゼロです。122ビットのランダム空間には約5.3×10³⁶通りの値が存在します。1秒間に10億個のUUIDを生成し続けたとしても、最初の衝突が起きるまでの期待値は数十億年以上になります。一般的なアプリケーションの規模であれば、衝突を実用的な問題として考慮する必要はありません。

プライバシーについて

UUIDの生成・デコード・バリデーションはすべてブラウザ内で処理されます。入力した値やコピーしたUUIDがサーバーに送信されることはありません。

関連ツール

  • ハッシュ生成ツール — MD5・SHA-1・SHA-256などのハッシュ値を生成します。ファイルの整合性確認やパスワードのハッシュ化に使えます。
  • パスワード生成ツール — 任意の長さ・文字種でランダムなパスワードを生成します。APIキーやシークレットトークンの生成にも活用できます。