【コンピュータ2000年問題】(こんぴゅーたにせんねんもんだい)

1990年代末期から世界各地で顕在化した技術的問題。
西暦2000年になった瞬間*1に世界中のコンピュータが誤作動するという危惧。

概要

黎明期のコンピュータは、日付を扱う際に「年」を西暦の下2桁のみで表現するのが一般的であった。
この仕様は当時の技術的限界によるものだったが、技術上の問題が克服された以降も慣習的に2桁表記が続いていた。

だが、数値を2桁で扱うシステムでは西暦2000年を示す「00」を西暦1900年と誤認する可能性がある。
それによってシステムが誤作動する*2恐れが指摘された。
重篤な社会的乱を引き起こす危険性があるとなればさすがに放置も許されず、その確認と修正が全世界規模で行われた。

技術的背景

何故、たかが4桁の数字を2桁まで省略しなければならなかったのか?
答えは、その2桁の差が、かつてのコンピュータ科学における重大な課題であったからだ。

コンピュータのCPU(中央処理装置)が1回の演算で操作できるビットの数は有限である。
1980年代に存在した端末の大半は、一度に8ビットしか制御できなかった。
つまり、数値が8ビット(0〜255)以内である事が保証されていないと、あらゆる操作・演算の所要時間が2倍以上に増えるのだ。
これに加えて計算内容を記憶するメモリも極めて限られていたため、データの節約は死活問題だった。

例えば、任天堂の「ファミリーコンピュータ(1983年)」は作業用の記憶領域を2キロバイト持っていた。
1バイトは8ビットで構成されるので、つまり2桁の数値2000種類、または4桁の数字1000種類で完全にメモリを使い果たす。
不用意に数字の桁数を増やすような余裕がなかった事は疑いない。

1990年代には、32ビットを制御できるCPUと1メガバイト以上の一時記憶装置が登場していた。
つまり日付の年数を正規の西暦表記に変える事が可能になっていたのだが、慣習的に2桁での表記が続いていた。
実際、日付の表記方法を変えるとなれば、当時存在していたほぼ全てのコンピュータが仕様変更や機種交換を余儀なくされる。
今日の高度情報社会の基盤となるコンピュータシステムは当時すでに普及しており、既存の端末の数はすでに膨大であった。

事前に予想されていた通り、これらの確認・修正作業は困難を極めた。
完全に修正不可能になっていたためゼロから新規設計でシステムを構築し直すしかなかった事例も少なくない*3

航空・軍事分野に関連する問題点

航空軍事の分野では次のような問題が危惧されていた。

…等々。

その後

1999年12月31日〜2000年1月1日にかけて、公共交通機関が日付をまたぐ運行を自粛するなどして不測の事態に備えていた。
実際に2000年になった際、一部の機械に小さなトラブルが出たものはあったが、重篤な被害には至らなかった。

結果として、この問題は人類史上において特筆に値する出来事には発展せず、いわゆる「世紀末カルト」の一種として急速に忘れ去られつつある。
当時のコンピュータ技術者たちがどのような問題を検知し、どのような対策を採っていたかについて全貌は明らかでない。
そして、今となっては調べるのも容易ではない。

とはいえ、2000年代になってから以後も類似の問題は(局地的ながら)たびたび生じている。
コンピュータの誤作動にまつわる問題は「2000年問題」という枠を越えていつでも起こり得る普遍的な現象と化しつつあるのが現状である。

2000年2月29日、「閏年」の認識を誤っていた事が原因で各所にトラブルが生じていた。
また、オーストラリアの銀行システムが、何故か「2010年」を「2016年」と誤認してトラブルを起こした。
今後予想される類似の問題として、GPS衛星の原子時計の桁あふれが生じた際にもトラブルの発生が予告されている。


*1 実際の発生予想時刻は各端末の内部時計に依存するので、実際には24時間に渡る。
*2 一例を挙げると「データを日付順に並び替える処理をしても本来あるべき順序にならない」など。
*3 稼働開始から10年・20年も経てば、開発当時の技術者が社内に一人もいなくなっていても驚くには値しない。

トップ 新規 一覧 単語検索 最終更新ヘルプ   最終更新のRSS