情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでUUIDを生成する

UUIDを生成するにはUUIDのバージョンに応じてuuidモジュールのuuid.v1関数やuuid.v4関数を使用します。

UUIDバージョン1

バージョン1のUUIDを生成するにはuuid.v1関数を使用します。

var uuid = require('uuid');

var u = uuid.v1({
    node: [0X01, 0X02, 0X03, 0X04, 0X05, 0X06], 
    clockseq: 0X1234, 
    msecs: new Date(), 
    nsecs: 1234
}, buf, 0);

第1引数にオプションを指定します。この引数は指定しなくても構いません。

オプションには下のようなものがあります。

  • node・・・ノードIDを6バイトの配列として指定します。デフォルトはランダムな値です。
  • clockseq・・・クロックシーケンスを0X0000から0X3FFFまでの整数として指定します。デフォルトは内部的に管理されている値です。
  • msecs・・・時刻を指定します。デフォルトは現在の時刻です。
  • nsecs・・・100ナノ秒単位の追加の時刻を0から9999までの整数として指定します。ただし、msecsオプションが指定されていない場合には無視されます。デフォルトは内部的に管理されている値です。

第2引数に生成されたUUIDを格納する配列かバッファを指定します。この引数は指定しなくても構いません。

第3引数に第2引数の配列かバッファにUUIDの格納を開始するインデックスを指定します。この引数は指定しなくても構いません。

返り値として第2引数を指定した場合には第2引数の配列かバッファが得られ、指定しなかった場合にはUUIDが文字列として得られます。

UUIDバージョン4

バージョン4のUUIDを生成するにはuuid.v4関数を使用します。

var u = uuid.v4({
    random: [0X01, 0X02, 0X03, 0X04, 0X05, 0X06, 0X07, 0X08, 0X09, 0X0A, 0X0B, 0X0C, 0X0D, 0X0E, 0X0F]
    //or
    rng: uuid.mathRNG
}, buf, 0);

第1引数にオプションを指定します。この引数は指定しなくても構いません。

オプションには下のようなものがあります。

  • random・・・ランダムな値を16バイトの配列として指定します。デフォルトはランダムな値です。
  • rng・・・ランダムな値を16バイトの配列として生成する関数を指定します。この関数は返り値として16バイトの配列を返さなければなりません。また、uuidモジュールに組み込まれている関数を使用することもできます。uuidモジュールに組み込まれている関数にはuuid.mathRNG関数とuuid.nodeRNG関数があります。

第2引数に生成されたUUIDを格納する配列かバッファを指定します。この引数は指定しなくても構いません。

第3引数に第2引数の配列かバッファにUUIDの格納を開始するインデックスを指定します。この引数は指定しなくても構いません。

返り値として第2引数を指定した場合には第2引数の配列かバッファが得られ、指定しなかった場合にはUUIDが文字列として得られます。

サンプルコード1

uuid.js

var uuid = require('uuid');

console.log(uuid.v1({
    msecs: new Date(), 
    nsecs: 1234
}));
console.log(uuid.v1({
    msecs: new Date(1990, 2, 13), 
    nsecs: 5678
}));
console.log(uuid.v4());

var array = new Array(48);
uuid.v1({
    msecs: new Date(), 
    nsecs: 1234
}, array, 0);
uuid.v1({
    msecs: new Date(1990, 2, 13), 
    nsecs: 5678
}, array, 16);
uuid.v4({}, array, 32);
console.log(array);

使用パッケージ

  • uuid
    npm install uuidでインストールします。

実行結果

C:\work\node>node uuid.js
000004d2-0000-1000-9113-333465bcddf4
0000162e-0000-1000-9114-333465bcddf4
a7dee8bc-e7e4-489a-bb09-ec0d054c99f9
[ 0,
  0,
  4,
  210,
  0,
  0,
  16,
  0,
  145,
  20,
  51,
  52,
  101,
  188,
  221,
  244,
  0,
  0,
  22,
  46,
  0,
  0,
  16,
  0,
  145,
  21,
  51,
  52,
  101,
  188,
  221,
  244,
  255,
  5,
  239,
  241,
  163,
  56,
  76,
  24,
  161,
  83,
  154,
  196,
  161,
  194,
  18,
  247 ]

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js