AdvertisingIdentifierの現状の評価

iOS担当エンジニア内田です。


iOS6がついに先月19日にリリースされましたね!
マップやマップについて混沌とした状況が続いており1ネットウォッチャーとしては
興味深く見守っていますが、やはり開発者としては
前々より噂されていたトラッキング用の広告IDが気になるところです。


検証自体は実はずいぶん前に終わらせていたのですが今回Blog編集長から
NDA明けたならBlogに書きなよ!とお誘いをうけたので公開いたします。


まず、今回追加されたトラッキング用の広告ID(以下adID)と、主要な
ラッキングに用いる事の出来るIDの比較は下記の通りです。


 アプリ間共有復元した場合でも
値は変わらないか
ユーザはオプトアウトできるか
UDID×
UUID×××
adID×情報>アドバタイズ>Ad Trackingを制限
でオプトアウト可能
openUDID××


こうしてみるとadIDは他のIDと比較するとプライバシーに配慮された設計に見えますね。
しかしadIDは以下の2点の問題点があるためまだ使用するべきではないと考えます。
  1. オプトアウトが実質機能していない
  2. UDIDの問題点がほぼ解決していない

まず1点目オプトアウトについて、adIDはソース中で下記の様に呼び出す事で

値を取得する事が出来ます。


#import 

    ASIdentifierManager *asId = [ASIdentifierManager sharedManager];
    NSUUID *uuid    = asId.advertisingIdentifier;
    NSString *sUuid = uuid.UUIDString;
    NSLog(@"%d",asId.advertisingTrackingEnabled);
    NSLog(@"%@",sUuid);

ASIdentifierManagerクラスのadvertisingTrackingEnabledプロパティには
エンドユーザがAd Trackingを制限しているかのBOOL値が入っています。
appleの方針としてはこの値がNOの場合、adIDをトラッキング用途で使用しない様に
注意喚起していますが、要は開発者の良心に依存しており開発者が
advertisingTrackingEnabledの値を無視しようと思えば無視できてしまうということです。

Webで一般的なcookieでのトラッキングを例に挙げると、
safariではcookieの受け入れを「しない」に設定した場合、サイトの管理者がトラッキング
を行いたいと考えていてもcookieを書き込む事が出来ない仕様で、
この様に動作する事がユーザが期待した動作だと考えます。

過去に起きた事例を思い返すと、adIDのこの動作は筋が悪いです。




次に2点目、UDIDの問題点がほぼ解決していない点について。

そもそもUDIDのどの様な点が問題視されていたかというと
  • 名寄せによって、個人を識別しえる可能性がcookieと比較し高い点
  • 恒久的に値が変更できない点
  • ユーザ認証等に使用している場合、値の差し替えで別のユーザになりすます事が可能な点

大雑把に上記の様な問題点があります。

adIDによって改善されるのは

  • 恒久的に値が変更できない点

これだけです。

しかも復元(工場出荷状態にもどす)を行ってようやくIDが変わるという、かなりユーザにとって

ハードルの高い操作を行わなければならず、実質ほぼ恒久的に値が変わらないIDであると

いえます。



appleの推奨するトラッキング 方法という事で、今後多くの開発者がadIDを使用すると

思いますが、現状を鑑みるとまだまだadIDを使用するのは時期尚早だというのが私の見解です。