UUIDジェネレータ
UUID v4およびUUID v7の識別子をすぐに生成します。
UUID v4およびUUID v7の識別子をすぐに生成します。
UUID v4はランダムな数値を使用して生成されます。122ビットのランダム性を提供し、衝突は極めて稀です。
UUID v7はUnixタイムスタンプ(ミリ秒)とランダムなビットを組み合わせています。タイム順序なので、データベースのインデキシングに最適です。
UUIDジェネレーター — UUID v4およびv7識別子を即時生成
現代のアプリケーションには、データベースの主キー、APIトークン、セッションID、分散システムなどにおいて、一意の識別子が必要です。IDをハードコードしたり、オートインクリメントの整数に依存したりすると、衝突、セキュリティリスク、スケーリングの問題を引き起こす可能性があります。当社の無料のUUIDジェネレーターは、ワンクリックで暗号的に強いUniversally Unique Identifierを生成します。純粋なランダム性を持つUUID v4と、時間順序付き識別子であるUUID v7から選択し、最大100個をまとめて生成してクリップボードにコピーできます。すべてはブラウザ上で動作し、データは一切外部に送信されません。
UUIDとは?
UUID(Universally Unique Identifier)は、RFC 4122で定義され、その後RFC 9562で更新された128ビットの識別子規格です。通常、ハイフンを含む36文字の文字列として表され、例えば550e8400-e29b-41d4-a716-446655440000のようになります。「Universally Unique(普遍的に一意)」とは、同じUUIDが生成される確率が天文学的に小さいことを意味します。UUID v4の場合、その確率は約2.71 × 10^18分の1です。
UUIDはソフトウェア開発のいたる所で使われています。データベースは、サーバー間の調整なしで独立して生成できるため、主キーとして使用します。APIは追跡やデバッグのためにリクエストIDとして使用します。認証システムはセッショントークンとして使用します。分散システムはログの相関関係のためにイベントIDとして使用します。中央の権威機関なしで一意性が保証された識別子が必要な場面では、UUIDが解決策となります。
オートインクリメントの整数とは異なり、UUIDはレコードの順序や数を一切教えません。これは公開向けURLやAPIにおいて安全であることを意味します。攻撃者は数値を増やすだけで他のリソースIDを推測することができません。
UUIDジェネレーターの使い方
UUIDの生成には数秒もかかりません。必要なバージョンを選択し、個数を設定して「生成」をクリックするだけです。
- UUIDのバージョンを選択する。 ランダムな識別子にはUUID v4を、時間順序付き識別子にはUUID v7を選択します。各バージョンには異なる特性があります。下表を参照してください。
- 生成個数を設定する。 1個から最大100個まで、一度にUUIDを生成できます。すべてのUUIDは独立して生成されます。
- 書式設定オプションを切り替える。 **大文字(Uppercase)**を有効にすると、16進数が大文字で出力されます(一部のデータベースシステムで必要)。**ハイフンなし(No Dashes)**を有効にすると、ハイフンを除外した32文字の16進数文字列が生成されます(特定のAPIやレガシーシステムで一般的)。
- 生成をクリックする。 ツールは暗号的に安全な疑似乱数生成を使用して、UUIDを瞬時に作成します。
- UUIDをコピーする。 リスト内の任意のUUIDをクリックして個別にコピーするか、**すべてコピー(Copy All)**をクリックして、改行区切りで全てのUUIDを取得します。
UUID v4とUUID v7:どちらを使うべきか?
| 機能 | UUID v4 | UUID v7 |
|---|---|---|
| 生成方法 | 122ビットの乱数データ | 48ビットのUnixタイムスタンプ(ms)+ 74ビットの乱数 |
| 一意性 | ランダムな衝突確率 | ランダムな衝突確率(同じエントロピー) |
| 時間によるソート | なし | あり — タイムスタンプから開始 |
| データベースパフォーマンス | ランダムな挿入パターンによりインデックスの断片化を引き起こす | 連続した挿入パターンによりインデックスの局所性を向上 |
| 最適な用途 | 汎用識別子、トークン、ワンタイムキー | データベース主キー、イベントログ、時系列データ |
| 規格 | RFC 4122 | RFC 9562 (2024) |
過去数十年にわたり、UUID v4はデファクトスタンダードでした。単純でサポートが広く、あらゆる環境で動作します。しかし、UUID v4の値は完全にランダムであるため、B-treeデータベースのインデックスに挿入すると、ランダムなページ分割が発生し、キャッシュの局所性が低下します。高スループットのデータベースでは、これは書き込みパフォーマンスに大きな影響を与える可能性があります。
UUID v7は、最初の48ビットにミリ秒精度のUnixタイムスタンプを組み込むことでこの問題を解決します。これにより、UUID v7の値は作成時間の大まかにソートされ、データベースインデックスの整理が保たれ、挿入パフォーマンスが向上します。UUIDをデータベースの主キーとして使用する新しいシステムを構築している場合、UUID v7が最新のベストプラクティスです。
主な機能
| 機能 | 説明 |
|---|---|
| UUID v4 & v7のサポート | 用途に応じていずれかのバージョンを生成 |
| 一括生成 | ワンクリックで最大100個のUUIDを生成 |
| 大文字切替 | 要件に応じてUUIDを大文字の16進数で出力 |
| ハイフンなしオプション | ハイフンを除去し、コンパクトな32文字の16進数ストリングに |
| クリックしてコピー | 任意のUUIDをクリックしてクリップボードに瞬時にコピー |
| すべてコピー | 改行区切りで生成された全UUIDをコピー |
| 暗号的に安全 | crypto.getRandomValues()を使用して真の乱数を生成 |
| プライバシー重視 | 生成処理はすべてブラウザ内で行われ、サーバーへの送信なし |
実際のユースケース
データベースの主キー
オートインクリメントの整数からUUIDへ切り替えることで、分散システムは調整なしで独立してIDを生成できます。ここでは、時間順序の特性によりデータベースインデックスの効率性を保てるUUID v7が特に役立ちます。
APIリクエストID
着信するすべてのAPIリクエストにUUIDを割り当て、追跡・デバッグ・ログの相関関係に利用します。ユーザーがエラーを報告した際、ログ内でリクエストUUIDを検索すれば、リクエストからレスポンスまでの全ライフサイクルを把握できます。
セッショントークンと認証
UUIDは予測が困難で一意であるため、優れたセッション識別子となります。ユーザーのログイン時にUUID v4を生成し、セッションストアに保存して、以降のリクエストで検証します。
分散型イベントシステム
マイクロサービスアーキテクチャでは、イベントに中央調整役なしでどのサービスからも生成可能な一意の識別子が必要です。UUIDにより、複数のサービスが同時に動作しても、同じイベントIDが重複して生成されることはありません。
ファイルやリソースの名前付け
ユーザーがファイルをアップロードする際、元のファイル名を使用すると、特殊文字が含まれている可能性や既存ファイルと衝突するリスク、内部構造が漏洩する恐れがあります。各ファイルにUUIDを生成し、ストレージのキーとして使用してください。これは生成されたレポート、エクスポートファイル、一時リソースにも適用できます。
テストと開発
開発者はユニットテスト、フィクスチャ、モックデータのために常にサンプルUUIDを必要とします。10個や20個のUUIDをバッチ生成してコピーし、そのままテストファイルやデータベースのシードスクリプトに貼り付けましょう。
データの匿名化
データセット内の個人識別情報を一意性を保ちながら置き換える必要がある場合、UUIDは匿名かつ一意な置換値として機能します。各実IDは正確に1つのUUIDにマッピングされ、このマッピングを逆算することはできません。
タイプとベストプラクティス
- 新しいデータベースの主キーにはUUID v7を使用する。 時間順序のプレフィックスがB-treeインデックスの健全性を保ち、ランダムなUUID v4と比較して書き込みスループットを向上させます。
- トークンやワンタイム識別子にはUUID v4を使用する。 純粋な予測不可能性が必要な場合(セッショントークン、ノンス、一時的なパスワードなど)には、UUID v4が最適です。
- データベースではネイティブのUUID型で保存する。 PostgreSQLにはネイティブの
UUID型があり、36文字ではなく16バイトで値を保存します。これによりストレージが節約され、クエリパフォーマンスも向上します。MySQL 8.0以降でもネイティブのUUID型がサポートされています。 - UUIDをシークレットとして使用しない。 UUID v4の値は推測が困難ですが、暗号的なシークレットを目的として設計されているわけではありません。APIキー、アクセストークン、暗号化キーには、当社のPassword Generatorや適切な鍵導出関数を使用してください。
- UUIDを比較する際はケースを正規化する。 仕様上UUIDはケース非依存ですが、大半のプログラミング言語での文字列比較はケース依存です。比較する前に常に小文字(または大文字)に変換してください。
- ハイフン付きフォーマットを優先する。 ハイフンを含む標準の36文字フォーマットは universally recognized されており、すべてのUUIDライブラリでサポートされています。ハイフンを除去すると4バイト節約できますが、一部のパーサーで互換性問題を引き起こす可能性があります。
よくある質問
UUIDジェネレーターは無料で使えますか?
はい。UUIDジェネレーターは完全無料で、利用制限や登録、隠れたコストはありません。必要なだけ、何度でもUUIDを生成できます。
生成されるUUIDは本当に一意ですか?
UUID v4は122ビットのランダム性を使用するため、生成可能な値は2^122(約5.3 × 10^36)通りあります。重複が生成される確率は極めて小さく、1秒間に数十億個のUUIDを数百万年生成し続けても衝突を期待するのは不可能です。実際のあらゆるアプリケーションにおいて、UUID v4の値は一意として扱って問題ありません。
UUID v4とUUID v7の違いは何ですか?
UUID v4はランダムなデータから生成されます。UUID v7は、ミリ秒精度のUnixタイムスタンプに続いて乱数が配置されます。両方とも一意ですが、UUID v7の値は作成時間でソート可能であるため、データベースのインデックス適性が高くなります。汎用のランダム性が必要な場合はUUID v4を、時間の順序性が重要な場合はUUID v7を選択してください。
ハイフンなしでUUIDを生成できますか?
はい。**ハイフンなし(No Dashes)**オプションを有効にすると、ハイフンを含まない32文字の16進数文字列が生成されます。このフォーマットは特定のAPIやレガシーシステム、コンパクトな保存用途で一般的です。
このツールはオフラインでも使えますか?
ツールはブラウザ内で読み込まれ、内蔵のcrypto.getRandomValues() APIを使用してUUIDを生成します。ページが読み込まれた後はネットワークリクエストなしでUUIDの生成が可能ですが、最初にページを読み込むにはインターネット接続が必要です。
生成したデータはサーバーに送信されますか?
いいえ。すべてのUUID生成処理はブラウザ内のJavaScriptで完結しています。生成されたUUIDは一切サーバーに送信されず、ログや保存もされません。ページを離れると、生成された値はブラウザのメモリ内のみ(コピーしてクリップボードに保存した場合のみクリップボード内)に存在します。