iPod touchでGPS(2)

(iPod touchでホントのGPSを使う方法は→iPod touchでホントのGPS(1)

iPod touchのマップアプリでGPSみたいなことができちゃう理由

 ネットワークに繋がる機器類には必ず「MACアドレス」という番号が振られています。全世界のネットワーク機器には1台1台固有のMACアドレスが割り当てられていて、これを元に機器間のデータの送受信が行われています。似たような番号にIPアドレスってのがありますが、これはネットに接続したときに割り当てられるもので接続するたびにいろんな番号が与えられたりする。これに対してMACアドレスはその機器が製造されたときに決められる番号で基本的には変更されません。パソコンや無線LANの機器に「32:61:3C:4E:B6:05」みたいな番号が書いてあるはず。これがMACアドレス。もちろん無線LANの機器にも必ずMACアドレスが付いてます。

MACアドレス。製造時に決められるので機器に印刷してある

 ところで、パソコンを無線LANに接続するときに自分の周囲にある無線LANアクセスポイントの一覧が表示できます。隣近所に無線LANを使っている家があると何個もアクセスポイントが見つかります。その中から接続したいアクセスポイントを選ぶとWEPキーとかWPAパスワードみたいな暗号通信用の鍵を入力しろとか言われて、それが正しければめでたく無線LAN接続成功となるわけですね。

無線LANアクセスポイントの一覧
無線LANアクセスポイントの一覧

パソコン「私はMACアドレス123のパソコンです!この近くにアクセスポイントはありませんかぁ?」
アクセスポイントA「はーい、123さん、私はMACアドレス456のアクセスポイントです。」
アクセスポイントB「はーい、123さん、私はMACアドレス789のアクセスポイントです。」
パソコン「おっ、私はMACアドレス123のパソコンですが、789さんに接続してもいいですか?」
アクセスポイントB「はいはい789です。123さん、暗号鍵を言ってみ」
パソコン「はーい、123です。えっと、789さん、暗号鍵はABCDEFGですか?」
アクセスポイント「はいはい789です。123さん、暗号鍵が違います。接続は許可しません!」

擬人化するとこんな感じ。近くにいる別の無線機器と混信しないようにお互いにMACアドレスを使って相手を識別しながら会話するらしい。

ということは接続が許可されてない無線LANアクセスポイントでもそれのMACアドレスくらいなら知ることはできる。というかこれがわからないと接続を許可するかどうかの会話すら成立しなくなる。これ重要ね。そして無線LANの電波到達距離はせいぜい10mとか20mといった程度。これも重要ね。

 iPod touchのマップアプリがやっているGPS機能(みたいなもの)の仕掛けは、次のようなもんらしい。まずiPod touchは周囲にある無線LANアクセスポイントのMACアドレスを調べる(さっき書いたように無線LANアクセスポイントのMACアドレス程度ならそこへの接続が許可されているかどうかにかかわらず知ることができる)。そして無線LANアクセスポイントのMACアドレスとその設置場所の情報を集め続けているskyhook wirelessという会社のデータベースにアクセスして、そのMACアドレスの無線LANアクセスポイントが設置されている場所を調べる。もしデータベースにMACアドレスとその設置場所のデータが登録されていれば、自分のいる場所はその周囲数十mの範囲だということがわかる。さらに複数の無線LANアクセスポイントがあれば、それぞれの場所との関係からさらに自分の位置を詳細に絞り込む計算ができる。というわけ。

  • 自分の周囲に無線LANアクセスポイントがあること(できれば複数)。
  • そのアクセスポイントのMACアドレスと場所の情報がskyhook wireless社のデータベースに登録されていること。
  • iPod touchがネットに接続して(skyhook社のデータベースにアクセスできる状態になって)いること。

 この条件が揃えば、iPod touchのマップアプリは自分の位置を特定することができる。なるほど、なるほど。うまいこと考えたもんだ。

 ではskyhook wireless社はどうやって無線LANアクセスポイントのMACアドレスとその位置情報を集めているのか。これが何と地道な作業。skyhook wireless社は車を走らせて車の位置とそのとき受信できた無線LANアクセスポイントのMACアドレスをセットで集め続けているらしい。地味だ、地味すぎる。世界中のあちこちに車を走らせてるらしい。地味だ、地味すぎる。skyhook wireless社が世界中の無線LANアクセスポイントの設置場所情報を収集した成果は同社サイトの「Coverage」(http://www.skyhookwireless.com/howitworks/coverage.php)で見ることができる。日本も東京23区や川崎、横浜、つくば、名古屋、大阪、仙台はかなり細かく調査したらしい。skyhook wireless社の人は移動中もまじめに記録を取り続けたのだろうか、東京-横浜-名古屋-京都-大阪を結ぶ幹線道路沿いもカバーされている。

 もちろんskyhook wireless社ではサイト上で無線LANアクセスポイントのMACアドレスとその位置情報についての情報提供も受け付けている(http://www.skyhookwireless.com/howitworks/submit_ap.php)。自分が見つけた無線LANアクセスポイントのMACアドレスと、その場所を入力して、自分のメールアドレスとあとは画面上にあるイタズラ防止用の文字列を入力すれば情報提供完了。数週間くらいで登録される。登録されれば、そのアクセスポイントの周囲でもiPod touchのGPS(みたいな)機能が使えるようになる。早速我が家の無線LANアクセスポイントのMACアドレスを調べて、skyhook wireless社のサイトに登録してみた。情報提供したときに「情報提供ありがとう」みたいなメールが届くが、登録されたとかされないとかの結果は通知されないみたい。情報提供から1週間ほどして自宅でiPod touchのマップアプリを起動したら、おおっ、ちゃんとオレんちを示してくれたヨ。