むらかみの雑記帳

Android とか iOS とかソフトウェア開発に関するネタ帳

電波時計

電波時計といえば「絶対狂わない!」というのが売り文句なのだが、家の電波時計は結構狂う。秒単位で狂うのなら問題ないのだが、数時間単位で平気でずれたりするから困る。ぐぐってみると、結構同じようなことを言っている人がいるから、私だけじゃないようだ。

はっきりいって、「普段はぜんぜん狂わないけど1年に数回、数時間狂う」時計と「数分単位でだんだんずれるけど、数時間狂ったりするようなことはない」時計(普通の時計だ)があったら、間違いなく後者を選ぶね。数時間狂うと、最悪目覚ましがならなくて遅刻ということになるけど、数分程度のずれならそんなことは絶対ないから。

んで、何でそんな風にずれるのかと思って、電波時計のプロトコルを調べてみたら
http://jjy.nict.go.jp/jjy/trans/index.html に記述があった。

まず驚くのは、データの転送速度が 1bpsということ。1Mbps でも 1Kbps でもなくて 1bps!。で、一回のデータが 60bit あるので、一回時刻情報を送るのに1分!かかる。遅っ!

で、エラー検出がどうなっているか調べてみて驚いた。60bit に対してわずかパリティが 2bit しかない。実際には、時と分それぞれに対して 1bit ずつ(年月日もあるけどそちらにはパリティなし)。これじゃエラー検出としては弱すぎである。ビットが入れ替わった程度じゃ気づかないじゃないか。

しかし、プロトコルがこういう体たらくなのは仕方ないとして、電波時計の実装にも問題がある。いくらパリティが合っていても、数時間もずれるようなデータは明らかに異常なんだから棄てなきゃ駄目だろ。

そんなわけで、もう電波時計は信用しないことにしたのであった。