この記事は長いので、まず結論から。
・MVNOでハイドラをしたければiPhone一択。
・ドコモのAndroidスマホ+MVNOの組み合わせはNG。
・auのAndroidスマホ+MVNOの組み合わせはOK。
・SIMフリースマホ+MVNOの組み合わせはOK。
・Softbankは不明。情報求む。
この先メチャ長いですが、最後まで読めば位置情報の測位メカニズムに詳しくなれること請け合いです(笑)
--------------------------------------------------
みんカラの関連アプリ、ハイタッチdrive。
色々なところへドライブして、バッヂをコレクションしていくのは結構楽しいです。
しかし最近ケータイの契約をドコモからMVNOへ変更したことで、ハイドラが上手く動作しなくなりました。
今回はハイドラにおけるMVNOの問題点を考えてみます。
(MVNOとは簡単に言えば格安SIMのことです。IIJやmineoやイオンモバイル等です。)
--------------------------------------------------
上記でハイドラが動作しなくなったと書いていますが、実際にはアプリ自体は動作しています。
ただ現在地の測位に非常に時間がかかるようになり、走行がなかなか記録されないという状態になっています。
これはドコモが販売しているAndroidスマホとMVNOの組み合わせのときにのみ起こる現象です。
SIMフリーのスマホやauのスマホ、iPhoneではこの現象は起きません。
--------------------------------------------------
AndroidもiPhoneも、現在地の測位は基本的にGPSで行っています。
実はGPSというのはとても古い規格で、人工衛星から送られてくるデータは時報(時刻情報)と天体歴(軌道情報)だけです。
人工衛星は50bpsで1フレーム(1500bit)の情報を送ってきます。つまり1フレームの取り込みには30秒かかります。
また現在地を測位するためには、原理上4つの人工衛星からデータを受信する必要があります。
4つの衛星から時刻情報を得ることができると、そこから計算で現在地を計算することができます。
これが現在地を測位する仕組みです。
(詳しくはWikipedia参照)
--------------------------------------------------
人工衛星からは軌道情報が2種類送信されており、その内の1つが全衛星についての概略軌道情報(アルマナック/almanac)、もう1つが自衛星の精密軌道情報(エフェメリス/ephemeris)です。
スマホが人工衛星からのデータを受信すると、まずはアルマナックを分析し、GPSに関与する全衛星の概算軌道を取得します。
次にアルマナックから得られた概算軌道を元に個々の衛星を見つけ、その個々の衛星からエフェメリスと時刻情報を取得します。
この時刻情報が4つ得られると(つまり4つの衛星から時刻情報を受信すると)現在地が測位できるというわけです。
ちなみにアルマナックは25分割されて送られてきます。
つまりアルマナックを全て受信するには25フレームが必要であり、25フレーム x 30秒 = 750秒(12.5分)が必要になります。
--------------------------------------------------
アルマナックとエフェメリスデータは、1度取得すればある程度情報が維持されます。
具体的にいうと、アルマナックは1度取得すれば1日は有効(その情報が使いまわしできる状態)で、エフェメリスは1度取得すれば2~4時間は有効です。
特にエフェメリスが有効ということは、ある衛星(例えばA衛星)の精密軌道情報が得られている状態ですので、A衛星は瞬時に見つけることができ、時刻情報も瞬時に得られます。
アルマナックと4つ以上のエフェメリスが有効な状態を『ホット』、アルマナックだけが有効な状態を『ウォーム』、どちらも失効した状態を『コールド』といいます。
ホットな状態から測位をスタートした場合(つまりホットスタート)、現在地の測位は数秒で完了します。
ウォームスタートの場合、現在地の測位は数分で完了します。
コールドスタートの場合、現在地の測位は12.5分以上かかります。
--------------------------------------------------
と、まぁこんなわけで、人工衛星だけで現在地を測位するにはものすごい時間がかかるわけです。
ではどうすればいいか。
最終的に必要なのは、4つの衛星からの時刻情報だけです。
ということは、それ以外の情報(アルマナックやエフェメリス)は別の方法で入手すればよいということになります。
具体的にいうと、3G/LTE/WiFi等を利用してネットから入手すればいいわけです。
これがA-GPS(補助GPS/Assisted GPS)といわれている方法です。
アルマナックやエフェメリスはデータ量としてはわずかなので、現在のモバイル回線であれば一瞬で取得できます。
--------------------------------------------------
アルマナックやエフェメリスは各社のサーバーからダウンロードします。
このサーバーのことを便宜上SUPLサーバーと呼ぶことが多いです。(SUPLとはSecure User Plane Locationの略で、プロトコルの一種です。たぶん。)
SUPLサーバーはドコモ、au、Google、Sony、Apple等、各社が用意しています。
基本的に、ドコモが販売しているスマホはドコモのSUPLサーバーに接続するよう設定されており、auのスマホはauのSUPLサーバーに接続するように設定されています。(ここ重要Part.1)
例外はiPhoneで、ドコモが販売しているPhoneであっても、auが販売しているiPhoneであっても、iPhoneはAppleのSUPLサーバーに接続します。(ここ重要Part.2)
ちなみにSIMフリースマホ等の海外スマホの多くはGoogleに接続するよう設定されていますが、xperiaの海外仕様はSonyのサーバーに接続されます。
--------------------------------------------------
ここでドコモのスマホにのみ問題が発生します。
ドコモのAndroid系スマホは当然ドコモのSUPLサーバーに接続しようとします。
しかしドコモのSUPLサーバーにはSPモードを契約した回線しか接続できません。
ドコモの超嫌がらせです。
このためMVNOの回線はSUPLサーバーからA-GPSをダウンロードできないことになります。
A-GPSがダウンロードできないので、MVNO回線では位置情報の測位に12.5分かかることになります。
これではハイドラを楽しむことは困難です。
--------------------------------------------------
auはどうか。
最近ではmineoのようにau系のMVNOも出てきました。
実際に試したところ、auは何も制限がかかっていないようで、MVNOでも問題なくA-GPSの取得ができました。
au万歳!!
--------------------------------------------------
iPhoneはどうか。
iPhoneはドコモのSUPLサーバーではなく、AppleのSUPLサーバーに接続します。
ですのでMVNOでも問題なくA-GPSをダウンロードできます。
iPhoneって素晴らしい!!
--------------------------------------------------
海外のSIMフリースマホはどうか。
海外のスマホの多くはGoogleのSUPLサーバーに接続します。(xperiaはなぜかSonyのSUPLサーバーに接続しますが。)
ですのでMVNOでも問題なくA-GPSをダウンロードできます。
海外スマホもいいね!!
--------------------------------------------------
というわけでMVNOでハイドラを楽しみたいなら、おとなしくiPhoneを使うのが理想です。
auスマホや海外スマホでもOKです。
どうしてもドコモスマホを使いたければ、rootを取得して接続するSUPLサーバーを書き換えるしかありません。
この方法は素人にはお手上げですし、玄人でも失敗している人を見かけます。
無理ゲーですね。
--------------------------------------------------
ちなみに私は海外仕様のxperiaを個人輸入しました。
海外仕様のxperiaは現在地の測位が爆速なことで有名です。
もちろんMVNOでA-GPSに繋がりますし、テザリングもできるし、言うことなしです。
これで目いっぱいハイドラを楽しもうと思います(`・ω・´)
