「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に保存します。
上記のシェルスクリプトをtest.shという名前で保存をして、実行します。その後、生成されたUUIDを保存しているresult.txtを確認します。
10万行、10万個のテキスト、3.5MBの内容があることがわかります。この10万行に重複した行があるかどうかを調べます。
重複する行はありませんでした。10万個の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 件のコメント:
コメントを投稿