Y2K バグへの対処には数十億ドルが費やされました。政府、軍、企業システムはすべて危険にさらされていましたが、私たちは多かれ少なかれ無傷で乗り切ることができました。では、その脅威は本当にあったのでしょうか?
私たちはどのようにして時限爆弾を仕掛けたのか
1950 年代と 60 年代には、年を 2 桁で表すことが標準になりました。その理由の 1 つはスペースを節約するためでした。初期のコンピューターのストレージ容量は小さく、 RAM は 現代のマシンのほんの一部にすぎませんでした。プログラムは可能な限りコンパクトかつ効率的である必要があります。プログラムは、明らかに有限の幅 (通常は 80 桁) を持つ パンチカード から読み取られました。パンチカードの行末を超えて入力することはできません。
スペースを節約できるところはどこでもそうしました。簡単で、したがって一般的な方法は、年の値を 2 桁で保存することです。たとえば、誰かが 1966 年の代わりに 66 を入力したとします。ソフトウェアはすべての日付を 20 世紀に発生したものとして処理したため、66 は 1966 年を意味すると理解されました。
最終的には、ハードウェアの機能が向上しました。より高速なプロセッサ、より多くの RAM が登場し、 コンピューター端末が パンチカードや テープ に取って代わりました。テープやハードドライブなどの磁気メディアは、データやプログラムの保存に使用されていました。ただし、この時点では大量の既存データが存在していました。
コンピュータ技術は進歩していましたが、これらのシステムを使用する部門の機能は変わりませんでした。ソフトウェアが更新されたり、置き換えられたりしても、データ形式は変わりません。ソフトウェアは引き続き使用され、2 桁の年が予想されます。データが蓄積されるにつれて、問題はさらに悪化しました。場合によっては、データ本体が膨大になることがありました。
データ形式を神聖なものにしたことも理由の一つでした。新しいソフトウェアはすべて、4 桁の年を使用するように変換されなかったデータに迎合する必要がありました。
ストレージとメモリの制限は現代のシステムでも発生します。たとえば、ルーターやファイアウォールのファームウェアなどの 組み込みシステムは 、スペースの制限によって明らかに制限されます。
プログラマブル ロジック コントローラー (PLC)、自動機械、ロボット生産ライン、産業用制御システムはすべて、可能な限りコンパクトなデータ表現を使用するようにプログラムされています。
4 桁を 2 桁に削減すると、かなりのスペースを節約できます。ストレージ要件を半分に減らす簡単な方法です。さらに、対処しなければならない日付が多ければ多いほど、メリットは大きくなります。
最終的な落とし穴
年の値に 2 桁のみを使用すると、異なる世紀の日付を区別できなくなります。このソフトウェアは、すべての日付を 20 世紀のものであるかのように扱うように作成されています。これにより、次の世紀に到達すると、誤った結果が得られます。 2000 年は 00 として保存されます。したがって、プログラムはそれを 1900 年として解釈し、2015 年は 1915 年として処理されます。
1999 年 12 月 31 日の午前 0 時になると、日付を 2 桁として保存および処理するすべてのコンピュータ、およびマイクロプロセッサと組み込みソフトウェアを搭載したすべてのデバイスがこの問題に直面することになります。おそらく、ソフトウェアは間違った日付を受け入れて続行し、ガベージ出力を生成するでしょう。あるいは、エラーをスローして続行する可能性もあります。あるいは、完全に窒息してクラッシュする可能性もあります。
これは、メインフレーム、ミニコンピューター、ネットワーク、デスクトップだけに当てはまるわけではありません。マイクロプロセッサは、航空機、工場、発電所、ミサイル制御システム、通信衛星などで稼働していました。実際、自動化されたもの、電子化されたもの、または設定可能なものにはすべて、何らかのコードが含まれています。問題の規模は途方もないものでした。
これらすべてのシステムが 1999 年から次の 1900 年までフリックした場合はどうなるでしょうか?
通常、一部の地域では時代の終わりと社会の崩壊を予測していました。現在のパンデミックにおいて多くの人々の共感を呼ぶ場面では、 必需品の備蓄に取り組む 人もいた。他の人はすべてをデマだと呼びましたが、間違いなく、それは大きなニュースでした。これは、「ミレニアム」、「2000 年」、「Y2K」バグとして知られるようになりました。
他にも二次的な懸念がありました。 2000 年はうるう年でしたが、多くのコンピューターは、うるう年に対応したシステムであっても、これを考慮していませんでした。年が 4 で割り切れる場合、それはうるう年です。 100 で割り切れる場合は、そうではありません。
別の (あまり広く知られていない) ルールによると、 年が 400 で割り切れる場合、それはうるう年になります 。これまでに作成されたソフトウェアの多くは、後者のルールを適用していませんでした。したがって、2000 年はうるう年として認識されません。その結果、2000 年 2 月 29 日にそれがどのように動作するかは予測できませんでした。
ビル・クリントン大統領は1999年の一般教書演説で次のように述べた。
「我々は、Y2Kコンピュータのバグが21世紀最初の危機ではなく、20世紀最後の頭痛として記憶されるよう、大小を問わずあらゆる州や地方自治体、あらゆる企業が協力する必要がある」 。」
その前年の10月、クリントンは 2000年情報および準備公開法 に署名していた。
これには時間がかかります
1999 年よりずっと前から、世界中の政府や企業は、2000 年問題の解決策を見つけ、回避策を実行するために熱心に取り組んでいました。
当初、最も簡単な修正は、日付または年のフィールドを拡張してさらに 2 桁を保持し、各年の値に 1900 を加算して、タダ! であるように見えました。その後、年は 4 桁になりました。古いデータは正しく保存され、新しいデータはうまく挿入されます。
残念なことに、多くの場合、コスト、認識されているデータ リスク、およびタスクの規模の巨大さにより、その解決策は不可能でした。可能な限り、それが最善のことでした。システムは 9999 まで日付が安全です。
もちろん、これはデータを修正しただけです。 4 桁の年を処理、計算、保存、表示するにはソフトウェアも変換する必要がありました。何年にもわたってストレージを増やす必要がなくなる、創造的なソリューションがいくつか登場しました。月の値は 12 を超えることはできませんが、2 桁の値は 99 まで保持できます。そのため、月の値をフラグとして使用できます。
次のようなスキームを採用できます。
- 1 から 12 までの月の場合は、年の値に 1900 を加算します。
- 41 から 52 までの月の場合は、年の値に 2000 を加算し、月から 40 を減算します。
- 21 から 32 までの月の場合は、年の値に 1800 を加算し、月から 20 を減算します。
もちろん、わずかに難読化された日付をエンコードおよびデコードするにはプログラムを変更する必要がありました。データ検証ルーチンのロジックも、異常な値 (1 か月あたり 44 など) を受け入れるように調整する必要がありました。他のスキームでは、このアプローチのバリエーションが使用されていました。日付を 14 ビットの 2 進数としてエンコードし、整数表現を日付フィールドに格納することは、ビット レベルで同様のアプローチでした。
日付を保存するために使用される 6 桁の月を完全に省略して再利用する別のシステム。保管する代わりに
MMDDYY
、彼らはに交換しました
DDDCYY
フォーマット:
- DDD: 年間通算日 (1 ~ 365、または閏年の場合は 366)。
- C: 世紀を表す国旗。
- YY: 年です。
回避策もたくさんありました。 1 つの方法は、ピボット年として年を選択することでした。既存のデータがすべて 1921 年より新しい場合は、1920 年をピボット年として使用できます。 00 から 20 までの日付は 2000 年から 2020 年を意味します。21 から 99 までの日付は 1921 年から 1999 年を意味します。
もちろん、これらは短期的な修正でした。実際の修正を実装したり、新しいシステムに移行したりするために、数十年かかりました。
稼働中のシステムを再検討して、まだ実行中の古い修正を更新しますか?ええ、その通り!残念ながら、社会はそれほど多くのことをしていません。今でも広く使用されている COBOL アプリケーションをすべて 見てみましょう。
Y2K準拠?証明する!
社内システムの修正もその 1 つでした。コードを修正して、現場のすべての顧客デバイスにパッチを配布することは、まったく別の作業でした。ソフトウェア ライブラリなどのソフトウェア開発ツールについてはどうでしょうか?彼らはあなたの製品を危険にさらしましたか?製品のコードの一部に開発パートナーまたはサプライヤーを使用しましたか?彼らのコードは安全であり、2000 年問題に準拠していましたか?顧客またはクライアントに問題があった場合、誰が責任を負いますか?
企業は事務手続きの嵐の真っ只中にいることに気づきました。企業はソフトウェアサプライヤーや開発パートナーに対し、法的拘束力のあるコンプライアンス声明を要求するようになり、自ら倒れていました。彼らは、包括的な Y2K 準備計画と、システム固有の Y2K コードレビューおよび修復レポートを知りたがっていました。
彼らはまた、あなたのコードが2000年問題に対して安全であることを証明し、2000年1月1日以降に何か悪いことが起こった場合にはあなたが責任を受け入れ、彼らは免除されるという声明を求めていた。
1999 年、私は英国に拠点を置くソフトウェア ハウスの開発マネージャーとして働いていました。ビジネスフォンシステムとのインターフェース製品を作りました。自動電話対応を提供する当社の製品は、プロフェッショナルなコールセンターに日常的に利用されています。当社の顧客は、 BT 、 Nortel 、 Avaya など、この分野の大手企業でした。彼らは、バッジを付け直した製品を世界中の数え切れないほどの顧客に再販していました。
これらの巨人のおかげで、私たちのソフトウェアは 97 か国で稼働していました。タイムゾーンの違いにより、ソフトウェアは 1999 年の大晦日の真夜中まで 30 回以上も 実行されることになりました。
言うまでもなく、これらの市場リーダーはある程度暴露されていると感じていました。彼らは、私たちのコードが準拠しているという確かな証拠を求めていました。彼らはまた、私たちのコードレビューの方法論とテストスイートが健全であること、そしてテスト結果が再現可能であることを知りたがっていました。私たちはひどい状態を経験しましたが、健康状態は良好でそれを乗り越えました。もちろん、これらすべてに対処するには時間と費用がかかりました。私たちのコードは準拠していましたが、それを証明するためには経済的打撃に耐えなければなりませんでした。
それでも、私たちは他の人よりも軽い気持ちで降りることができました。 Y2K への準備にかかる世界の総コストは、 ガートナー によれ ば 3,000 億ドルから 6,000 億ドル 、 キャップジェミニ によれば 8,250 億ドルと推定されています。米国だけでも1000億ドル以上を費やした。 Y2K バグへの対処に数千人年が費やされたとも計算されています。
ミレニアムの夜明け
お金を口に出してしまうことほど素晴らしいことはありません。 1999年の大晦日、2000年改宗大統領評議会議長のジョン・コスキネンは、真夜中にまだ飛行中の飛行機に乗り込んだ。コスキネン氏は、米国をミレニアムに備えるために費やした多年にわたる多大な費用のかかる修復に対する自身の信頼を国民に示したかった。彼は無事に着陸した。
技術者ではない人が過去を振り返って、ミレニアムのバグは誇張され、誇張され、人々が金儲けをするための手段に過ぎなかったと考えるのは簡単です。何も起こらなかったですよね?それで、一体何が大騒ぎになったのでしょうか?
山の中にダムがあり、湖をせき止めていると想像してみてください。その下には村があります。羊飼いはダムに亀裂が入っているのを見た、そしてそれは1年も持たないと村に告げる。計画が策定され、ダムを安定させるための作業が始まります。ついに建設工事が完了し、故障予測日も無事に過ぎました。
村人の中には、何も心配する必要はないのに、ほら、何も起こっていない、とつぶやき始める人もいるかもしれません。まるで、脅威が特定され、対処され、排除されるまでの時間について盲点があるかのようです。
Y2K の羊飼いに相当するのは、 コンピューターワールド 誌の 1993 年の記事 でこの問題を一般の意識にもたらしたとされるピーター・デ・イェーガーです。彼はそれが真剣に受け止められるまで選挙運動を続けた。
新しい千年紀が幕を開けると、デ・イェーガーも シカゴからロンドンへ向かう 飛行機の途中だった。また、コスキネンと同じように、デ・イェーガーの飛行機も何の問題もなく安全に到着した。
何が起こったのですか?
Y2K によるコンピュータ システムへの影響を防ぐための多大な努力にもかかわらず、網をすり抜けたケースがありました。ネットがなかったら世界は考えられない状況だったでしょう。
破滅論者の予測にもかかわらず、飛行機は空から落ちず、核ミサイルは自動発射されなかった。しかし、米国の追跡ステーションの職員は 、ロシアからの3発のミサイル の発射を観察したとき、わずかに激怒した。
しかし、これはロシアとチェチェン紛争が激化する中、人為的に スカッドミサイル 3発を発射したものであった。ただし、それは眉をひそめ、心拍数を上昇させました。
他に発生した事件は次のとおりです。
- 日本の 2 つの原子力発電所で 断層が発生しましたが、迅速に対処されました 。欠陥は軽微で脅威ではないと説明されています。
- デンマークでは、新世紀に生まれた最初の赤ちゃんの年齢が 100 歳として登録されました 。
- オーストラリアのバスチケットには 間違った日付が印刷されており 、チケット スキャン ハードウェアによって拒否されました。
- エジプトの国営ニュース通信サービスは 失敗したが、すぐに復旧した 。
- 米国の偵察衛星は 、2000 年問題を修正するためのパッチに欠陥があったため、3 日間 飛行不能となりました。
- ニューヨークのビデオ店に『将軍の娘』のコピーを返却した男性に、テープを100年遅れて持ち帰ったことに対して 9万1250ドルの請求書を提示され た 。
- 2000 年代に入って数か月後、イギリスのある地域の保健当局は 、ダウン症で生まれる子供 の数に統計的な異常があることを発見しました。 1月に母親154人の年齢が誤って計算され、検査結果が歪められた。これらの女性は年齢的に高リスクグループに分類されますが、検出されませんでした。もしリスクが正しく特定されていれば、母親たちは 羊水検査を受けること になっただろう。 4人の子供がダウン症を持って生まれ、2人の妊娠が中絶された。
レガシー: 20 年後
先ほど述べた重要な年を覚えていますか?これらは、2000 年問題を真に解決するために人々と企業に数十年を費やした回避策でした。一部のシステムはまだこの一時的な修正に依存しており、まだ使用されています。すでにサービス中にいくつかの障害が発生しています。
今年の初めに、ニューヨークのパーキングメーターは クレジットカードでの支払いの受け付けを停止しました 。これは、ピボット年の上限に達したためであると考えられます。 14,000 個のパーキング メーターはすべて個別に訪問して更新する必要がありました。
言い換えれば、大きな時限爆弾はたくさんの小さな時限爆弾を生み出しました。





