UUID ジェネレーター

ランダムな UUID(v4)識別子を、1 個ずつでもまとめても生成できます。

100%プライベート — すべてブラウザ内で動作します。データはお使いの端末で処理され、インターネットに送信されることはありません。

UUID ジェネレーターについて

この無料の UUID ジェネレーターは、ランダムなバージョン 4 の UUID(GUID とも呼ばれます)を生成します。UUID は、データベース、API、ログファイル、分散システムで使われる汎用一意識別子です。1 個だけでもまとめて大量でも生成でき、クリックひとつでコピーできます。

UUID は、暗号鍵にも使われる暗号学的に安全な乱数源である crypto.getRandomValues を用いて、お使いのブラウザー内で生成されます。サーバーには何も要求しないため、ここに表示される UUID はどこにも存在したことがありません。

UUID とは

UUID は 128 ビットの数値で、32 桁の 16 進数をハイフンで区切った 5 つのグループとして表記されます。

f47ac10b-58cc-4372-a567-0e02b2c3d479

区切り方は 8-4-4-4-12 で、ハイフンを含めた全体の長さは常に 36 文字です。

その目的は、誰にも問い合わせずに一意の ID を生成することです。データベースは次に何が来るかを決める唯一の権威なので、1, 2, 3… と割り当てられます。しかし、2 台のスマートフォンがオフラインでレコードを作成している場合、12 台のサーバーが同時に行を挿入している場合、あるいは行が存在する*前*に ID が必要な場合には、問い合わせるべき権威が存在しません。UUID は、衝突を考える必要がないほど巨大でランダムであることによって、この問題を解決します。

バージョン 4 と、それを示す 2 つの桁

UUID にはいくつかのバージョンがあります。バージョン 4 がランダムなもので、ほとんどの人が「UUID」と言うときに指しているのはこれです。

バージョンは文字列から直接読み取れます。f47ac10b-58cc-4372-a567-0e02b2c3d479 の場合は次のとおりです。

  • 3 番目のグループの最初の桁がバージョンです。ここでは 4 です
  • 4 番目のグループの最初の桁がバリアントです。常に 8、9、a、b のいずれかです

この 2 か所は固定されているため、実際のランダム性は 128 ビットではなく 122 ビットになります。

出会う可能性のある他のバージョン: v1 はタイムスタンプとマシンの MAC アドレスを符号化するため、並べ替えは可能ですが、どこでいつ作られたかが漏れます。2024 年に標準化された v7 が現代的な答えです。先頭にタイムスタンプ、その後にランダム性を置くため、ハードウェアの詳細を漏らさずに ID が作成時刻順に並びます。今から選ぶのであれば、そしてデータベースでの並び順が重要であれば、v7 を知っておく価値があります。

本当に一意なのか

保証されてはいませんが、数字が桁外れなので気にする必要はありません。

122 ビットのランダム性は、約 5.3 × 10³⁶ 通りの値を生みます。1 回の衝突が起こる確率が 50% に達するには、およそ 2.7 × 10¹⁸ 個、つまり 270 京個の UUID を生成する必要があります。

具体的に言えば、毎秒 10 億個の UUID を生成し続けた場合、集合全体のどこかで 1 件の重複が生じる確率が 50% に達するまで約 85 年かかります。現実のどのアプリケーションでも、このリスクはストレージが値を静かに破損させるリスクより小さいものです。

唯一の本当の注意点は乱数の品質です。弱い乱数源から生まれた UUID は、数学が約束するような一意性を持ちません。予測可能な生成器が重複を生み出した実際の不具合も存在します。このツールは Math.random() ではなく、ブラウザーの暗号用乱数生成器を使用しています。

UUID は秘密情報ではありません

両方向で誤用されるため、はっきり述べておく価値があります。

v4 UUID は予測不可能なので、推測できない URL — 共有リンクやパスワード再設定用トークン — として使うのは妥当です。しかし、セキュリティの基本要素として設計されたものではなく、有効期限も持たず、ログに記録され、キャッシュされ、分析ツールに入り、チャットに貼り付けられることが頻繁にあります。たまたま推測しにくい識別子として扱い、資格情報としては扱わないでください。

そして逆もまた然りです。UUID が何かを隠していると思い込まないでください。v1 UUID には、タイムスタンプと MAC アドレスがそのまま含まれています。どこかから引き継いだ ID がバージョン 1 で始まっているなら、それを読む人すべてに、いつどこで作られたかを伝えていることになります。

どこで使うか

  • データベースの主キー — 特に複数のマシンで同時に行が作成される場合
  • オフラインファーストのアプリ — 接続がなくてもスマートフォンでレコードを作成し、後から採番し直さずに同期できます
  • API リクエスト ID — ログの中で、1 つのリクエストを多数のサービスにわたって追跡します
  • ファイル名やアップロード名 — ユーザーのファイル名を信用せずに衝突を避けられます
  • メッセージの重複排除 — 再送されたリクエストが二重に処理されないようにする冪等性キーとして
  • 共有リンク — ドキュメントや招待用の、推測できない URL
  • テストデータ — 実データと決して衝突しない一意の値

使い方

  • 必要な個数を選びます
  • 生成します — 新しい UUID が表示されます
  • コピーします — 1 個ずつでも、リスト全体でもコピーできます

知っておくとよいこと

  • 大文字か小文字かは問題になりませんが、小文字が慣例であり、このツールもそれを生成します。一部のシステムは UUID を単なる文字列として比較するため、そこでは A と a は別物です。表記を統一してください。
  • ハイフンは書式上のものです。 多くのシステムは 32 桁をハイフンなしで、あるいは 16 バイトの生データとして保存します。値は同じで、見せ方が違うだけです。
  • データベースのキーとしては相応のコストがあります。 UUID は整数の 4 バイトや 8 バイトに対して 16 バイトあり、ランダムな値は書き込みを末尾に追加するのではなく B ツリーインデックス全体に散らばらせます。大きく書き込みの多いテーブルでは、これは測定できるほどの差になります。まさにこれが v7 の解決しようとした問題です。
  • パスワードとして使わないでください。 予測はできませんが、これは識別子であり、ログやブラウザーの履歴に残ります。
  • 「GUID」は同じものに対する Microsoft の呼び名です。 .NET や SQL Server では GUID と表記されますが、同じ 128 ビットの値です。
  • nil UUID はすべてがゼロです — 00000000-0000-0000-0000-000000000000。通常は「なし」または「未設定」を意味するので、見分けられるようにしておくと役立ちます。

よくある質問

UUID とは何で、何のためのものですか?

UUID は 36 文字で表記される 128 ビットの識別子で、たとえば f47ac10b-58cc-4372-a567-0e02b2c3d479 のようになります。その目的は、中央のカウンターに問い合わせることなく、どんなものでも自力で一意の ID を生成できるようにすることです。これは、複数のサーバーで同時にレコードが作られるとき、オフラインのスマートフォン上で作られるとき、あるいはデータベースに行が存在するより前に ID が必要なときに重要になります。

UUID は一意であることが保証されていますか?

いいえ。ただし衝突する確率は無視できるほど小さいものです。バージョン 4 の UUID は 122 ビットのランダム性を持ち、およそ 5.3 × 10³⁶ 通りの可能性があります。1 件の重複が生じる確率が 50% に達するには、約 270 京個を生成する必要があります。毎秒 10 億個のペースでも、これはおよそ 85 年に相当します。

UUID と GUID の違いは何ですか?

実務上は違いはありません。GUID は同じ 128 ビット識別子に対する Microsoft の呼び名で、.NET や SQL Server の随所で目にします。唯一の細かな点として、一部の Microsoft 製ツールは {f47ac10b-...} のように GUID を波かっこで囲んで表示し、古い一部の API は生のバイナリへ変換する際に一部のバイト順を入れ替えます。

どの UUID バージョンを使うべきですか?

一般的な用途にはバージョン 4 を使ってください。完全にランダムで、どこでいつ作られたかを一切明かしません。これらの ID をデータベースの主キーにするのであれば、バージョン 7 を検討してください。先頭にタイムスタンプを置くため、値が作成時刻順に並び、インデックスの効率がはるかに良くなります。公開されるものにはバージョン 1 を避けてください。MAC アドレスとタイムスタンプが埋め込まれているためです。

UUID をセキュリティトークンとして使えますか?

推測できないリンクとしてなら許容できます。v4 UUID は現実的には予測できないからです。ただし、それは資格情報ではなく識別子です。期限切れになることはなく、単体で失効させることもできず、サーバーのログ、分析ツール、ブラウザーの履歴に残りがちです。本格的な認証には、有効期限を備えた専用のトークンを使ってください。

これらの UUID は御社のサーバーで生成されているのですか?

いいえ。あらゆる最新ブラウザーに組み込まれた暗号学的に安全な生成器である crypto.getRandomValues によって、お使いのブラウザー内で作られます。リクエストは送信されず、何も記録されないため、接続を切った状態でも生成できます。

関連ツール

ビデオチュートリアル

新しいツールを定期的に追加しています。公開時にお知らせを受け取るにはYouTube でチャンネル登録してください。

他のツール

すべて表示

おすすめアプリ

すべて表示