UNIX時間とはコンピューター上での時刻表現方法の1つで、1970年1月1日0時0分0秒からの経過秒数で時刻を表現しています。UNIX時間は2001年9月9日1時46分40秒に10億秒めを迎えました。10桁になることが想定されていないプログラムなどないのではないかと楽観視する声もあったものの、経過秒数を数字ではなく文字列で並べ替える(ソート)設定になっていたシステムで問題が起きたのです。
文字列をソートする場合、先頭に来る数字の大きさで順番が判断されます。1と9ならば当然1、9の順番にソートされますし、11と19でも11、19の順にソートされますが、100と99では99、100の順にソートされてしまうのです。これでいくと、1,000,000,000(10億)秒より、999,999,999(9億9千……)秒のほうが大きいとしてソートされるため、新しいデータが古いデータだと判断されて処理が行われないといったコンピューター処理上のトラブルが起きました。
では、次の20XX年問題はいつ起こるのでしょうか。
コンピューターシステムの問題に限ると、次は2025年問題(昭和100年問題)だといわれています。2025年が昭和100年にあたるため、昭和換算していて、かつ2桁までしか対応していないプログラムの場合、2025年を昭和00年と認識して誤作動を起こすのではないかという問題です。
その次に来るのが2036年問題で、ネットワークタイムプロトコル(NTP)が最大値を超えてしまうことで不具合が起こるといわれています。NTPはネットワークを介してコンピューターの時刻同期を行うためのプロトコル(規約)です。NTPの仕様により、2036年2月6日に時間計測機能がオーバーフローしてしまうとして、対策が急がれています。
さらに、2038年問題ではUNIX時間がオーバーフローを迎えるとのこと。ひと昔前の技術者たちが「この頃には、解決策ができているだろう」「このシステムを20XX年まで使うことはないだろう」と想定したほどの未来にさしかかっている現在、まだまだ20XX年問題は頻発してしまいそうです。
連載:今日は何の日?