2014/06/13(金)なぜ自分のプログラム(ソースコード)を公開するのか
我々は、精度保証付き数値計算という分野について日夜研究を行っています。精度保証付き数値計算は、数値計算をすると同時にその誤差を数学的に厳密に評価出来るような新しい数値計算法です。数学の証明の一部に使える信頼性を持ち、実際いくつもの問題が精度保証付き数値計算を援用して解かれています。
ところで、我々の分野の研究発表なり論文で、ソースコードを公開しているものは非常に少ないです。このことがこの分野の普及の妨げになっていると考えられ、それはそれで大変に大きな問題ですが、今回は少し違う観点で考えてみます。
精度保証付き数値計算の発表なり論文では、「精度保証付き数値計算を用いて○○という問題を解き、△△の範囲内に解が存在することが厳密に保証された。」というふうな言い方がよくされます。正直に申し上げると、本当に自分のプログラムにミスが無いと言えるのか、完全な自信があるわけではありません。他人の成果を見て何か怪しいんじゃないのと思ったことも一度や二度ではありません。プログラムにバグが無いことを保証してくれる何かが無いと、厳密に保証されたとは言えないのではないか。
しかし、よく考えるとこれは数学の定理の証明も同じことで、数学者もミスはするし、定理の正しさは大勢の数学者の検証によって(場合によっては長い時間をかけて)正しいかどうかの評価が確定するのです。
精度保証付き数値計算での計算結果の厳密性を保証するのは、論文に書かれた理論と、それを実装したプログラムです。両者を検証して初めてその正しさが分かるのに、プログラムを公開していなかったらチェックのしようがありません。数学の定理の証明でその一部が黒塗りで塗りつぶされているようなものがあったとして、それを正しい証明と認められるでしょうか。
知り合いの研究者から、「理論も本当に大事なところは書かないことがある。ましてやソースコードなど出せない。大事なテクニックが盗まれてしまう」という話を聞いたことがあります。仮にも解の正しさを「証明した」と謳う精度保証付き数値計算で、こんなことがありえるのか、と思います。
以上のような考えのもとに、今後自分が何らかの発表をするときのソースコードは全て公開し、全世界の人々の審判の目に晒されることを覚悟しようと思います。この分野の全研究者がソースコードを公開するようになって欲しいのですが、まず自分から始めないと、と考えました。
ご意見、反論があれば是非お願いします。
また、今後査読が回ってきたとき、ソースコードの非公開を理由にrejectする、というような過激なことも考えています。これに関してもご意見をお願いします。
2014/06/13 石垣島から羽田に向かう機内にて