なぜiOSでUDIDが必要とされていたのか、メモ

iOSやその開発事情に詳しいと言える状態にはないので、調査を兼ねて書く。

Apple Sneaks A Big Change Into iOS 5: Phasing Out Developer Access To The UDID – TechCrunch
http://wirelesswire.jp/Watching_World/201108221335.html

上記の「iOSでUDIDの利用が禁止」というニュースを聞いた時、正直TL上にこんなにいっぱい反応が貼り出されるとは思っていなかった。さすがにUDIDをいじるのはまずいよね、っていうコンセンサスは開発者の間では常識的部類に入ってくるのだろうと楽観的に捉えていたのかもしれない。

以下、なぜUDIDがそのようにスマートフォン開発者に利用されてきたのかについて、調べた限りでまとめてみた。

アプリケーションのサーバとのセッション保持

いわゆるかんたんログインの実現のために利用する、というもの。
たぶんほとんどのUDID批判者はこの点について最初に批判していたと思われる。

UDIDがこのような用途に向かないことは、すぐに分かる。

iOSの開発トレーニングでUDIDを利用していたことが伺えるツイート。

ということで、UDIDの利用は半ば常識化していたことが読み取れる。

ただし、これには以下のツイートもあったので、そもそもAppleが勧めてるようにみえたんじゃないのどうなの?という疑問もちょっとは残る。


じゃあ、かんたんログインできないし、ユーザ登録してもらわなきゃいけなくて、スマフォの画面でそれやらせる?むりだろ、という話になってしまうかもしれないが、そもそもそんなデバイス固有のIDを使う理由がない。

アプリ内でのサーバとのセッション管理に関して、UDIDを用いずに利用する方法について

これでいい。UUIDの生成さえセキュアであれば永続化Cookieによるセッション管理と同等だ。

つまり、ガラケーIDの時と違い(当時はCookieサポートしていない端末が数多くあった)、回避策はすぐあるわけだ。ログインさせるのが嫌だ、という理由にはならない。トレーニングという点ではUDIDを使った方が簡単に見えるかもしれんけど、非セキュアな方法をあたりまえのものとしてトレーニングしてよいわけがない。


なお、上記の方法ではKeychainを使っており、Keychainはアプリ間では情報の共有ができない(正確には同一のプロビジョニングIDをもっていればできるが、他社のアプリの情報を読めたりはしない)。つまり、アプリをまたがってセッションを共有したいという用途には用いることはできない。

行動トラッキングによるターゲティング広告

でもアプリをまたがってセッションを特定したいってのはどういう時なんだ?

最初に思いつくのは、行動トラッキングによるターゲティング広告になる。

現在スマートフォンのアプリ向けにいろいろベンチャー・大手含めてアドネットワークが参入している。TLの反応を見ても、このへんの商売への影響を心配している声が強かったようだ。

一見、3rd Party Cookieによるトラッキングの話と似ているじゃないのか、と思う。しかしながら、通常ブラウザは3rd party Cookieの受け入れはオプトアウトできるようになっている。だがUDIDの場合はそれができない。アプリケーションレベルで開発者の倫理により同意ダイアログを出すことは可能だろうけど、アプリに入り込んでいるターゲット広告がそれを出すわけがない。だから、この目的(行動トラッキング)によるUDIDの利用の正当性にはプライバシー保護上明確にNOと言われる可能性が高いし、歴史上そのような試みはほとんど糾弾されて来ている。スマフォは例外で特別であるという理由が存在しない。

つまりこのような行動トラッキングによる広告は、そもそもビジネスモデル自体が危うい。それが今回、Appleの(とりあえずは健全な)判断により現れたとすれば、そいつはまあ自己責任でないかといえる。

なおこの記事には正直びっくりした。いやこれくらい想定してないといかんのだろうが。

/ WSJ日本版 - jp.WSJ.com - Wsj.com

携帯アプリへと事業を拡大しつつある、エピック・メディア・グループ傘下のネット広告ネットワーク、トラフィックマーケットプレイスのメガン・オホレラン氏は、「携帯の素晴らしいところは、UDIDをクッキーのようには削除できないことだ。われわれは、UDIDを通じて、すべてを追跡する」と語る。

リワード広告

ただし、ことはそう単純でもないことが、調べているうちにわかってきた。
どちらかというと、影響があるのは行動トラッキングによる広告などではなく、違う広告分類のものらしい。

「リワード広告」というキーワードで調査した。

こちらはiPhone上でリワード広告を行っているTapjoy。

Has Tapjoy solved monetization of free apps on the iPhone and Android? – TechCrunch

They track the sale using the device owner’s Unique Device Identifier (UDID) so there is no confusion on whether the app is downloaded or not.

その他にも、スマートフォン上でリワード広告を提供している国内サービス。

http://www.gree.co.jp/news/press/2011/0516_03.html
http://www.venturenow.jp/news/2011/04/07/1711_010512.html

(訂正:こちらはスマフォ向けではなかった。が、エンジニア向けにリワード広告について分かりやすい図が書いてある)
リワード広告システムPoncanの仕組みと実例/ソーシャルアプリ勉強会(第2回)


リワード広告自体は一般的な広告提供の仕組みであると言えるけれども、これがスマートフォンの場合は、アプリのインストールに対して、アフィリエイトのような形で、ポイントなどを付与する。広告主はアプリのダウンロードが増えて満足、広告を掲載したアプリは広告料が入ってニコニコ、ユーザはポイントがもらえてラッキー、という仕組み。

この際に、ユーザにポイントを付与するためにアプリをダウンロードしたクライアントを特定する必要があるのだが、これにUDIDを用いている(少なくともTapjoyはそうしている、と書いてある)。

これを上記の行動トラッキングの場合と比較すると、ユーザのインタラクションが介在しているだけに、プライバシーの面からアドネットワークのプロバイダーの不誠実を訴えるのは難しいケースなのではないかと、個人的に感じた。このサービス自体がデバイスにアプリをインストールしたかどうかでポイントがもらえることを明確に宣言しており、ユーザはそれを認識しているのだから、それにまつわるデバイス情報を取得するのは当然だろ、という理論武装はそれなりにありえるからだ。

しかしながらそれにおいても、本来なら、ユーザとアプリの紐付けを行うのをUDIDというデバイス固有IDで行う必要はないはずだ。実際Webサイトのリワード広告はサイト間のセッションのやりとりだけで固有IDなどは用いていない。

しかしながら、どうもiOS上でアプリ間でスマートにセッションを共有する仕組みがなさそうなのである。
これについては、ただ単に自分の知識が足りないだけかもしれない。わからない。
これができない以上、スマフォアプリのリワード広告のシステムは作ることができない、ということになる。

じゃあUDID使っていいじゃん、っていう結論には、どう考えても落ちるはずはないのだけど、はてさて、だからといってこのようなビジネスモデル自体にダメだしするには、さすがに根拠がない。一番いいのはAppleがアプリ間でセッションを共有するための仕組みを整えてくれることだろうけど、それがiOS5およびその後可能になるのかどうかは、これまたわからない。

まとめ

なお、今回は、もともと興味を持っていた分野であったので、ちょっと時間を取ったけど、まだ浅い調査だけのメモ程度で、だからどうすべきか、までには至っていない。

ただし、今回わかったのは、ただ単にかんたんログインなどの技術者の知識レベルの話ではなく、すでにスマートフォンのアプリという成長市場で、一つのエコシステムができ上がりつつある中での廃止のニュースだったのが、各方面に波紋を巻き起こしているということだった。

リワード広告のエコシステム自体は、市場の活性化に必要なのは理解できるが、UDIDに依存した実装に関しては可能ならば早急に対策をしなければいけないだろう。で、Appleはそれを強制した。それは実はリワード広告というビジネス自体を潰したいという意図があるのかどうか知らない。またiAdがUDIDをトラッキングのために独占して利用するのか、そしてどれほど悪意を持ち得るのかもわからない。知らないわからないことだらけだったな、というのしかわからなかった、という、まとめにならないまとめ。

追記

Appleがリワード広告自体を締め出そうとしているのではないか?というのが伺える記事について、コメントしていただいた。
Appleが景品付きアプリダウンロードを締め付けへ | TechCrunch Japan

追記2

スマフォのリワード広告の実装について、UDIDを利用する以外の代替案について考えてみた。

スマフォのリワード広告におけるUDIDに依存しない設計案 - snippets from shinichitomita’s journal

まあ、上記のようにAppleというプラットフォーマーがそのビジネス自体を禁止したい意図がある場合は、こんなことをしても意味がないが、もしこれがAndroidなどでも同じような状況なのだとしたら、少しは役に立つかもしれない