2036年2月6日15時28分15秒※日本時間
2036年2月6日15時28分15秒
この時刻は科学者やネットワークエンジニアの方の間ではかなり有名な話だと思いますが、
この時刻の次の瞬間に、世界が止まるのではないかと言われています。
◆世界はコンピューターに依存している
近年のめまぐるしい技術進歩により、特にインターネットは生活に欠かせないもののひとつになりました。
電子メールによって簡単にメッセージを送ることが出来るようになり、
スマートフォンのアプリによって、世界のどこにいてもリアルタイムでコミュニケーションが取れます。
オンラインでテレビ通話も可能となり、コロナ禍の影響もあり、自宅で仕事をすることも容易になっています。
近年では、重要インフラサービスにおけるITへの依存度も益々高まってきていて、障害が発生した場合の機能停止や機能低下が及ぼす重要インフラサービスへの影響度や影響範囲はより大きなものとなっています。
この数十年の間に、これほど爆発的な普及を遂げるとは誰も予想していなかったでしょう。
◆NTPとは
我々が時計を見て時間を正確に把握できるように、
コンピューターも自らのシステムの中に基準となる時計を持っています。
それが、NTP(Network Time Protocol)です。
NTPとは、コンピュータに内蔵されているシステムクロックをネットワークを介して正しく同期させるためのプロトコルの事。
NTPにより時刻同期を行うことで指定時間に正しくサービスを動作させたり、出力ログを正しく管理できたり、証明書を利用した認証なども正しく行うことができます。
なので、これが誤作動を起こすと、システム全体に多大な影響を与える可能性があるのです。
◆32ケタしか用意されていなかった
ところが、このNTPにおいてはコンピューター内部で、2進数32ケタで時計を管理しているのですが、それだと45億9496万7295秒という限界があり、
時計開始の基準となる1900年1月1日午前0時0分0秒から数えると、
2036年2月6日15時28分15秒(※日本時間)に限界を迎えてしまうのです。
(当時はその程度で当面足りると思っていたようです)
つまり、2036年2月6日15時28分15秒の次の瞬間に、
コンピューターの時計は1900年1月1日午前0時0分0秒に逆戻りしてしまうのです。
そうなった時、何が起きるかは誰にもわかりません。
この問題は、『2036年問題』と言われています。
◆既に誤作動が起きたケースがあった
ちなみに、UNIX(ユニックス)系のOS(オペレーションシステム)では、
同様の問題が『2038年問題』と言われていて、
こちらは2038年1月19日12時14分8秒(※日本時間)の次の瞬間に同じ問題を迎えると言われています。
2004年1月11日には、この2038年問題に起因するプログラムの不具合から、日本国内の20行以上の銀行でATMが正常に利用できなくなるトラブルが発生し、さらに後日、KDDIが国内電話サービスの料金を一部で誤って請求していたことが後日判明しました。
このほかにもいくつかの企業でトラブルが報告されていて、その背景としては、プログラミング時に、経過秒数の最大桁数を間違えて設定するなどの人為ミスと、それを発見できなかったチェック漏れが指摘されました。
◆2000年問題よりも事態は深刻
過去には『2000年問題』というものがありまして、そちらはアプリケーションの調整で事が済んだのですが、今度の問題はコンピューターシステムのかなり深いところに原因がある為、コンピューターそのものを交換するくらいの対応が必要となります。
具体的な対策としては2036年問題も2038年問題も、用いられているビット数に起因することから、問題を回避するために64ビットOSへ切り替える(64ビット整数にすれば、西暦3000億年くらい使えるため、根本的な解決になります。)、もしくは限界を超えてオーバーフローした際に、過去の1900年に戻るのではなく、受け手側で未来の時間として理解させる、といった方法があります。(多くは後者を採用するそうです)
パソコンを長く使っている人なら、5年10年以上同じパソコンを使う事はあまりないという事はお分かりでしょうし、いずれ新しい機種が登場します。
さすがにそのころには技術的に解決できていそうにも思いますが、
役所や銀行などで古いシステムを未だに使っているところもあるので、
予断を許さないところはあります。
果たして、2036年(もしくは2038年)にはどのような事が起きるのか、
もしくは何も起きないのか、今はまだ誰にもわかりません。