Excelの勉強をしていて、日付や時刻の値は、内部ではシリアル値という値を使って管理していることを学習。1900年1月1日が基準日となって1、それから一日毎にカウントが増えていき、今日の2019年11月1日はシリアル値では「43770」となっている。
この特定の日付…Excelでは1900年1月1日が基準となって、カウントが日々増えていく基本構造、どこかで聞いたことがあるな…とひっかかるものがある。2000年問題ですか?と言われ、今になっては懐かしい響きだがちょっと違い、もっと深刻、直接的な被害を食らった記憶も沸いてくる。
調べ直して思い出した。一つめが、GPSのロールオーバー問題。GPSについては、1980年1月6日午前0時を基準として、x週間y秒が経過したというカウント方式で、1900年1月1日を基準とするExcelに近いものがある。
GPSの場合、1980年1月6日から1,024週(7,168日)経過すると0から再スタートされる仕組みで、1999年8月22日に一回目のロールオーバーが発生、もう一度1,024週が経過した2019年4月7日に二度目のロールオーバーとなった。受信する機器についても、このロールオーバーに対応していないと、正しく測定できなくなる。身近なところではHOLUX M-241がロールオーバーに対応しておらず、使えなくなってしまって廃棄した。これが直接的な被害という印象。
二つめ、2038年問題。こちらは1970年1月1日午前0時を基準として、コンピューター上では何秒経過したか計算し、それを時計として表現している。32ビットの符号付整数の場合、2,147,483,647秒が経過した2038年1月19日にコンピューターが誤作動する恐れがあるというもの。初めてこの問題を知ったのが、FreeBSDで遊んでいた遠い昔のことで、今になって思い出すとは、それほどインパクトのある問題。2000年問題のときのように幅広く周知されているわけではなく、当日が近づくにつれて、「以前から分かっていたトラブルを今になって知らせるのか」というような、素人感丸出しの不満が述べられるに違いない。
三つめ、2036年問題。パソコンの時間同期でもお馴染み、NTP(Network Time Protocol)にも爆弾が備えられていて、1900年1月1日0時0分0秒からの秒数をカウントし続けている。しかも32ビットで表現していたりするので、4,294,967,295秒が経過すると1900年1月1日0時0分0秒に戻ってしまうというもの。そんなトラブルの解決方法は「問題の先送り」というカタチを採り、2104年に混乱するよう再セッティングしているそうだ。
特定の基準日でカウントし、それが問題になり、また問題が予想されるネタを完全に思い出してスッキリした。システム上の問題について、その解決手段や回避方法、そもそもの原理を調べていくことは何も苦ではないのに、ExcelのマクロやVBAについては全く覚えようとしない、なかなか便利な脳を持っていることまで分かった。