UUID ジェネレーター
ブラウザ内でランダムな RFC-4122 バージョン 4 UUID(GUID とも呼ばれます)を生成します。必要な数を選び、大文字やハイフンを切り替えて、結果をすぐにコピーできます。何もアップロードされません。
オプション
数量
大文字
ハイフン
UUID ジェネレーター の使い方
- 1
数量を設定する
必要な UUID の数を、1から100まで、数量フィールドまたはプラス・マイナスボタンで選びます。
- 2
形式を選ぶ
16進の英字を大文字にするには「Uppercase」を、各 ID から4つのダッシュを残すか取り除くかは「Hyphens」を切り替えます。
- 3
ID を生成する
「Generate」をクリックすると、暗号学的にランダムなバージョン4の UUID が生成され、それぞれ1行ずつ表示されます。
- 4
結果をコピーする
「Copy」ボタンを使って一覧全体を一度にコピーし、コード、データベース、スプレッドシートに貼り付けられる状態にします。
UUID を深く知る ― バージョン、衝突、そして使いどころ
UUID とは何か
UUID(Universally Unique Identifier、Microsoft の世界では GUID と呼ばれます)は、番号を割り当てる中央の管理機関なしで一意になるように設計された 128 ビットの値です。その正規のテキスト形式は 36 文字で、32 桁の 16 進数字を 4 つのハイフンで 5 つのグループに分け、8-4-4-4-12 のパターンに並べたものです。アイデンティティそのものはこの 128 ビットであり、ハイフンや英字の大文字・小文字は見せ方にすぎません。
UUID が約束するのは分散性です。どこのどんなマシンでも、別の場所で作られたものと衝突する可能性が実質的にゼロのまま、識別子を生成できます。独立したシステムが、あとで調整なしにマージされる ID を生成しなければならないとき、UUID が既定のキーになるのはこのためです。
バージョン 4 ― 設計からしてランダム
このジェネレーターは、最も広く使われているバージョン 4 の UUID を生成します。v4 の UUID はほぼ完全にランダムです。128 ビットのうちわずかな数がバージョンとバリアントを示すために固定され、残る 122 ビットが純粋なランダムです。v4 の値は見分けがつきます。3 つ目のグループの先頭の桁は必ず 4 であり、4 つ目のグループの先頭の桁は 8、9、a、b のいずれかになるからです。
タイムスタンプやマシン識別子が埋め込まれていないため、v4 の UUID は、いつどこで作られたかについて何も漏らしません。このプライバシー性は、MAC アドレスや連番を符号化する方式に対する確かな利点であり、v4 がキーやトークン、レコード識別子の日常的な既定になった理由の一つでもあります。
ランダム性はどこから得られるのか
ランダムな UUID にとっては、乱数源の品質がすべてです。このツールは、速いが予測可能な疑似乱数関数ではなく、ブラウザ内蔵の暗号学的に安全なジェネレーター ― セキュリティ上重要な値に使われるのと同じ基本機能 ― を使います。これが重要なのは、弱いジェネレーターから作られた ID は推測されたり総当たりで列挙されたりしうるため、本来は推測できないはずの識別子がセキュリティ上の穴に変わってしまうからです。
適切な暗号学的乱数源があれば、122 ビットのランダムビットは本当に予測不可能になるので、出力は本番のデータベースキーや冪等性キー、それに類する用途に適しています。ただし、その境界は強調しておく価値があります。UUID は識別子であって、秘密情報ではありません。列挙されにくい程度には推測できないものとして扱ってよいものの、それだけを認可トークンとして頼ってはいけません。
衝突が現実的な心配にならない理由
v4 の UUID の空間は天文学的に広く、2 の 122 乗、すなわちおよそ 5.3 × 10 の 36 乗通りの異なる値があります。感覚をつかむために言えば、たった 1 回の衝突の確率が測定できるほどの大きさになるまでには、毎秒数十億個の UUID を何十年も生成し続けなければならないでしょう。現実的なあらゆるアプリケーションにおいて、ランダムに生成された 2 つの v4 UUID が一致する確率はあまりに小さく、ゼロとして扱われます。
だからこそ、何千ものクライアントやサーバーで独立に ID を生成しても、中央のサービスへ一意性を確認する往復をすることなく、衝突しないと単純に仮定できるのです。この起こりにくさこそが利点です。実際には決して目にすることのない代償と引き換えに、調整不要の生成を手に入れられるのですから。
バージョン 1、バージョン 7、そして並べ替え可能性
すべての UUID がランダムなわけではありません。バージョン 1 は、現在時刻と生成したマシンのネットワークアドレスから値を導き出します。これで一意性は保証されますが、タイムスタンプとハードウェア識別子が ID に焼き込まれてしまいます。これはプライバシーと情報漏えいの懸念であり、多くのチームを v4 へと向かわせました。バージョン 7 は、また別の問題に対する現代的な答えです。上位ビットにミリ秒単位のタイムスタンプを置き、その後ろにランダムなビットを続けます。
この配置のおかげで、v7 の値はただの文字列としてもおおよそ作成順に並びます。これはデータベースのインデックスにとって実際の利点です。純粋にランダムな v4 のキーはインデックス全体に散らばり、エンジンによっては挿入性能を損なうことがありますが、時刻順のキーは最近の挿入をまとまったままに保ちます。UUID の世界規模の一意性が必要でありながら、時系列の並びも欲しいなら、手に取るべきは v7 です。一方、時刻を埋め込みたくないと明確に望むなら、v4 が引き続き正しい選択です。
UUID とオートインクリメント ID
古典的な代替手段は、データベースのオートインクリメント整数です。連番の整数はコンパクトで自然に順序が付き、主キーとしてきわめて効率的ですが、次の番号を払い出すための単一の信頼できる情報源を必要とし、情報を露呈します。連番の ID は、レコードがおおよそいくつ存在するかを明かし、攻撃者が 1 を足すだけで隣の ID を推測できるようにしてしまいます。UUID はこの両方の問題を解決します。中央のカウンターも不要で、列挙できる連番もありません。
トレードオフは逆方向にも働きます。UUID は 16 バイトで、4 バイトや 8 バイトの整数より大きく、テキスト形式は URL やログでかさばり、ランダムなものは並べ替えできません。妥当な目安はこうです。ID をクライアントや分散サービスが生成しなければならない場合、システムをまたいでマージしなければならない場合、推測されてはならない場合には UUID を使う。コンパクトさと順序が何より重要な、単一で自己完結したデータベースには、オートインクリメント整数を使い続ける、というものです。
書式と一括生成
正規形はハイフン付きの小文字 16 進で、ほとんどのシステムがこれを受け付けますが、慣習はさまざまです。このツールでは、一部のプラットフォームや古い Microsoft のツールが好む大文字へ切り替えたり、ハイフンを取り除いてコンパクトな 32 文字の形式にしたりできます。後者は URL やファイル名など、ダッシュが邪魔になる場所で便利です。土台となる 128 ビットの値は、大文字・小文字やハイフンの有無にかかわらず同一なので、これらは純粋に表示上の選択です。
テーブルへの初期データ投入、テスト用フィクスチャの生成、キーの事前割り当てなど、一度にたくさんの ID が必要なときは、1 回のクリックでまとめて 1 バッチを生成し、それぞれ 1 行ずつの一覧全体をまとめてコピーできます。すべてはブラウザ内でローカルに生成され、何も送信も保存もされないので、機密のレコードに結びついた識別子であっても、あなたの端末から外に出ることはありません。
よくある質問
これはどんな種類の UUID を生成しますか?
ランダムな値はどのように生成されますか?
一度にいくつの UUID を作れますか?
生成された UUID は本当に一意ですか?
何かサーバーに送信されますか?
関連ツール
こちらの便利なツールもどうぞ