そうか、バグを作ると逮捕されるのか……

http://takagi-hiromitsu.jp/diary/20110527.html
http://togetter.com/li/140777


認識の差は、多分、実際にプログラムを作って配布/販売した事があるかないかなんでしょうねぇ……


例えば「テストが完璧ならバグは全て潰せるだろ!」と思っている人がいますが、そういう人に例えば、ではまずそれを論文にまとめて 1 冊の本にして下さい。その本に 1 字の誤字、脱字も無い事が必要です。加えて、読み手がその文章を読んで必ずあなたの主張する内容を正しく理解できる事が必要です。とか言うと「何を言っているんだ?」という顔をされます。それがその手の主張に対するプログラマの認識なんですが、中々理解されない。


プログラムの場合、普通は英語に似た何かの言語で書くものですが、1 字の誤字、脱字がバグになります。加えて、プログラマは大抵の場合、ユーザーの日本語(あるいは英語)の文章を介して相手の要望を汲み取る努力をし、その意図した通りの動作を実現しようとしますが、まずうまく行きません。これも(ユーザーの側から見れば)バグとなります。


しかも、日本語環境向けに作ったものを英語環境で動かされたとか、周辺装置で○○を使っている場合だけバグが発生するとか、実際の現場はよりシビアであり、上記はむしろ「全てのバグを潰す」ための最低条件なんですけどねぇ。


「報告があればすぐに直せるだろ!」と思っている人も居るようですが、そもそも完璧な報告はほとんどなく、それどころか正しくない報告も少なからずあります。その点でまずソフトウェア開発者はひどく苦労しています。


正しくない報告の筆頭はそもそも関係ないソフトウェアの「報告」です。1 つのパソコンの上で色んなソフトを動かしているからでしょう。でも、自分が作ったものでないソフトウェアのバグを報告されても何も出来ません。
その上、それら無関係な報告に紛れて「動かない」とか「ファイルが壊れた」といったシンプルな報告が届きます。開発者は通常、「少なくとも自分の環境で動作する」事を確認してから公開します。そのため開発者の手許では「動かない」とか「ファイルが壊れる」という事は無く、それらの報告は「ああ、例のよって他のソフトウェアのバグか」のように認識され捨てられます。それが間違いなくそのソフトウェアのバグであって、あなたの環境で致命的な被害を発生させるとしてもです。
ソフトウェアは「少なくとも開発者の環境で動作する」が、場合によってはバグで動作しない事があります。例えば他に似たようなソフトウェアがあって、それと一緒に使うとおかしいとか、日本語フォルダの下で動作するとおかしいとか、中国語 Windows で動かすとおかしいとか、制限されたユーザーで使うとおかしい、といった具合です。良い報告ではこういった「どういう環境で使ったらおかしいよ」というのが書かれています。加えて、きちんと「どういう操作をしたか」が書かれています。それは「マウスを使って」「右クリックをして」「メニューから「○○」を選択して」「キーボードショートカットで」「ボイスコントロールで」のようにきちんと操作の詳細が分かるものです。また、利用したソフトウェアのバージョンに付いてもきちんと書いてあります。


以上3点を押さえるだけでも相当いい部類の報告になります……残念ながら完璧な報告にはまだ遠いのですが。


「修正したらすぐ公開できるだろ」と思っている人も居るようですが、開発者にとって公開ほど大変な作業はありません。修正がきちんと機能するのか、その他の部分は影響なく動作するのか、過去のファイルは読めるか……確認しなければならない事は山ほどあります。ソフトウェアの規模が大きくなればなるほど、利用者が増えれば増えるほど、修正や公開は大変になります。
そのため中には「バグ」だと認識しているものの「これを修正するとその影響で困った事になるので直せません」のような事態に陥る事さえあります。例えば Excel のバグを直した結果、過去のファイルが開けなくなったら困りますよね*1


ウィルスを疑われるソフトウェアについて、ごくごく特殊な事情だ、とかいうのかもしれませんが、おそろしい萎縮効果を生む事になるでしょう。萎縮効果とはどういう事か? 検索エンジンを例にお話をしましょう。今、世界でトップを走る検索エンジンgoogle です。一方で例えば中国では百度のような検索エンジンが出てきて競い合っています。日本は独自の言語を持ち、文字も圧倒的に多くその検索を他国が開発しようとすると大変難しかったはずなのに、国内の検索エンジン開発進まず、まったく勝負にならない状態になっています。
これは 90 年代に「著作権を元に訴える」可能性がある事を政府が示唆した結果、例えばワープロの日本語変換、文節分解など、多くの応用可能技術があったのに進化がとまり、結局全部外国に持って行かれた、というところに主原因があると言われています。


ちょうど去年、岡崎図書館事件と呼ばれる事件がありました。技術的な面からも通常のソフトウェアの開発の面からも、何の問題も無い*2ものであったにも関わらず、図書館側の主張通りに開発者は有罪となった事件です。このような事が続けば日本のソフトウェア開発は先細りを続けるでしょう。
フリーソフトが無くてもいい、商業ソフトは関係ない、と思うかもしれません。しかし、日曜プログラマフリーソフト開発者、ダメなフリーソフト、機能が足りないフリーソフト、バグの多いフリーソフト、それらの作者は、プロ野球に対してのアマチュア野球選手、あるいは野球少年、といった存在に近い、日本のソフトウェア開発の頂点を高くするためには無くてはならない存在なのです。日本サッカーが J リーグ発足以降、プレイ人口、ファン人口の拡大に伴ってレベルアップを続け、世界と競い合えるまでに成長したのを考えて下さい。


そんなわけで、少なくとも、特にフリーソフトの利用については利用者の自己責任。そのバグでネットワークで繋がっているパソコンが全部壊れたりしても、それがバグであるならインストールした人の責任*3、となるよう心から願ってます。
あと、バグで検挙されるのはイヤなので、きちんと別の物的証拠で*4動機がある事を証明できた*5場合にのみ有罪となるようにしておいて下さい。

*1:そういう事は珍しく極端なたとえですが

*2:バグだらけだったのはむしろ図書館側のシステムでした

*3:これはユーザーとしては怖いかもしれません。ですが、今後のコンピューティングはネットワークの方に発展して行くでしょうから、多くの人にネットワークにチャレンジして欲しいのです

*4:岡崎図書館事件の件から類推すると、供述を元にされるのはダメな予感が……

*5:答弁の流れ的に、「そういう動作してるんだから動機もあるだろ」という認識である予感がしますが、岡崎図書館事件についても図書館側から見れば攻撃されているという認識が(自分自身のバグにより)成立していたためこれを認めるのもダメな予感が……