■プログラムのバグから危機管理まで

 先日、小生の手による非線形最小2乗法ソフト「耕太郎」の中のバグを発見した。標準偏差(s.d.)と標準誤差(s.e.)を取り違えるという単純なミスであった。これによって最小2乗推定値の信頼度が1桁も違ってしまう。ミスにはそれなりのわけもあるのだが、・・・・・
 
 十分にチェックし、バグフィックスには完璧を期したつもりであっても、絶対に誤りはないとはいい切れないのがコンピュータプログラムである。また、プログラムには変更を加えるごとに新たなバグを生ずる、いわゆるモグラ叩き現象がつきものである。その結果、多大な時間と労力を費やし、デバッグに腐心することになる。そんなこんなでやっと虫退治を終え一安心していた矢先、新聞紙上に思いもよらぬ記事を見つけた。NASAが1999.10.23に打ち上げた火星探査機が火星の周回軌道に乗れず、消息を絶ったというものである。
 
 その原因が実に傑作であった。探査機を開発したロッキード社がヤード・ポンド法を用いて設計・製造したのに対して、探査機の航路を管制するNASAがメートル法を用いて探査機をコントロールしたため、火星に接近する際の飛行高度が予定より100キロメートルも低くなり、目標の軌道を外れてしまったということらしい。この記事をはなしの枕にしてみたい。
 
===================================
 
(1)メートル法を採用できないアメリカの後進性
 センチとインチは語感こそ似ているものの大きな差がある。この失策により約1億2500万ドル(135億円)が宇宙の藻屑として失われたことになるが、「訴訟の対象にもなるような大きなバグに比べ、私の犯したバグはなんともかわいいものだ。所詮、大した実害はもたらさないし、裁判ざたになることもないだろう。」と考えて、自分の間抜けさをすり替えることにした。
 
 日本がメートル法を採用したのが1921年、しかし、全国津々浦々までは行き渡らなかった。生類憐れみの令でもそうであったらしいが、再三の勧告のあと、メートル法以外の現行の計量法を使ってはならぬというおふれがでたのが1959年、そして、1966年にやっと切り替えが完了した。このように、使い慣れた尺貫法からメートル・キログラムに切り換えるのは、ずいぶん時間のかかる骨の折れる仕事だった。ただし、2、3の例外があり、テレビの大きさを示すのに22型とか25型とかインチを使っているが、それはテレビをアメリカに売り込むための方便であった。
 
 長年親しんできた単位系から脱却するのは容易なことではない。また、メートル法の法制化には巨額な費用がかかる。たとえば、NASAは宇宙ステーションを国際協力で作ろうとしているが、日本やフランスがメートル法にしたがって作った製品を、ヤードで作ったアメリカ製品とどう付き合わせるつもりなのか−−−NASAは、もし宇宙ステーションをメートル法で作るとすると、2億ドル余計に費用がかかると試算している。
 しかし、だからといって、世界に冠たる米国・アメリカがいまだメートル(米)制を採用できないでいるのは困ったものである。これは先進国アメリカの後進性を示す1つの事例だといえよう。
 
(2)TMI・チェルノブイリ・東海村
 当該のNASAの担当者は次のように話しているという。「人間は間違いを犯す。問題なのは、誤りをチェックできなかったNASAのシステムである。」しかし、東海村の臨界事故をみてもわかるように、チェックシステムが有効に働くとはかぎらないし、大量の放射性物質を撒き散らかした事故にもかかわらず、危機管理とはこうあるべきといった規範となるような事後の対応も十分ではなかったように思う。
 
 1979年、アメリカTMI(スリーマイル島)事故が日本に及ぼした影響は極めて軽いものに留まった。TMI炉と日本に導入されているものとは炉型が違う設計であるから、日本の原発については心配無用。また、TMI発電所を運営している会社が日本では考えられないほど小さな会社であって、特別な保護を受けて基盤の安定している日本の大会社とは違う、というのがその理由であったかと思う。
 
 それから7年たって、今度は第2の超大国ソ連でチェルノブイリの大事故が起きた。このときの放射性物質汚染は、国境を越えて、全ヨーロッパを覆い、極東日本でさえ検出されたにもかかわらず、チェルノブイリ事故の影響はTMIの場合よりさらに小さかった。社会体制が違うという点がものをいったのであろう。
 
 東海村事故は原子炉本体の事故ではないが、放射性物質を大量に放出したという点においては同じと考えてよかろう。これまで、原子炉の大事故が起こるのはアメリカやソ連であって、日本では起こらないだろうといわれてきた。奇しくも今回の事故によってこの主張は覆ることになったが、その主張は必ずしも根拠のないことではなかった。日本人技術者がもつ几帳面に物事を処理する性格が日本の原子力の安全性を支えてきた一角であることは疑いない。しかし、この日本人の特質はやがて変わるときがくるし、もうすでに変わったとみてよいのかもしれない。
 
 日本人技術者が頼りにならなくなった場合にも、安全であり続けるようなる原子炉、すなわち、何か事故が起こりかかるとそれを抑えてしまうような安全装置のついた原子炉のことではなくて、それ自身放置しておいても炉心が決して焼けることのないような炉、炉心部が焼けても放射性物質を大量に出すことのない炉が、本質的に安全である原子炉なのであろう。
 原子力にはまったくの門外漢の小生であるが、原子力をエネルギー源として使うからといって、やめろというつもりはさらさらない。このような安全な原子炉を作ってほしいと思うし、100%原子力に依存しないエネルギー作りも同時に推進させることを要請したい。
 
(3)間違いだらけのソフト選び
 どんなエネルギー源でも、使い方の正否で事故が起こる。エネルギー源に罪があるのではなく、それを扱う人間の側に問題がある。それはコンピュータも同じだ。私にいわせれば、プログラムを作るのも人間である以上、「コンピュータは誤りを犯す。問題なのはコンピュータの出力をいつの場合も鵜呑みにする人間である。」ということになる。プログラムのバグに対しても、柔軟で実際的な姿勢が求められる所以である。また、少なくとも科学を志す者にとっては、たとえ既成のソフトウェアを利用するにしても、どのような処理がなされているのかその理論的背景を知っておくべきで、The computer told me!と盲信する姿勢は、The tail wags a dog!(主客転倒)であり、厳に慎みたいと思う。
 
 非線形最小2乗法に関しては、決して多いとはいえないながらも、これまでにいくつかのソフトウェアが開発されてきた。それらはサブルーチンであったり、商用のプログラムパッケージであったりするわけであるが、本稿の最後として、非線形最小2乗法ソフトの優劣の見分け方について解説しておきたい。
 
a)演算アルゴリズムが充実していること。
 これは解の収束安定性のためには必須であり、少なくとも、ガウス・ニュートン法、マルカール法、シンプレックス法がサポートされていることが最低条件である。現在、ほとんどのソフトはこの点をクリアしている。
 
b)グラフ機能、とくに回帰曲線の信頼区間表示が可能であること。
 非線形最小2乗法によるy=f(x)型回帰とその信頼区間表示については、主要な統計パッケージにすでにサポートされているが、信頼区間の表示は、食中毒原因菌の増殖曲線から食中毒の発生を予測する場合など、医学分野においてもしばしば利用されている。この機能が付いていないソフトは精度保証が十分なされているとはいえない。
 
c)パラメータの誤差評価が精確になされていること。
 誤差を評価する場合、たとえば、ガウス・ニュートン法で求めた誤差とマルカール法で求めた誤差が食い違ったら不精確だと思ってよい。また、シンプレックス法で計算した場合に、誤差が表示されればそのソフトの信頼性は高いと考えてよいだろう。
 
 とくにcは重要であるが、残念ながらこの点をクリアしているソフトはほとんど見あたらない。コンピュータプログラムには間違ったものがいくらでもあるといったら驚かれるかもしれないが、実際、世界中の多くの非線形最小2乗法プログラムは潜在的なバグをもっていて、いまだ顕在化していないのはプログラマー自身も(無論ユーザーも)それに気づいていないだけの話なのである。