ずいぶん前ケータイがiPhone3Gに変わった頃からの不満。ケータイのくせにずいぶんと時計がずれるなということ。酷い時には3分前後ずれていたし、朝の忙しい時間にはそれがつらくて愚痴っていた事も。

それも今年の4月までの事。

SBMがGMM Informationを配信する様になって対応機種にはiPhoneは無いけれども、おそらくGMM InformationはNITZを包括しているので時計が目立って狂わなくなった。時々NTPと比べていたけれど、3秒以内といった感じの誤差。これなら自分の日常生活には十分許容範囲。

Appleが詳細な情報を公開しているとは思えないので、いろいろと動作を推測した結果、iPhoneの時計回りはおそらく次の様になっていると思っている。

iOSの源流はパソコンOSのMac OS Xなのはご存知のところ。Mac OS XなどパソコンのOSは起動時に独立して時を刻んでいるRTCから現在の時刻を得てその後はソフトウェアによる時計がOSの上で実行される。パソコンの画面等に表示されている時刻はソフトウェアで計算されたものである場合がほとんど。NTPクライアント等のソフトウェアはこのソフトウェアによる時計を校正するものと、RTCも校正するものに分かれると思います。

iOSの時計の構成も おそらくRTCとソフトウェアによる時計の2段構えになっています。「設定」の中の「日付と時刻」の「自動設定」をoffにした時に変更できる時刻はソフトウェア時計のもの。「自動設定」をonにするとソフトウェア時計が同期するのはRTC。そのため3Gの電波を掴んでいなくてもGPSの電波を掴んでいなくてもWi-Fiが無くても「自動設定」onにしたとたん一応時刻が合う(RTCが正確な時刻を刻んでいれば)RTCはNITZを参照して自らを校正する。

それ以外ではiTunesと接続された時点で5分超の誤差がある場合、iTunesがRTCとソフトウェア時計の両方を校正する。

iOS4になった時に「自動設定」が日本でもonになっていたのはSBMがGMM informationをサービスする事を見越しての設定では無いでしょうか?開始されるまで時間がかかってましたけど。。。

iOS5になって増えた「位置情報サービス」の中の「システムサービス」にある「時間帯の設定」は何をしているんですかね?その名のとおりタイムゾーンの設定だけをしているんでしょうか?GPSからは高精度の時間を拾えますが、RTCもソフトウェア時計もそこまでの精度は無く若干のばらつきがあるので時計の校正には使っていないと思いますが。。。

広告