オープンソースとは?わかりやすく説明

スポンサーリンク
IT業界の基礎知識

オープンソースソフトウェア(OSS) とは何でしょうか?

わかりやすく説明します。

スポンサーリンク

オープンソース・ソフトウェア (OSS)

オープンソース・ソフトウェア (OSS)とは、ソフトウェアのソースコード(プログラミング言語で記述された文字列)を無償で公開し、誰でも自由に改良・再配布ができるようにしたソフトウェアのことです。

代表的なオープンソース・ソフトウェアは、Linux、Apache、MySQL、PHP等です。

 

オープンソース・イニシアティブ (OSI) では、「オープンソースの定義 (OSD)」として、オープンソースを名乗るソフトウェアが満たすべき条件として以下の要件を挙げています。

 

  1. 自由な再頒布
  2. ソースコード (「ソースコード公開」も含む自由な利用)
  3. 派生物 (Derived Works. 派生物の自由な利用)
  4. 原著作者のソースコードとの区別 (Integrity) – これはTeXなどパッチのみの配布を要求するソフトウェアをOSDに合致させるための妥協の産物である。
  5. 特定人物・集団に対する差別の禁止 – たとえば「特定国家への輸出を禁ずるソフトウェア」はOSDに合致しない。
  6. 使用分野 (Fields of Endeavor) に対する差別の禁止 – 例えば「兵器への利用を禁ずるソフトウェア」はOSDに合致しない。
  7. ライセンスの権利配分 (Distribution of License. ライセンスが再頒布者に認める権利は差別なく与えなければならない。)
  8. ライセンスは特定製品に限定してはならない
  9. ライセンスは他のソフトウェアを制限してはならない – 著作物として別個のものと明確に定義できる各ソフトウェアはそれぞれ別のライセンスであってもよい(例えば一方がオープンソースライセンスであっても他方はプロプライエタリであってもよい)。GPLもこの条件に合致している(”集積物の別の部分と見なされるパッチ”を参照)。
  10. ライセンスは技術中立 (Technology-Neutral) でなければならない – ライセンスに特定技術に依存するような条項があってはならない。例えばクリックラップ(英語版)などのソフトウェア利用許諾契約は、GUIのクリック操作という、契約に対する明確な同意の意思表示を強要する。仮に「クリックラップ」条項が含まれたオープンソースソフトウェアをCUI環境でしか動作しないソフトウェアに組み込んだ場合に問題が発生する。

 

プロプライエタリ・ソフトウェア

オープンソースの対義語は、プロプライエタリ・ソフトウェアです。

ソフトウェアの使用や改変、複製などを法的あるいは技術的な方法で制限しているソフトウェアです。

代表的なプロプライエタリ・ソフトウェアは、Windows、Excel、Word等の商用ソフトウェアです。

 

伽藍とバザール

「伽藍とバザール」(がらんとバザール、The Cathedral and the Bazaar、カテドラルとバザール)は、エリック・レイモンドによって書かれたオープンソースソフトウェア (OSS) のソフトウェア開発方式に関するエッセイです。

 

「バザール方式」は、活発でオープンなコミュニティで開発されたLinuxカーネルとその周辺のソフトを、成功した開発例として言及されました。

一方、伽藍方式は、正反対の方式として(成功しないもの、といった雰囲気を含んで) 言及された。

 

よく誤解されていますが、Linuxとの比較対象としてエリック・レイモンドの念頭にあったと思われるものはフリーソフトウェアで開発が不活発であるとみなされているフリーソフトウェア財団 (FSF)のGNU Hurdです。

よって,、「オープンソースソフトウェアの開発手法=バザール」と言っているわけでもないし、「プロプライエタリ・ソフトウェアの開発方式=伽藍」と言っているわけでもないです。

 

オープンソースとフォーク(fork)

ソフトウェア開発におけるフォークとは、あるソフトウェアパッケージのソースコードから分岐して、別の独立したソフトウェアを開発することを言います。

オープンソースの世界ではしばしば起こります。

 

例として

  • MySQLからフォークしたMariaDB
  • WebkitからフォークしたBlink

などがあります。

 

オープンソースのライセンスの種類

下の表は、OSS (オープンソースソフトウェア) のライセンスごとに、そのOSSを利用したプログラムを配布するとき、ソースコードを公開しなければならないかどうかを示しています。

 

表中の“○”は公開しなければならないことを表し、“×”は公開しなくてもよいことを表しています。

GPL LGPL MPL BSD
OSSのソースコードを修正して作ったプログラム ×
OSSに静的にリンクしたプログラム × ×
OSSに動的にリンクしたプログラム × × ×

 

この表は、過去の情報処理試験にも出たことがある表です。

GPL GNU General Public License

GNU General Public License(GNU GPLもしくは単にGPLとも)とは、GNUプロジェクトのためにリチャード・ストールマンにより作成されたフリーソフトウェアライセンスである。八田真行の日本語訳ではGNU 一般公衆利用許諾書と呼んでいる
(Wikipediaより)

 

GPLとは、GNUプロジェクトのためにリチャード・ストールマンにより作成されたフリーソフトウェアライセンスで、プログラムの複製物の所持者に対して

  • プログラムの実行
  • プログラムの動作を調べ、それを改変すること
  • 複製物の再頒布
  • プログラムを改良し、改良を公衆にリリースする権利

という4点を許諾しています。

 

静的/動的に関わらずGPLライセンスされたライブラリにリンクする場合には二次著作物であると解釈され、自動的にGPLライセンスが適用されるためソースコードの公開義務が生じます。

GPL汚染

GPLのソースが1行でも混入すると、そのソースの全てはGPLとして公開しなければならなくなります。

GPLを適用したソースコードを利用した場合、ソフトウェア作者の意図によらず、GPLが適用されてしまうことを、ライセンス感染 (この場合は、GPL汚染) と呼びます。

 

このこともあり、現在、GPLは衰退方向にあるとされています。

 

LGPL (Lesser General Public License)

LGPLは、厳格なGPLから派生したライセンスで、他のプログラムにリンクされることを前提としたライブラリのために作成されました。

 

「改変や再コンパイルの自由」や「二次著作物を再頒布する場合のソースコードの公開」などはGPLと同等ですが、LGPLライセンスされたライブラリをリンクして使用するプログラムの頒布に対する制限は、

  • 動的リンク:本体プログラムのリバースエンジニアリングを禁止する条項を含めてはならない。
  • 静的リンク:本体プログラムのソースコード、またはオブジェクトコードを公開しなくてはならない。

というように動的リンクであれば本体プログラムのソースコードを公開する義務がないライセンスになっています。

 

MPL (Mozilla Public License)

MPLとは、ネットスケープコミュニケーションズとMozilla Organization(後のMozilla Foundation)によって作成された、コピーレフトのライセンスのひとつです。

 

二次著作物にも自動的にMPLライセンスが適用されるため、プログラムを頒布する場合にはソースコードを公開する義務が生じるが、GPLと比較するとコピーレフト性は弱く、MPLライブラリに静的/動的リンクするプログラムはライセンス適用の対象外となります。

 

BSDライセンス

BSDライセンスとは、カリフォルニア大学によって策定されたフリーソフトウェアで使われるライセンス体系のひとつです。

BSDライセンスのソースコードを組み込んだソフトウェアは、著作権表示、ライセンス条文、無保証の旨の三点をドキュメント等に記載さえしておけば、ソースコードを公開せずに頒布することが可能になっています。

 

 

ところで、最近のオープンソースで開発された成果物を配布する流れは、商用で利用しやすいMPLまたは、EclipseのCPL, EPLが主流のようです。

これらは概念的に似ています。

CPL (Common Public License)

CPLとは、IBMがEclipseをオープンソース化する際に作り出したライセンスです。

 

EPL (Eclipse Public License)

EPLとは、CPLから派生した、Eclipseの現在のライセンスです。

 

シェアード・ソース・ライセンス

シェアードソース(Shared Source)は、コンピュータプログラムのソースコードを個人あるいは組織が共有するためのマイクロソフトによるフレームワークです。

 

シェアードソースで使われるライセンスは以下のとおりです。

Microsoft Public License (Ms-PL)

当初、Microsoft Permissive Licenseと呼ばれていた、もっとも制限の緩やかなライセンスです。

 

Microsoft Community License (Ms-CL)

コラボレーションによる開発向けライセンスです。

 

Microsoft Reference License (Ms-RL)

ソースコードの参照だけが許される、もっとも制限の強いライセンスです。

 

まとめ

オープンソースソフトウェアのライブラリを使う場合は、ライセンスについては十分注意しなければなりません。

 

うっかりGPLライセンスのライブラリを使った場合、そのソフトウェアを全部公開する必要がある場合があります。

GPL感染と言うやつです。

 

また、コミュニティの協力を取り付けるには様々な工夫が必要でしょう。

 

コメント

タイトルとURLをコピーしました