スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GUID(UUID)とは

昨日の記事にあったGUIDを掘り下げ。



 GUIDとは、128ビットの整数値からなる、データを一意に識別するために用いられる識別子のことである。
 GUIDは、絶対的に一意であることが保証されてるわけではないが、実用上はほぼ、世界中に唯一とみなして扱って困難がないといわれている
 同様の識別子が一般的にはUUID(Universally Unique Identifer)として扱われている。UUIDはRFC 4122で規定されている。

   (IT用語辞典バイナリより引用)

 ということで、GUID ≒ UUID らしい。

 UUIDなら、Javaで簡単に作れるじゃん。
 ということで、UUID作成のコードは下記。

■ソース

import java.util.UUID;
public class UUIDGEN {
  public static void main(String[] args){
    UUID id = UUID.randomUUID();
    System.out.println(id.toString());
  }
}

 注:java.util.UUIDはJava5からの導入。

■実行結果
8a041209-b359-4789-9e7b-fa5d578dbd3f


 ちなみに、UUIDは実装方式が5つあるのですが、java.util.UUID.randomUUIDはタイプ4の実装のようです。

 UUIDの説明によく「世界中に唯一」と記載がありますが、基本的にこれはタイプ1での実装の場合で、タイプ4だと、衝突の可能性がありそうです。
 タイプ1の場合は時刻とMACアドレスを使用して生成するので、ほぼ世界に1つといえますが、タイプ4の場合は、全ての値を乱数で決定する方式のためタイプ1に比べて衝突の可能性は高くなります。
 まぁ、よほど質の悪い乱数でなければタイプ4でも実用上は問題ないとは思います。

 この辺りのUUIDの実装は下記参考の項にあるdayflowerさんのブログにかなり詳細に書かれていました。
 勉強になります。


■GUIDとUUIDの違い
 Wikipediaに「UUIDの実装として最も広く使われているのは、マイクロソフトによるグローバル一意識別子 (GUID)」とあるので、UUIDは標準化仕様で、それを実装したものの1つがGUIDということになるもよう。
仕様実装
UUIDGUID
   java.util.UUID
   など


 ちなみに、dayflowerさんの記事によると、GUIDは内部構造の固定値部分が一部 RFC 4122と異なるらしい。
 ということで、GUIDを作成しろといわれたときは、独自にUUIDを作るより、GUIDGENなどで生成しておいた方が無難かも。

■参考
daily dayflower

RFC4122
 
Wikipedia 汎用一意識別子

Wikipedia GUID
 
java.util.UUIDのJavaDoc
 
以上。


関連 「WiX入門 第2回 何もしないインストーラの作成」
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

検索フォーム
プロフィール

takuan93

Author:takuan93
本ブログの説明書→「ReadMe」

管理者に連絡

カテゴリ
WiX (5)
Ant (1)
フリーエリア
最新記事
カウンター
カレンダー
06 | 2018/07 | 08
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。