2014/05/05

iBeaconのサンプルコードにて、ユニークなビーコンのUUIDを作成する「uuidgen」コマンドの検証

「iOS位置情報プログラミング」のiBeaconのサンプルコードにて、ビーコンごとに他のビーコンと絶対に重複しないIDを設定する必要があります。同じビーコンのUUIDが他にもあれば、自分の作ったシステムが、他のビーコンでも動作してしまう可能性があるためです。


そのユニークなIDを作成するために「uuidgen」というコマンドを使います。「uuidgen」は、ビーコン、iOSでの制作上の特別なプログラムではなく、元々、Unix系のシステムにあるコマンドです。

このコマンドで、生成されるUUIDが、「どれくらい重複しないか」について、下記のページに記載があります。

UUIDとは
http://itpro.nikkeibp.co.jp/article/Keyword/20090206/324330/

それによると、「仮に毎秒数億個以上のスピードでUUIDを作ったとしても、人の一生どころか宇宙が誕生してから現在に至るまでの年月(約137億年)作り続けても重複などまずありえないほどです。」ということだそうです。

本当に重複が無いのかどうかを検証してみました。そんなに沢山の数での検証はできないので、10万程度のUUIDを生成して、重複が無いのかを調べてみます。

まず、シェルスクリプトで、10万回、uuidgenコマンドを実行して、生成されたUUIDをresult.txtに保存します。

#!/bin/bash 
i=0
while [ $i -lt 100000 ]  # $i < 100000
do
  uuidgen >> result.txt
  i=`expr $i + 1`
done

上記のシェルスクリプトをtest.shという名前で保存をして、実行します。その後、生成されたUUIDを保存しているresult.txtを確認します。

$ chmod +x test.sh
$ ./test.sh

$ cat result.txt 
2CF1D902-A195-4EAC-B2EC-CB8F2D4214C8
EFE85EAE-CE9E-4B48-8F07-88B1678FCC7B
950C03D2-89E2-44AB-BA1C-88A68B75DF0F
56735BEA-07B3-4009-AF18-FC2D62389905
0DC7CD58-D87D-4532-9F40-94123F81BB53
6D85F922-C7EA-40C6-8476-8D578BD210C7
B1336078-50F6-4BB3-AE6C-5FCB52B08C40
以下続く

$ wc result.txt 
  100000  100000  3703885 result.txt

10万行、10万個のテキスト、3.5MBの内容があることがわかります。この10万行に重複した行があるかどうかを調べます。

$ uniq -d result.txt 

$ 

重複する行はありませんでした。10万個のUUIDには重複が無いことが確認できました。



0 件のコメント:

人気の投稿 (過去 30 日間)