新・闘わないプログラマ No.99

○○問題


いわゆる「2000年問題」も大詰めでしょうか。世間では大騒ぎしている人もいるようですけど(メシのタネにしている、とも言う :-))、まあこればっかりはなってみないと分かりませんし、100%断言は出来ませんけど、そんな大事にはならないでしょうね。
最近では、コンピュータシステムの「ナントカ問題」ってやつが流行のようで、つい先日も「99年9月9日問題」ってやつがありましたねえ。これがいかにアホくさい話であるかは、説明するにも及ばないほどですけど、いったいこういうのって誰が考えるんでしょうね。いや、もちろん99年9月9日に問題が発生するプログラムってのもあるかも知れませんよ、世の中広いですから。でも、それって単純な「バグ」に過ぎないわけで、いちいちそんなの気にしていたら、「99年10月10日10時10分10秒問題」とか、そんなんだってアリでしょう。

最近は、その「2000年問題」の対応状況に関する監査、っていう政府の「大きなお世話」ってのがあります。私の勤務先って、いろいろな業種のシステムを作っているのですが、まあ、一番うるさいのが金融関係のシステムでしょうか。金融監督庁なるお役所が、いちいちこまかいことまで調べて、「別に問題無いじゃん」というようなところまで、「対応しないと、世間に公表するぞ」と脅しをかけてきています。そのやりくちはヤクザまがいだったりして。
これは私が直接かかわったわけじゃないのですが、ある機器のソフトウェアの2000年対応パッチを、先日、10月2日・3日の土日でやるスケジュールになっていました。これはかなり前に決めた全体的なスケジュールの中の一環として、人員の配置、メーカーのSEの手配、等々をやっていたものです。
ところが、件のお役所が、「その対応は9月までに終了しない場合には、見せしめのために、2000年問題対応に消極的な会社として公表する」と9月の後半になって突然、脅してきたのです。この件の担当者は真っ青になって、大慌てで、その前の週の土日にその作業をやることにしました。ところが悲しいかな、作業日を一週間も前にずらしたために、準備不足が祟って、パッチあての作業に失敗、そのシステムは、それから1週間停止してしまったのです。
何せ、メーカーのSEの都合がつかず、よく知らない人間だけでOSのパッチあてなどという作業をやったのが原因なのですが、元はと言えば、突然脅しをかけてきたお役所ががねえ……。

そもそも、2000年問題対応、って言ったっていろんなレベルがあるわけで、はっきり言って実害の無いものも多いんですよね。でも、そういうのも対応しておかないと、お役所が納得しない。でも、そのためにソフトのバージョンアップをしたり、パッチをあてたりすれば、必然的にトラブルの元にもなるわけで、そっとしておいたほうがいい場合も多いんですよね、実際の話。
よく聞くお話としては、Windows NT Version 4の場合、Service Pack 3までは2000年非対応なので、Service Pack 4を当てたためにトラブル続出、っていうやつですね。だからね、MicrosoftのService Packは、偶数番号のやつはダメ、ってのは公然の秘密(秘密にもならんか)なんだから、そんなん慌てて当てちゃだめですよ。実際の話、Service Pack 3のままだって別に問題というほどのことも無かったりしますから、わざわざ役人の自己満足のために火中の栗を拾わなくても、と思うのですけど……なかなか現実は厳しいものがあります。
でも、実際の話、2000年になった起こる障害より、その対応による障害の損害の方がずっと大きいのではないか、などと思う今日この頃だったりします。

ところで、なぜ2000年問題なんてものが出てくるか、というと、ご承知のように「年」の桁数を二桁しか確保していないからなわけですが、現在のようにメモリもディスクもふんだんにあるという視点で「なんで二桁しか用意していなかったんだ」などと批判するのはフェアじゃないのは確かですけど、これってなかなか難しい問題なんですよね。
昔のプログラムなど見ると、結構トリッキーなことをやっているのがあって、昔のIBMのメインフレームって、アドレスが24ビットで、レジスタが32ビットなので、余った8ビット分を別の用途に使うとか、1バイトを3ビットと5ビットに分割して、それぞれに違うデータを入れておくとか、そんなのが結構ありました。
そもそも、数値の桁数、なんて概念は、今のCやBASICなどには無い概念です。int型(Integer型)が4バイトだとすれば、値として取れる範囲は……、などと考えますからね。そもそも数値の桁数、というのはCOBOLでは出てくるそうですが(前から言っているように私はCOBOLを知らない)、そもそも、IBMのメインフレームのアーキテクチャのシステム370(あれ? システム360もそうなのかな? さすがにそんなに前のことは知らない私)にあるんですね。このアーキテクチャでは10進数の演算が直接出来るんですよね、2進数じゃなくて。確か、最大31桁までの10進数の演算が出来たと記憶しています。
話がずれちゃいましたけど、まあ、何でもそうなのですけど「これくらいの桁数があれば十分だろう」とか「こんな大きなデータを取り扱うことは無いから、このくらいのメモリを用意しておけばいいだろう」などというプログラマの思惑は、たいていの場合裏切られます。プログラムは、プログラマの手を離れると、作り手が思ってもみなかった使い方をされる、というのはよくある話です。

ところで、この「闘わないプログラマ」、2000年問題より先に「100話問題」なるものが発生することが明らかになりました。
皆さんがご覧になっているこのページのURLを見ていただきたいのですが、ファイル名の通し番号に2ケタしか確保していない。今回が99話ですから、次回はオーバーフローしてしまうことが確実になりました。
日ごろから、エラソーなことばかり言っているくせに、テメーのページでは連番として2ケタしか確保していない、という設計の杜撰さです。まあ、こういう人間が設計したシステムって、拡張性も柔軟性も無い、ロクなシステムでは無いだろう、ということは容易に想像できるというものです :-)

[前へ] [次へ]

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp