第8回 純粋理性的2000年問題分析

 話題の2000年問題のXデーまで1年を切ってしまった.そういうわけで,今年の雑誌の新年号には2000年問題の特集記事が氾濫している.計算機屋にとって,そんなことは何年も前からわかっていたことなのだが,不景気なご時世でもあり,マスコミがあおってくれるおかげでその対策のための発注が増えるということは,まんざら悪い話でもない.

膨張する2000年問題

 ところで,正月休みに雑誌を拾い読みしていて気になったことがある.数年前までは,2000年問題は古いプログラムが使えなくなるので,修正しなければならないという程度の話題だった.ところが,最近のマスコミ情報は急速にパワーアップしてきて,まるで世界が破滅するような論調になってきているのである.今では,かのノストラダムスが2000年問題による世界の破局を予言していたというトンデモ系の話まで現れている.

 2000年問題は,計算機屋の間でも話題になることが多いが,私はそういった専門家たちの見方と,マスコミの論調とには相当な隔たりがあるように感じている.というわけで,やっぱり気になる2000年問題,一度この問題を自分なりに整理してみたいと考えた.

2000年問題はバグ以上でも以下でもない

 2000年問題の本質が,単なるバグであるということを確認しておこう.2000年という時代の変わり目に起こるから不可避なものと思われがちだが,その日が例外処理になるということがソフトウェアのテスト項目に入っていなかったということにすぎないのである.そういう意味で,2000年問題という名前と認識ができあがったことは,ソフト開発元にとっては福音だったといえる.お金をいただいて虫取りができるのだから,マイクロソフトを非難してはいけない.

 さて,現実の2000年問題は,ソフトウェア的にはおおむね以下の3パターンに分類することができる.

1) 2000年1月1日0時ちょうどに,時刻カウンタが0になることに起因する問題
2) 2000年をまたぐ日付けデータを入力することによって発生する問題
3) ある時刻をマジックナンバーとして使用していることによって発生する問題

 いずれもプログラムが想定していない日付けや数値が発生したり入力されたことによって,コンピュータがエラーを起こすということである.この中で一番深刻なのが,1)のパターンである.これは,同時多発的になるということが大きな問題になる可能性がある.一つのシステムが止まったくらいでは深刻な問題にならないが,ネットワーク接続されたコンピュータが各所で停止したり異常動作をすると,一瞬にして世界規模で影響を与える可能性がある.

 それに比べて,2)と3)の場合は,その発生は同時ではないという点で,1)よりは深刻な問題ではない.いずれにせよ,システムが2000年以降も稼動するかどうか事前にテストできるのだから,社会活動に影響を与えるような重要なシステムについては,残された時間で十分なテストをすることによってパニックを回避できるはずである.

組み込みシステムの2000年問題

 1)のパターンで最近話題になっているのが,組み込み用マイコンに潜伏している2000年問題である.これが深刻なのは,ソフトがROMの中に固定されているため修正ができないことである.しかも,その数は100億個を越えるとすら言われている.そういうチップが原子炉やミサイルに埋め込まれているというのだから,もし誤動作すれば大変である.

 それでは本当に,来年の1月1日は大パニックになるのだろうか.そこでまず,原子炉に使われているマイコンチップが暴走してパニックが発生するという話を分析してみよう.

 これだけ2000年問題が騒がれているのだから,そういった重要なシステムは当然ながら定期点検時に日付けを変更してテストをするはずである.それすらもしないというのなら問題外で,そういう国で生活する自分を哀れむしかない.おそらく,2000年問題があろうとなかろうと,いずれ大問題が発生するに違いない.

 しかし,そのテストを逃れたバグがあるとしよう.ソフトウェアを生業とする人なら,ソフトウェアで動くものにバグは付きものだということは常識だと思う.したがって,それがエラーを起こすとパニックになるという使い方でマイコンチップを原子炉やミサイルに使うとは考えにくい.使うとしても二重,三重のガードがかかっていて当然なのである.どういうわけか,2000年問題が語られるときにだけ組み込みチップはエラーを起こさないという前提で使われていることになっている.

 これは変な話である.車ですら,エンジン制御のコンピュータが停止しても,とりあえずエンジンは回るように作られているそうである.絶対に誤動作しない機械などありえないはずで,故障や誤動作したときに安全なように作ることがエンジニアの常識のはずである.

 楽観的に考えるのは甘いと思われるかもしれないが,あえて言っておこう.まっとうなエンジニアは,コンピュータを完全無欠なものとは考えていない.

きっと忙しい2000年1月1日

 ということで,2000年問題は世界的なパニックを引き起こすほどのものにはならないだろうと私は予想している.しかし,2000年問題は確実に起こり,マイナーなトラブルがこれから多発することは間違いない.

 さて,ソフト業界にとって一番身近な2000年問題はなんなのだろうか.それは多くの業界人にとって来年の正月休みはないということだろう.世界は破滅しないとしても,これだけ何かが起こると言われて何の防御もしないことは責任上許されるわけがない.

 したがって,オンラインシステムの担当者は12月31日の夜,担当部署で徹夜の待機になることを覚悟したほうがよい.来年の正月は帰省できないということだけは,家族に説明しておく必要がある.

山本 強・北海道大学



「移り気な情報工学」のトップへ戻る

Interfaceのホームページへ戻る