2012/01/27

AndroidでUUIDを作成する方法


世界中でただ1つの重複しない値、Universally Unique Identifier(UUID)
を作成する方法です。

Webサーバと連携するようなアプリケーションを作成している場合、サーバ側で
利用するユーザを特定したいケースがよくあります。

ユーザを特定するために採用される方法には、ユーザIDとパスワードによるアカウ
ント管理等がメジャーですが、ユーザにとってはアカウントを登録しなければならず
手間がかかります。
ユーザを特定したいだけで、アカウントを作成するまでもない場合にUUIDは効果
的です。

下記作成方法です。

String id = UUID.randomUUID().toString();

参考:http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

ここで得たUUIDをファイルに保存する等して毎回使い回せば、サービスを利用
するユーザを特定することができるでしょう。
※ただし、アプリケーションが一度アンインストールされるとアプリデータ(UUID)
 も同時に削除されてしまいます。
 再インストールしたとしても次回生成されるUUIDは前回とは異なるものとなります。
 UUIDを採用する場合、このケースを許容できるかできないかは重要です。

ユーザを特定するという意味においては下記の値も利用できそうですが、それ
ぞれ一長一短があり、どれを採用するかは短所を把握しておく必要があります。

●IMEI(International Mobile Equipment Identifier)
携帯電話1つ1つに割り当てられた端末識別番号になります。
端末を特定、識別することに向いています。
注意すべきは「個人を特定するのには向いていない」ということです。
・1人で複数台の端末を持っている場合がある
・端末が他人に譲渡される可能性(中古売買等)
・携帯電話の買い替えでIMEIは変化する

●IMSI(International Mobile Subscriber Identify)
SIMカードに割り当てられる国際移動体加入者識別番号です。

●ICCID(IC Card ID)
SIMカードのシリアル番号です。
SIMカード関係の番号についても個人を特定するには向いていません。
・SIMカードを挿さないで端末を使用していた場合
・SIMカードは交換可能

●MACアドレス(Media Access Control Address)
ネットワーク機器に割り当てられたアドレスです。
端末ごとに一意な値となりますが、端末のネットワーク環境によってはMAC
アドレスを返さないケースがあります。

●ANDROID_ID
Android端末ごとに一意な値です。端末をファクトリリセットすると値が更新
されます。
Android2.2以前は一意性が確保されていません。
また、一部のメーカー製端末では全て同じANDROID_IDを返すというバグがあります。

他にも電話番号も候補として挙げられます。

上記を踏まえて、プログラムが対象の何を特定したいのか(端末なのか個人なのか?)
を明確にすることが大切です。
また、個人情報に関わるものもあるのでセキュリティとプライバシー問題には
注意しましょう。

以上です。