持続可能なソフトウェア開発

二週続けてオープンソース絡みのネタで恐縮だが、今週は、 オープンソースによるソフトウェア開発の自由がソフトウェアの発展にどう寄与するかについて解説しよう。 オープンソースの話題となるとコスト面が強調されることが多いものの、 オープンソースやフリーソフトウェアの本質は、(開発者から言わせれば)もっと別のところにある。

ソフトウェア開発の自由

ソフトウェア開発の自由とは、ソフトウェアの発展に欠くべからざる要素だ。 それはFSF (Free Software Foundation)によれば、 ソースコードの公開を前提とし、かつ改変可能、 再配布可能などの基本的な概念をまとめた 「コピーレフト」で保証されることになっている。

オープンソースやフリーソフトウェアといった概念は、そもそも、 開発者の、開発者による、開発者のための哲学である※。 なぜならば自分好みにチューニングしてはじめてソフトウェアの発展を享受できるのであり、 ソフトウェアをチューニングするにはソースコードのアクセスと、 改良・配布が保証されていなければならなかったからだ。

この自由は、結果としてソフトウェアを生きながらえさせることになる。 なぜならば、ユーザは主として開発者だったのであり、 開発できるユーザが次々と改良を施していくからである。

クローズドなソフトウェアの場合、 その開発を行なっていた会社が倒産すれば経営権の譲渡とともに開発体制がうまく引継がれない限りは、 そのソフトウェアの開発も止まる。 オープンな開発体制を敷いていれば、そのソフトウェアを必要とするユーザがいる限り、 メンテナンス体制も持続されていくはずだ。

こうして、持続可能なソフトウェア開発体制がソフトウェアの自由により実現されることになるのだ。

※ オープンソースソフトウェアの更なる発展には、 「開発者でない」ユーザを巻き込んでいかねばならない。 そこで様々な文化の衝突が起こり、あらゆる議論が巻き起こっているのが現状である。 このさきどう転がっていくか、 オープンソースコミュニティのリーダやオープンソース伝道者の手腕がいま、問われている。

ソフトウェア科学の発展

さて、次にもう少し広い視点でソフトウェア科学の発展について考えてみることにしよう。

オープンソース/フリーソフトウェアの開発者は、 しばしば科学技術の研究者と同じスキームで評価される。 すなわち科学者は発表した論文と引用の数で評価され、 ソフトウェア開発者の場合はその開発した成果物であるソフトウェアが評価の基準となる。 既存の成果を取り入れ、その上に新しい成果が作らていく過程は両者に共通した原則である。

成果の積み重ね

オープンソース/フリーソフトウェアの開発も、科学的研究も、 どちらも既存の成果の積み重ねの上で成り立つものである。 ソフトウェア開発における技術の発展には、成果の共有が欠かせない。

オープンソース/フリーソフトウェア開発は、基本的に科学的研究手法と同じである。

科学は、それまでの思考に基づいた情報交換、議論、 考察による新たな知見の発見を積み重ねることによって発展してきた。 そこでは、論文という形式で、 それまでの研究成果が自由に流通することが前提となっている。

ソフトウェア開発においてもまた同じことがいえるだろう。 ソフトウェアの分野では、 研究成果としてアルゴリズムを示した論文の情報共有レベルでは不十分だ。 ソフトウェア開発では、これまでの開発成果を直接利用できる。 それには、実装レベルでの情報共有が欠かせない。

知的財産立国も結構だが、 「囲い込みからは発展を望めない」 ということには十分に心してほしいところである。