F.Ko-Jiの「一秒後は未来」

Firefox 3.5の位置情報通知機能の仕組みとサンプル

Firefox3.5から「位置情報通知機能」が使えるようになりました。これはIPアドレスや無線LANアクセスポイントの情報を利用して、GPSなしにクライアントの位置情報を取得するものです。

早速サンプルを作って試してみました。位置情報を取得してGoogle Maps APIで地図にその位置を表示します。ちなみにサンプルは iPhone の Safari でも動作します。

位置情報通知機能の仕組み

この機能は Google Location Service を利用しているそうです。サイト側がユーザの位置情報を取得するには、JavaScriptで次のような処理を実装する必要があります。

navigator.geolocation.getCurrentPosition(function(position) {
    // コールバック処理
});

» Using geolocation – MDC

ページ閲覧中に位置情報取得の要求が発生すると、Firefox3.5のタブの下に「位置情報を通知してよいかどうか」の選択を求めるダイアログが表示されます。

Firefox3.5位置情報通知

ここで「許可」を選択すると、Firefoxから https://www.google.com/loc/json というエンドポイントに対してデータが送信されます。正確にはこのリクエストの前に http://ocsp.thawte.com/ に対して OCSP のリクエストが送信されます。OCSP というのは Online Certificate Status Protocol というものだそうです。

https://www.google.com/loc/json に対しては次のようなデータが送信されています。

{
    "version":"1.1.0",
    "access_token":"xxxx",
    "wifi_towers":[
        {
            "mac_address":"xx-xx-xx-xx-xx-xx",
            "ssid":"xxxxxx",
            "signal_strength":-53
        },
        {
            "mac_address":"yy-yy-yy-yy-yy-yy",
            "ssid":"yyyyyy",
            "signal_strength":-81
        }
    ]
}

上記のように自宅で試すと無線LANのアクセスポイント情報が2つ送信されていました。一方は自宅のもので、もう一方はマンションの他の部屋のものだと思います。どうやら接続の有無に関わらず、PCが検知しているアクセスポイントの情報を送信しているようです。

Google Location Service に対するリクエストが成功すると、位置情報が JSON フォーマットで返ってきます。この位置情報通知機能は W3C の Geolocation API に準じているそうです。ドキュメントによると、

  • coords.latitude (緯度)
  • coords.longitude (経度)
  • coords.altitude (高度 ※)
  • coords.accuracy (精度)
  • coords.altitudeAccuracy (高度の精度※)
  • coords.heading (方位 ※)
  • coords.speed (秒速 ※)
  • timestamp (タイムスタンプ)

といった情報が返されるようです(「※」で示している項目は、値が返ってきませんでした)。緯度と経度がどのくらいの精度で取得できたかが分かります。

この機能で利用される無線LANアクセスポイントの場合は、位置情報自体はすでに収集されているという点で、ケータイなどに搭載されているGPSとは少し違います。ケータイのGPSの場合は使うときに初めて位置情報が通知されますから。

当然ユーザーが「許可」しないとブラウザからMACアドレスなどの情報は送信されないのですが、自宅のアクセスポイントの位置情報の収集許可なんてしてないし、やや気持ち悪い感じは残ります。

» 次世代ブラウザ Firefox | 高速・安全・カスタマイズ自在な無料ブラウザ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など