科学理論のテストと情報システムのテスト

IT法コラム

 以下は、ある著作からの引用です。「できるかぎり立派に○○を確立することがわれわれの目的であるからこそ、われわれはその○○をできるかぎり厳格にテストしなければならないのであり、コトバを換えていえば、その○○の欠点を見出そうとし、それを反証しようと務めねばならない」、「われわれの最善の努力にもかかわらずそれを反証できないという場合にのみ、○○は厳格なテストに耐えたということができる」、「ある○○を裏づける諸事例を見出したということは、もしわれわれがその反証を見出そうと努めて失敗しているのでなければ、それが意味するものはきわめて少ない」……

 ここで「○○」には何が入るかと問われれば、IT関係者なら、「情報システム」などと答えたくなるところです(耳が痛いので、答えたくないかも知れませんが)。しかし、正解は、「反証」という言葉が少々余計なヒントになっているとおりで、(科学上の)「理論」です。原文は、K.ポパーの「歴史主義の貧困」(久野・市井訳)からのもので、著者のいわゆる「科学的発見」論を敷衍した部分です(著作全体の論旨からは、やや傍論ですが)。
 ITの世界にも、テストはバグの無いことを示すためにあるのではなく、バグを抉り出すためにある、という趣旨の格言がありますが、それにしてもピッタリきます。都合の良いデータで、都合の良いオペレーションをすれば、見掛け上はうまく動く。しかし、厳しいテストに耐えていないから、それより遥かに厳しい実際の運用にはとても耐えられないシステム。趣味のプログラミングならともかく、プロ(似非でしょうが)の仕事でも、このようなものが少なからずあるのが現実です。
 これに対して額面どおりのプロであれば、バグを抉り出すために、計画的・段階的なテスト、テスト密度や障害密度といったメトリクス、開発者と検証者の分離など、それなりの担保を用意します。しかし、いくらこうした担保があっても、システムを徹底的に「反証」しようとする「最善の努力」がなければ、それも空念仏に終わってしまうでしょう。ポパーは、科学上の理論を「反証」する「最善の努力」の担保として、どのようなものを心に置いていたのでしょうか。
 いや、そもそも、多くの科学者が終わりのないテストを続ける科学上の理論より、実務の制約がある情報システムの方が厳しい条件にあるのかも知れません。もっとも、その厳しさを言い訳に、科学理論のテストに相当するのは開発時のテストではなく、リリース後のユーザによる「テスト」なのだ、とする声が聞こえてきそうですが。