2020年01月10日 23時05分 ソフトウェア

20年前の「2000年問題」の影響が時間を超えて各所で起こっているとの報告

by jeffjacobs1990



1999年から2000年への年越しでは、古いコンピューターが西暦を「00年」と認識することから誤作動が起こるのではないかと懸念されました。実際にはこの年越しで大きな混乱は起きなかったのですが、当時、多くのコーダーは修正において問題を先送りにしただけであり、その影響が2020年になって現れているという報告が上がっています。



A lazy fix 20 years ago means the Y2K bug is taking down computers now | New Scientist

https://www.newscientist.com/article/2229238-a-lazy-fix-20-years-ago-means-the-y2k-bug-is-taking-down-computers-now/



2000年問題は当時ソフトウェアやコンピューターに関わる仕事に携わっていた人々を恐怖の渦に陥れ、Microsoftでも発電機を詰め込んだセミトレーラーが持ち込まれ、多くの社員が会社で年越しを行ったとのこと。



2000年問題が心配された1999年の年越し、Microsoft社内では何が起きていたのか？ - GIGAZINE





幸いにも大きな混乱なく2000年は訪れましたが、この2000年問題の影響が20年経過した2020年になって現れています。



そもそも、2000年問題は、古いコンピューターが西暦を下2桁で保存していたことに発端しています。例えばコンピューターは1998年を「98」として表しますが、2000年になり「00」になると、誤って1900年と認識されるのではないかと恐れられました。



by bialasiewicz



この2000年問題を回避するには、プログラマーには2つの選択肢がありました。1つはコードを完全に書きかえること、そしてもう1つは 「Windowing(窓がけ処理)」と呼ばれる修正方法です。



Windowingでは00から20までの全ての数字を2000年代のものとして扱う方法で、当時、80％以上のコンピューターで「安価で迅速に行える」このWindowingが選択されたと推測されています。ただし、この方法は「問題を先送りにしているだけ」と批判を呼びました。



多くのコンピューターは1970年1月1日から形式的な経過秒数として時間を表示するUNIX時間を採用しています。UNIX時間はさまざまな産業のOSで使用されています。多くのコーダーはWindowingにおいて、1970年を中間地点とするため「1920年から2020年」を 標準的な時間枠(ウィンドウ)として選択しました。当時は、2020年までにはこれらウィンドウシステムが時代遅れになると考えられていたため、問題が先送りにされたわけです。



Vodafoneの2000年問題のバグを修正したPaul Lomax氏は「明らかに、当時の人々は2020年までに自分たちのシステムが使われなくなると考えていました。60年代の人々の多くが、自分たちのコードが2000年まで使われるとは考えていなかったように」とコメントしています。



Windowingを使用したシステムは2020年になりウィンドウの終わりに達することで、1920年にロールバックしているとのこと。電力会社の請求書が1920年付で作成されたり、日付の不具合によるカード取引が認められなかったりといった事態が実際に起こっています。コンピューターシステムのエラーを探すソフトウェア「Splunk」もまた、皮肉なことに2019年11月に2020年バグが発見されました。



by choreograph



企業が詳細を明らかにしていないため、2020年バグの影響がいつまで続くかは不明とのことですが、修正によって問題が再び先送りにされた場合、同様の不具合が再び起こる可能性もあるとのことです。