TumblrPocketということでまたしても前回の続きです。iPhoneのGPSはやはりA-GPSなのですが、携帯のそれとはまた若干異なります。携帯の場合には、アンテナ・基地局が使われていましたが、iPhoneの場合には、それに加えて、WiFiのAP(アクセスポイント)が使われています。ふだんあまり意識しないことだとは思いますが、WiFi機器からAPが発見できるようにするということは、APにログインできない設定にしておいても、APのグローバルIPアドレスが参照できるということです。そもそも、IPアドレスは割当を受けた業者が公表されているため、使用されているIPアドレスのおよその位置の特定は可能です。余談ですが、アクセスしてきたユーザーに対してそのユーザーの地域に結びつけた広告を配信する、というサービスは主にこれを利用しています。そこら中に車を転がして(Googleストリートビューのように)APのグローバルIPアドレスを高精度なGPSロガーで取得した情報にひもづけていけば、数メートル単位でマッピングすることができます。実際に、そうして作成したマップ(というよりはデータベース)を販売している業者は世界的にもいくつもあり、日本国内でもすでに複数あります。iPhoneの位置情報機能には、もともとそれらを参照する機能が組み込まれているので、WiFiがONであれば、そして周囲にWiFiのAPが存在すれば、A-GPSに優先して位置情報を取得します。機能としての位置情報APIの内部では隠蔽されていて(これはコソコソ隠している、という意味ではなく、プログラミング用語としての隠蔽です)、それがA-GPSで得られたものか、WiFiから得られたものかを意識する必要がありません。それは同時に、どちらから得られたものかを判別する手段がないということでもあります。ここでGPSの本来の機能に立ち戻って考えてみますが、そもそもGPSの一連のやりとりは、基本的にはクライアント側の「時刻」を補正するもので、あくまでもそこから位置情報が計算できる、というものでした。なると、GPSを使った位置情報のデータの中では、情報を返す側(衛星なり基地局なりAPなり)の時刻は重要なものとなります。A-GPSでも、単に位置情報を取得することだけが重要なのではなく、時計の時刻を補正することも重要な機能として使用されています。(携帯の時計はA-GPSによって補正されています)衛星の時計はもちろん性能が担保されています。基地局の時計は、GPS衛星から取得した時刻によって補正されています。WiFiのAPはどうでしょうか?私自身、会社にも自宅にもWiFiのAPを設定していますが、それらの時刻を、外部のNTPなどを参照して補正される設定にしているかどうか、即答ができません。一般的にもどうでしょうか?家で無線LANを使うためにAP/ルータを買ってきて、時刻の設定を行う人がどれだけいるでしょうか?ではそれがWiFiを利用して位置情報を取得する際にどのような影響を与えるかというと、クライアント機器は、本来のGPSの枠組みから外れ、ごくごくシンプルに位置情報を取得するだけの立場になります。基地局やWiFiAPなどの「仮想GPS衛星」から戻ってくる時刻があてにならないわけですから、時間軸からは切り離されたものになるということです。WiFiのAPを利用することの最大のメリットは、携帯の電波が届かない場所に端末があったとしても、WiFiのAPさえあれ良いわけですから、地下鉄や建物の中などでも位置情報が取得できます。場所にもよりますが、携帯の基地局の数よりもWiFiのAPの方が数が多いような地域では、基地局を使用するよりも細かい位置の特定が可能になるはずです。デメリットは、位置情報を時系列にならべると、精度に非常にバラつきが生じる点です。本来であれば、時系列に並べた上で、ほぼ同じ時刻の位置情報をまとめて、最も精度の高い位置情報を抜き出せば良いはずです。位置情報に含まれる時刻が不正確なので、実際にそれを行うと、壊滅的な軌跡が描かれます(とても見れたものではないです)。この話をすると多くの場合「じゃあiPhoneはGPSとは言えないんじゃないか?」と質問されますが、そのたびに私は「そうとも言えるしそうでないとも言える」と答えています。これは徹底的にユーザーを向いた機能なのです。ユーザーにとっては可能な限り多くの場所で、可能な限りズレのない位置を表すことが求められる機能なのであって、「GPSとはそのようなことが出来るものだ」という認識が既にでき上がっているのです。GPS衛星を使っていようがいまいが、時計がどうとか、そんなことはどうでも良いわけです。した考え方が、Appleの製品については全てにおいて反映されています。これまで長々と書いていましたが、結論としては、iPhoneはGPSロガーにはなりえません(「おまえが言うな!」と言われそうですが)。アプリ開発を続ける中で、この問題は常に関係者間で議論されてきました。実際に使用する人から見た場合に、位置のバラつきは、アプリの性能の悪さとしか見えないからです。「わざわざク○アプリと呼ばれるために作る必要があるのか?」という意見もありました。私はむしろ、Apple的な考え方をすべきではないかと思いました。iPhoneを持っている人たちに対して、iPhoneでできること(と同時に専用機でないことの限界)を見てもらいたい、まずはGPSロギングの面白さを感じてもらいたいと考えたのです。携帯では面白さが伝わるほどの精度が出ませんが、iPhoneであればその面白さを伝えることのできるレベルにあると思います。iPhoneの機能はもともと、これまでの携帯とは違う「新しい経験」を楽しむということを第一に想定しているものだと思うのです。iPhoneそのものが全くもって完全とは言い難い機械ですが、完全ではなくともこれだけ人の心をひきつけるわけですから、「完全じゃないじゃないか」という批判には意味がないのです。そこで、「完全にGPSロガーであること」を追求するのはやめました。精度を求めるのであれば、GPSロガーを買った方がハッピーになれます。ほとんどのiPhoneユーザーにとって、それは一番重要なところではありません。iPhoneでなければ意味がないのです。ちなみに、海外の(ほとんどが海外のものですが)GPSロガーアプリの多くは、移動中の軌跡を見せているものは少ないのです。iPhoneに貯めておいたデータを後で一括送信し、受け取ったサーバ側で、不要と思われるデータをガツガツ間引いた上で表示するというものが主流です。これであれば、最終的に「きれいな」軌跡を見ることができるでしょう。(この方式を検討したことも事実です)しかし、その場で見れなければ、楽しみは半減すると思うのです。「きれいでなくてもいいからその場で見せろよ」と思うのですよね。技術担当取締役を中心に技術者が書いております。プログラミング・サーバー/クラウド技術などについての小ネタから、システム化にまつわるあれこれや、プログラマー教育、そこから発生する様々な考え方などまでご紹介。