いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

コンピュータの2000年問題とは

 ××××年問題というのがコンピュータの世界にいくつもあります。少し前には2000年問題西暦2000年になった瞬間にコンピュータが誤動作を起こす、というものです。コンピュータを動かすためのソフト(プログラム)は人間が書きます。このときソフトの内部で年月日が必要になることがたくさんあります。例えば単純にファイルをコピーするときだって、ファイルの作成日時を参照して上書きするかどうか判断したりします。古いソフトでは当時のハードの搭載メモリの制限などで、内部では1983年を83と表現することがありました。扱う西暦は大抵1900年代に決まっていたから、区別はつくので困らないわけです。しかしこれが後に大問題になります。2000年が0年、2001年が1年として扱われてしまうのです。ファイルのコピーでは、作成の年をもしも2桁で管理していたとしたら1999年に作ったファイルよりも2000年(0年と解釈される)に作ったファイルの方が古いと判断されて上書きされてしまいます。ファイルの例みたいに直接に日付を扱わないとしても、会社で1983年入社の社員の社員番号が150083001なんかになっていたりすればどこかで影響が出るかも知れません。この手の問題はいくらでもあるのです。これは単純に00年→2000年とやれば解決、というわけにはいきません。つまり機械的な手当ができず、人間がプログラムを全部見直さななければならならないのです。あっちでもこっちでも大金(人件費)を使って対応に追われたはずです。特に航空機の管制につかわれるプログラムなど、人命に関わるところでは大変だったでしょう……。
 あんまり騒がれていないかもしれませんが、今は2036年問題、2045年問題というのがあります。ここでは簡単に触れるだけにしておきます。2045年問題は「2045年には人工知能が人間を超える」という話。「シンギュラリティ」というやつですね。2036年問題は上で書いた2000年問題と同じようにパソコンの内部時計に関係しています。Windowsでは、Windows2000以降はパソコンの内部時計をネットワークから取得した時刻によって調整しています。内部時計は放っておくとかなり狂います。それをパソコンが自分で直すのです。ネットワーク上に設置してある正確な時計に合わせるのですが、これに関連して2036年2月6日にまずいことが起こる可能性がある、というものです。これについてもいずれ書きます。