失敗を許されないという失敗の次世代最有力候補

まとめ

  • ウィルス作成を罪に問う: 賛成!
  • 重大なバグはできるかぎり修正すべき:賛成!
  • PL法のようにソフトウェアにも製造者責任をもたせるべき:賛成!
  • 被害に対しては損害賠償をすべき:当然!
  • バグがあるソフトウェアを公開し続けている場合には開発者を刑罰に処すべき:反対!!!!!!!!

本文

高木浩光@自宅の日記:ウイルス罪法案、バグ放置が提供罪に該当する事態は「ある」と法務省見解の何にソフトウェア開発者やその関係者がざわついているのかをウイルス罪法案に対する法務省見解の何が問題かを理解するための基礎知識で説明しようとこころみたけど、もっと良い説明があった。

それは、小飼弾さんのコラム404 Blog Not Found:寄稿 - 宋メール連載第四回「「失敗が許されない」という失敗」だ。このコラムは原発についての話だけれども、ぜひ、一読していただきたい。

私は科学や工学の基本理念は「人は間違う」「人は自分のみたいものしかみない」というものがあると考えている。ソフトウェア開発は他のハードウェアを使った工業製品と比べて、物理的な制限が圧倒的にゆるい。これは何を意味するかというと、自分の考えや思い込みが製品(ソフトウェア)にダイレクトに反映されやすいということだ。

工業製品は、デザイナーが出してきたデザインをそのまま採用できるとは限らない。なぜならば、物理的制約があるからだ。機能や使い勝手を損なわない程度のデザインしか許されない。しかし、ソフトウェアの場合は、製品はデザインそのものなので物理的制約によるデザインの修正ができない。結果として、間違いがダイレクトに製品そのものに反映される。

また、工業製品でいう歩留まりの概念が適用できない。理由は、不具合がある場合は設計そのものに不具合があるので、出荷されるすべての製品がアウトになるため。

また、工学の大前提は「ある制約の下で最良のデザインをする」というもの。ウイルス罪法案に対する法務省見解の何が問題かを理解するための基礎知識で説明を試みたけれども、情報セキュリティの話においては、「ある制約」がころころと変わってしまう。さらには、ITの世界はマウスイヤーと呼ばれるれめ、未来のある時点での制約が、現在の制約からは想像つかないことが多いということも多々ある。

何が言いたいかというと、ソフトウェア開発は一般の工業製品に比べてより失敗しやすいものであるということを言いたい。そして、失敗を比較的早く修正できるからこそ、これほど普及してきて、我々の生活が便利になっているということを言いたい。

ソフトウェア開発の性質からして、バグがないソフトウェアはつくれない。どのバグが重大な脆弱性になるのかは攻撃方法が編み出されるまで予測できない。重大なものとなってしまったバグに気づくには攻撃され、被害が明らかにならないと難しい。もし、ソフトウェアの製作者をソフトウェアにバグがあることを理由として刑罰に処すならば、ソフトウェアを開発したい人が少なくなってしまう。そうすると、多様性が失われ、今のような早い速度でのソフトウェアの進化が止まってしまう。

民事的責任(損害賠償)はOK、ソフトウェアハウスが出荷したソフトウェアの責任をとるのもOK、でも、バグがあることを理由にソフトウェア開発者が刑罰に処されるのはNG。もちろん、ウィルスを作成し、社会に被害をあたえたならばそのソフトウェア開発者は刑罰に処されるべき。でも、それは「バグ」をつくりこんだからではない。