ソフトウエアのライセンスには,たいていこんな文言がある。「このソフトを使用した結果として発生した損害には責任を負わない」というものだ。ソフトを作る側にすれば当然だろう。例えば,Excelを使って株価の推移をシミュレーションして,その結果に基づいて売買を決めていたとする。その予測が外れたからといって,マイクロソフトがその責任を負うわけにはいかないからだ。

 「でも待てよ」,と言ったのは筆者の友人だ。「そんな甘えたことを言っているから,いつまでたってもバグがなくならないんじゃないのか?」。

 ソフトが完全なもので,バグがなければ確かにユーザーの利用責任だろう。しかし,予測が外れたのがバグによるものだとしたらどうだろうか。先の例で言えば,シミュレーションのアルゴリズムは正しいのに,Excelのバグでまったく違う予測が出てしまい,その結果としてユーザが損害を受けた場合にはソフトの製作者に責任があるのではないか。

ハードならば損害賠償の対象になり得る

 話をハードウエアに置き換えてみるとわかりやすい,と彼は言う(ちなみに彼はLSI設計などを手がけるハードウエア技術者である)。ハードにバグがあったためにユーザーが被害を被ったら,当然メーカーは訴訟の対象になる。だからPentiumプロセサの浮動小数点演算ユニットにバグがあったときに,米インテルはあわてて全品を回収した。企業ユーザーだけではなく,消費者からの交換要求も受け付けた。

 ハードウエアの多くは「PL法」の対象である。ユーザーが間違った使い方をした結果発生した損害であっても,損害賠償の対象となり得る。

 だから例えば,ソフト・メーカーがセキュリティ・ホールを発見する前に,そこを突かれて損害を被った場合は,メーカーに賠償義務があると考えるべきではないのか,というのだ。ソフトのライセンスは見慣れていたし,筆者はどちらかというとソフト技術者に共感を感じる方なので,今まで疑問も抱かなかった。

 彼の言い分にも一理ある。いや,十理も百理もあるかもしれない。

 考えてもみよう。もしも自動車のエンジン制御用コンピュータのソフトにバグがあり,それが原因で事故を起こしたとしても,ソフト開発者は責任を問われないのか。仮に商用のリアルタイムOSを使っていて,そのバグが原因だとしたらどうだろうか。そのOSベンダーに対する訴訟を自動車メーカーが起こしても不思議はない。

 現実には,バグのないソフトを開発するのは非常に困難である。ただ完全無欠とはいかないが,対処のしようはある。設計上の問題を根絶するために,CASEツールや適切なソフト開発方法論を適用するというのも一つの考え方だろう。実装の初期段階からモジュール単位でテストを実行していくというのも有効な方法のはずだ。

 その割には筆者が90年代後半に取り上げた,テスト・ツールや開発方法論の記事への読者の反応はあまり芳しいものではなかった。まだ常識という段階ではなかったし,あまりテストに関心がなかったのだろうか。筆者のタイトルの付け方や書き方が悪かったというご批判は頂くとしても,これはちょっと寂しい。

 それとも,いま改めて記事を書けばぐっと違った反応が出るのだろうか。

(北郷 達郎=日経バイト副編集長 兼 編集委員)