1. HOME »
  2. Java Tips »
  3. Beginners

Beginners Article

ソーシャルブックマークに登録 : Yahoo!ブックマークに登録 はてなブックマークに登録 del.icio.usに登録 newsing it!に登録 Buzzurlにブックマーク livedoorクリップに登録 Choix!にブックマーク イザ!ブックマーク

print 印刷用ページの表示

そもそも、「オープンソース」とは何なのか?

オープンソースの定義とライセンスを理解する

2005年2月12日更新

text ●  可知 豊 y-catch@ja2.so-net.ne.jp

著作権と利用許諾

 オープンソースについて理解するには、まず利用条件について知らなければならない。
 
 ご存じのとおり、プログラムは著作権によって保護されている。そのため、プログラムを利用するには、著作権者の許諾が必要になる。多くのパッケージ・ソフトウェアでは、個別に利用契約を結ぶ手間を省くために、あらかじめ定型の利用許諾契約書を用意し、利用者がそれに同意した場合のみ、プログラムを利用できるとしている。よく、プログラムのインストール時に、利用許諾画面が表示されることがあるが、これはこの契約を確認するためのものである。
 
 このような利用許諾契約をソフトウェア・ライセンスと呼ぶ(以下、これを単にライセンスと表記する)。ライセンスは、オープンソースに限らず、多くのプログラムにかかわっている。
 
 ここで注意したいのは、著作物の「利用」というのは、いわゆる「使用」とは異なるものであるということだ。例として、書籍について考えてみると、ある本を読むときに、その本の著作権者に許可を求める必要はない。あるいは、書店で本誌を立ち読みしたとしても、著作権法違反にはならない。
 
 「著作物の利用」といった場合に、それがどのような範囲を表すのかは、文書、映像、音楽といったメディアの種類によって異なる。そして、プログラムの場合、「複製」、「配布」、「修正」に関して利用許諾を得ることになる。つまり、プログラムを利用(複製/配布/修正)するときには、ライセンス条項に従う必要があるわけだ。
 
 多くの商用ソフトウェアのライセンスでは、本来であれば著作権で制限できない条項をユーザーが承諾した場合のみ、限られた数だけプログラムを複製することを認めている。例えば、リバース・エンジニアリングや逆コンパイルの禁止などは、著作権では制限されないが、これらの項目がライセンスに追加されていると制限されることになる。つまり、ソフトウェアの利用条件は、ライセンスという契約によって決まるのだ。

オープンソース・ライセンス

 先述した「オープンソースの定義」自体は、ライセンスではない。これは、ライセンスについての“外枠”を提供するものだ。オープンソース・ライセンスとは、OSIの「オープンソースの定義」に準拠したライセンスのことを指す。現在では、GPLをはじめとし、多くのライセンスがオープンソース・ライセンスとして認められている。OSIが認定しているオープンソース・ライセンスは、OSIのWebサイトに列挙されている。
 
 先ほど説明したように、プログラムを利用するときには、ライセンスに従う必要がある。したがって、オープンソース・ソフトウェアを利用する場合、オープンソース・ライセンスの各条項に従うことになる。ただし、ここで対象になるのは、複製/配布/修正などであって、単にプログラムを実行することに関しては、オープンソース・ライセンスの条項には記載されない。

派生プログラム

 上述したとおり、オープンソース・ライセンスにはさまざまな種類がある。そして、多くのライセンスにおいて共通して言えるのは、「派生プログラム」についての理解が重要であるということだ。
 
 オープンソースでは、ソース・コードを自由に修正することができる。その元になるソース・コードを複製したり修正したり、さらには新たにコードを追加したりした結果が派生プログラムである。
 
 ただし、どのような作業を行った結果を派生プログラムとするかは、ライセンスごとに異なる。例えば、ソース・コードのファイルを書き換える場合だけでなく、コンパイル時にリンクしたり(静的リンク)、実行時にリンクしたりする(動的リンク)といった場合、そのリンク先のプログラムも派生プログラムだと見なすライセンスがある。この点については、ライセンスによって扱いはさまざまだ。
 
 後ほど紹介するLGPLというライセンスでは、すでにLGPLが適用されているプログラムと静的にリンクしたプログラムは派生プログラムとして扱われるが、動的にリンクしたプログラムは派生プログラムにはならないとされている。その一方で、LGPLの説明中には、GPLでは静的/動的を問わず、リンクしたプログラムも派生プログラムになると記述されている(GPLのほうには、派生プログラムに関する明確な記述がない)。
 
 GPLおよびLGPLでは、派生プログラムは派生元プログラムのライセンスと同じライセンスで公開する必要がある。したがって、GPLが適用されたプログラムに動的にリンクしたプログラムが派生プログラムになるとすれば、それもGPLで配布する必要があるだろう。
 
 派生プログラムに関連して、もう少し例を挙げてみよう。
 
 LinuxカーネルにはGPLが適用されているが、システム・コール用のインタフェースはGPLの適用範囲外となっている。そのお陰で、Linuxのシステム・コールを呼び出すプログラムは、システム・コールを含んでいてもGPLの影響を受けない。
 
 また、MPLというライセンスでは、変更後のソース・コードを公開する義務がある。ただし、MPLが適用されたソース・コードと独自開発のソース・コードを組み合わせ、そのソフトウェアのバイナリ・コードを配布する場合には、MPLが適用されたソース・コードの部分だけを公開すればよい。
 
 プログラムにオープンソース・ライセンスを適用する際には、上述したように、何を派生プログラムと見なすかを明示する必要性がある。とは言え、既存のオープンソース・ライセンスのすべてが、このような派生プログラム条項を持つわけではない。例えば、BSDというライセンスには、このような条項はなく、派生プログラムにオリジナルの著作権表示を含めれば、自由に配布することができる。

ページの先頭へ戻る