OSSのライセンスを理解する（「使用」と「利用」の違い、知っていますか？）

最近、私的にDockerで遊んでいるのですが、Dockerを使っていると様々なライセンスを有したオープンソースソフトウェア（OSS）と遭遇します。自分が知らない間に著作権に抵触してしまうことが怖かったので、OSSのライセンスについて以下の流れでまとめてみました。

1. 「ライセンス関連用語」を理解する
1. 「オープンソースの定義」を理解する
1. 「コピーレフト」を理解する
1. 「主要ライセンス」を理解する

<a name="「ライセンス関連用語」を理解する"></a>
## 1.「ライセンス関連用語」を理解する

OSSを理解するにあたって、まずは主要なライセンス関連用語の定義を理解することが重要です。私の場合は、**「使用」と「利用」の違い**や**「オープンソースソフトウェア」と「フリーウェア」の違い**について、恥ずかしながら明確に理解できていませんでした。。。

#### 【オープンソース・ソフトウェア（Open Source Software, OSS）】
- ソースコードが無償で公開されており、誰でも複製・配布・改良できるソフトウェアのこと。

<a name="派生ソフトウェア"></a>
#### 【派生ソフトウェア（derived works）】
-  あるソフトウェアを**引用または改変**して作成されたソフトウェアのこと。
- 著作権法における「二次的著作物」を示す。

<a name="頒布"></a>
#### 【頒布（distribution）】
* ソフトウェアを第三者へ提供すること。
* 「配布」と同義。

<a name="再頒布"></a>
#### 【再頒布（redistribution)】
* 誰かが頒布したソフトウェアを入手し、別の場所で頒布すること。
* 派生ソフトウェアを第三者へ提供すること。

#### 【使用（use）】

> 「使用」とは、著作物を見る，聞く等のような単なる著作物等の享受を指す。  
（「平成10年2月文化庁著作権審議会マルチメディア小委員会ワーキング・グループ中間まとめ」より）

- ソフトウェアを実行したり、ソースコードを閲読・コンパイルすること。
- OSSの場合、**ソフトウェアの使用は自由である。**

<a name="利用"></a>
#### 【利用（exploit）】

>「利用」とは、複製や公衆送信等著作権等の支分権に基づく行為を指す。  
（「平成10年2月文化庁著作権審議会マルチメディア小委員会ワーキング・グループ中間まとめ」より）

- 対象のソフトウェアを複写・改変・再頒布すること。
- 新たに作成したソフトウェアの一部として、対象のソフトウェアを同梱すること。
- ソフトウェアの利用は**著作権法によって制限されている**。OSSの場合はそのライセンスに従う限り利用が可能である。

#### 【プロプライエタリ・ソフトウェア（proprietary software）】
- 実行ファイル（バイナリ）として頒布され、ソースコードは公開されないソフトウェアのこと。
- 商用ソフトウェアやフリーウェア、シェアウェアなどがプロプライエタリ・ソフトウェアに該当する。
- プロプライエタリ・ソフトウェアの利用は基本的に禁止されている。
- **使用許諾書や独自のライセンスで規定された範囲で使用しなければならない。**

#### 【フリーウェア（freeware）】
- プロプライエタリ・ソフトウェアのうち、無償で提供されるソフトウェアのこと。

|種別|使用|利用|
|---|---|---|
|プロプライエタリ・ソフトウェア|使用許諾書や独自のライセンス<br/>によって制限|禁止|
|オープンソース・ソフトウェア|自由|オープンソース・ライセンス<br/>によって制限|

---

###### 参考文献
- [オープンソースソフトウェアとは - Weblio辞書](http://www.weblio.jp/content/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
- [プロプライエタリソフトウェアとは - Weblio辞書](http://www.weblio.jp/content/%E3%83%97%E3%83%AD%E3%83%97%E3%83%A9%E3%82%A4%E3%82%A8%E3%82%BF%E3%83%AA%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
- [派生プログラムとは - Weblio辞書](http://www.weblio.jp/content/%E6%B4%BE%E7%94%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0)
- [フリーウェア - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%BC%E3%82%A6%E3%82%A7%E3%82%A2)
- [ソフトの配布とライセンス - 可知豊](https://www.catch.jp/openoffice/lisence/softbank_cmag200408.html)
- [OSSをライセンス的に正しく使う／プロプラだけの製品とするための11のチェックポイント - NEC](http://jpn.nec.com/oss/osslc/doc/OSC20090124SendaiBassui.pdf)
- [GitHubを利用する際に注意したいOSSライセンスのポイントとは - Think IT](https://thinkit.co.jp/story/2014/02/24/4843)
- [オープンソースとは - 日本ユニシス](https://www.unisys.co.jp/solution/tec/oss/what.html)
- [著作権審議会マルチメディア小委員会ワーキング・グループ中間まとめ - 公益社団法人著作権情報センター CRIC](http://www.cric.or.jp/db/report/h10_2/h10_2_main.html)
- [企業技術者のためのOSSライセンス入門（1）：訴訟が増えている!? OSSライセンス違反 - ＠IT](http://www.atmarkit.co.jp/ait/articles/0812/08/news122.html)

<a name="「オープンソースの定義」を理解する"></a>
## 2.「オープンソースの定義」を理解する

OSSを規定する上で重要となる「オープンソースの定義」を知っておくと、主要ライセンスを理解する上で大変役立ちます。「オープンソースの定義」とは、Open Source Initiative（OSI）という団体によって策定された十の原則です。オープンソース・ライセンスは基本的にこの定義に従っています。

以下に「オープンソースの定義」の原文（日本語版）を掲載します。ただし原文はやや難解（少なくとも私にとっては）であるため、原文を咀嚼した「**OSSの利用者**」にとっての権利と義務を併せて記載します。

<a name="オープンソースの定義（the-open-source-definition、osd）"></a>
### オープンソースの定義（The Open Source Definition、OSD）

#### 1. 再頒布（はんぷ）の自由

> 「オープンソース」であるライセンス(以下「ライセンス」と略)は、出自の様々なプログラムを集めたソフトウェア頒布物(ディストリビューション)の一部として、ソフトウェアを販売あるいは無料で頒布することを制限してはなりません。ライセンスは、このような販売に関して印税その他の報酬を要求してはなりません。

- OSSの利用者は派生ソフトウェアを第三者へ無料で提供することも、**有料で販売することもできる**。
- 派生ソフトウェアを頒布する場合、OSSの利用者はOSSの作成者に対して報酬や印税を支払わなくてよい。

#### 2. ソースコード

> 「オープンソース」であるプログラムはソースコードを含んでいなければならず、コンパイル済形式と同様にソースコードでの頒布も許可されていなければなりません。何らかの事情でソースコードと共に頒布しない場合には、ソースコードを複製に要するコストとして妥当な額程度の費用で入手できる方法を用意し、それをはっきりと公表しなければなりません。方法として好ましいのはインターネットを通じての無料ダウンロードです。ソースコードは、プログラマがプログラムを変更しやすい形態でなければなりません。意図的にソースコードを分かりにくくすることは許されませんし、プリプロセッサや変換プログラムの出力のような中間形式は認められません。

- 利用するOSSがコンパイル済みのバイナリファイルであった場合、OSSの利用者はOSSの作成者に対してソースコードを要求することができる。

#### 3. 派生ソフトウェア

> ライセンスは、ソフトウェアの変更と派生ソフトウェアの作成、並びに派生ソフトウェアを元のソフトウェアと同じライセンスの下で頒布することを許可しなければなりません。

- OSSの利用者は派生ソフトウェアを作成して頒布することができる。
- ただし利用するOSSのライセンスによっては、**利用したOSSと同じライセンスを派生ソフトウェアに適用して頒布しなければならない場合がある**。

#### 4. 作者のソースコードの完全性(integrity)

> バイナリ構築の際にプログラムを変更するため、ソースコードと一緒に「パッチファイル」を頒布することを認める場合に限り、ライセンスによって変更されたソースコードの頒布を制限することができます。ライセンスは、変更されたソースコードから構築されたソフトウェアの頒布を明確に許可していなければなりませんが、派生ソフトウェアに元のソフトウェアとは異なる名前やバージョン番号をつけるよう義務付けるのは構いません。

- ライセンスによっては、元のOSSのソースコードを改変した状態で再頒布することが禁止されている場合がある。ただしそのような場合は元のOSSのソースコードと併せて「パッチファイル」を頒布することができる。
- 元のOSSのソースコードを改変した状態で再頒布することが許可されている場合でも、ライセンスによっては、派生ソフトウェアの再頒布時に**元のOSSとは違う名前、違うバージョンをつける**ことが必要な場合がある。

#### 5. 個人やグループに対する差別の禁止

> ライセンスは特定の個人やグループを差別してはなりません。

- OSSは誰でも利用することができる。

#### 6. 利用する分野(fields of endeavor)に対する差別の禁止

> ライセンスはある特定の分野でプログラムを使うことを制限してはなりません。例えば、プログラムの企業での使用や、遺伝子研究の分野での使用を制限してはなりません。

> 理由:この条項の主な意図は、ライセンスによってオープンソースが商業的に使われることを妨げるような策略を禁止することです。私たちは、営利的なユーザも私たちのコミュニティに加入してくれることを望んでおり、彼らがそこから排除されているような気分になっては欲しくないのです。

- OSSはどの分野で使用してもよく、**商用で使用してもよい**。 

#### 7. ライセンスの分配(distribution)

> プログラムに付随する権利はそのプログラムが再頒布された者全てに等しく認められなければならず、彼らが何らかの追加的ライセンスに同意することを必要としてはなりません。

- OSSを一切改変せずに再頒布する場合は、そのOSS自体のライセンスを変更したり、ライセンスを追加することはできない。

#### 8. 特定製品でのみ有効なライセンスの禁止

> プログラムに付与された権利は、それがある特定のソフトウェア頒布物の一部であるということに依存するものであってはなりません。プログラムをその頒布物から取り出したとしても、そのプログラム自身のライセンスの範囲内で使用あるいは頒布される限り、プログラムが再頒布される全ての人々が、元のソフトウェア頒布物において与えられていた権利と同等の権利を有することを保証しなければなりません。

- OSSが派生ソフトウェアの一部として配布された場合でも、OSSだけを取り出して利用することができる。

#### 9. 他のソフトウェアを制限するライセンスの禁止

> ライセンスはそのソフトウェアと共に頒布される他のソフトウェアに制限を設けてはなりません。例えば、ライセンスは同じ媒体で頒布される他のプログラムが全てオープンソースソフトウェアであることを要求してはなりません。

- 派生ソフトウェアとしてOSSを同梱する場合は、どのようなソフトウェアでも一緒に頒布することができる。

#### 10. ライセンスは技術中立的でなければならない

> ライセンス中に、特定の技術やインターフェースの様式に強く依存するような規定があってはなりません。

- OSSを利用するときはどのような環境でもライセンスの内容を確認し、同意することができる。

---

###### 参考文献
- [The Open Source Definition (Annotated) - Open Source Initiative](https://opensource.org/osd.html)
- [オープンソースの定義(日本語) - The Open Source Initiative](http://www.opensource.jp/osd/osd-japanese.html)  
- [オープンソースの定義 - Wikipedia](https://ja.wikipedia.org/w/index.php?title=%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E5%AE%9A%E7%BE%A9&oldid=57231143)
- [オープンソースで行こう！: 第2回 オープンソースライセンス事情を俯瞰する - IBM](https://www.ibm.com/developerworks/jp/opensource/library/itm-oss2/)  
- [オープンソースの定義を読む - b6note](http://atsukada.blogspot.jp/2010/04/oss-osithe-open-source-definition-10-10.html?m=1)  

<a name="「コピーレフト」を理解する"></a>
## 3.「コピーレフト」を理解する

OSSには大きく「コピーレフト型」、「準コピーレフト型」、「⾮コピーレフト型」という3つの種類があり、それぞれの種類に応じて留意すべき点が異なります。以下に「コピーレフト」の概要とその注意点について記載します。

<a name="「コピーレフト」とは"></a>
### 「コピーレフト」とは

- 利⽤者にOSSを複写・改変・再頒布する⾃由を与える⼀⽅で、派⽣ソフトウェアを頒布する際は、**全く同じ条件で**派⽣ソフトウェアを頒布することを義務付けること。
- 以下の基準によって、大きく3つに分類することができる。  
① ソフトウェア利⽤者に対して、利⽤者がソースコードを改変した際に、改変部分のソースの開⽰を義務づけるかどうか  
② ソフトウェア利⽤者がソースコードを他のソフトウェアのソースコードと組み合わせた際に、他のソースコードの開⽰を義務づけるかどうか 

|類型|①改変部分のソースコードの開⽰|②他のソフトウェアのソースコード開⽰|
|:--|:-:|:-:|
コピーレフト型|要|要|
準コピーレフト型|要|不要|
⾮コピーレフト型|不要|不要|

<a name="「コピーレフト型」及び「準コピーレフト型」ソフトウェアを扱う際の注意点"></a>
### 「コピーレフト型」及び「準コピーレフト型」ソフトウェアを扱う際の注意点
- コピーレフト型及び準コピーレフト型ソフトウェアは**第三者に再頒布しない限りソースコード開⽰の義務はない**。そのため、以下のケースではソースコードを開⽰する必要はない。
	- OSSを改造して自分一人で使用している
	- 企業においてOSSを改造し、自社内でのみ使用している
- 改造したソフトウェアの実行ファイル（バイナリ）を第三者に頒布・販売したケースにおいても、ソースコードを要求できるのは**直接配布・販売を受けた者**に限られている。
- ソースコードを開⽰する義務があるのは**ソフトウェア自体の配布先に対してのみ**である。例えばWebサービスの場合、ソフトウェアはサーバーに頒布されるため、Webサービスの利用者へソースコードを開⽰する必要はない。

---

###### 参考文献
- [OSSライセンスの⽐較および利⽤動向ならびに係争に関する調査 - 独立行政法人情報処理推進機構](https://www.ipa.go.jp/files/000028335.pdf)
- [コピーレフト型と非コピーレフト型OSSライセンスの違いとは？ - Think IT](https://thinkit.co.jp/story/2014/02/03/4804)
- [コピーレフトライセンスについて考察 - 株式会社クラウディア](https://cloudear.jp/blog/?p=896)

<a name="「主要ライセンス」を理解する"></a>
## 4.「主要ライセンス」を理解する

GPL、BSD、MIT、Apacheなどの主要ライセンスを適用したソフトウェアを利用する機会は多いと思います。これらのライセンスが適用されたOSSを利用し、派生ソフトウェアとして頒布する際の注意事項をライセンス別にまとめました。


|種類|利用元のライセンス表示|類型|作成者名の無断使用|特許条項|
|---|:-:|:-:|:-:|:-:|
|GNU GPL v2|必要|**コピーレフト**|-|なし|
|GNU GPL v3|必要|**コピーレフト**|-|**あり**|
|MIT License|必要|非コピーレフト|-|なし|
|2-Clause BSD License|必要|非コピーレフト|-|なし|
|3-Clause BSD License|必要|非コピーレフト|**禁止**|なし|
|Apache License Version 2.0|必要|非コピーレフト|-|**あり**|

<a name="各ライセンスの特徴"></a>
### 各ライセンスの特徴

#### 共通の特徴

- 派生ソフトウェアを頒布する際は、**利用元OSSのライセンス表示（「著作権表示」、「ライセンス文」、「免責条項」）を掲載しなければならない。**
	- ***派生ソフトウェアをソースコード形式で頒布する場合：***  
	利用元OSSのソースコード中に「著作権表示」、「ライセンス文」、「免責条項」が含まれているため、これらを故意に除去しなければ特に何もする必要はない。
	- ***バイナリ形式で再頒布する場合：***  
	頒布するバイナリファイルと併せて利用元OSSの「著作権表示」、「ライセンス文」、「免責条項」を掲載したライセンスファイル（「COPYINGファイル」や「LICENSEファイル」）を頒布先に提供する必要がある。




<a name="gnu-gpl"></a>
#### GNU GPL v2（GNU General Public License v2）
本ライセンスを適用しているOSS：MySQL, Redmine, Git, CentOS

- コピーレフト型ライセンスであるため、本ライセンスのOSSを利用する場合は**頒布する派生ソフトウェアもGPLライセンスを適用しなければならない。**
- 派生ソフトウェアのバイナリを第三者に提供する場合は**頒布先にソースコードを開示しなければならない。**
- 以下の記載例のように、**派生ソフトウェア自体のライセンス文を掲載しなければならない**。

###### ライセンスの記載例

* 派生ソフトウェアの各ソースファイルの冒頭にライセンス文を記載する。
* 各ソースファイルにライセンス文を記載することが困難な場合は、ライセンス全文のファイルを別途作成し、各ソースファイルには冒頭の2行（「派生ソフトウェアのプログラム名」と「Copyright」行）とライセンス全文のファイルがある場所のパスを記載する。

```
派生ソフトウェアのプログラム名と簡単な説明
Copyright (C) 西暦年  派生ソフトウェアの作者名

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
```

#### GNU GPL v3（GNU General Public License v3）
* 「GNU GPL v2」に**特許条項**を追加したライセンスである。
* 対象ソフトウェアを利用する場合に限り、対象ソフトウェアに含まれる特許を自由に利用できる。

<a name="mit-license--bsd-license-2-clause"></a>
#### MIT License
本ライセンスを適用しているOSS：jQuery, Bootstrap

- 利用元OSSのライセンス表示さえ掲載していれば、ソフトウェアを自由に頒布することができる。

#### 2-Clause BSD License（二条項BSDライセンス）

- **「MIT License」と同等のライセンス**であり、これらのライセンスの規定にほぼ違いはない。

<a name="bsd-license-3-clause"></a>
#### 3-Clause BSD License（三条項BSDライセンス、修正BSDライセンス）
- 「2-Clause BSD License」に**作成者名の無断使用を禁止する条項**を追加したライセンスである。

<a name="apache-license-version-20"></a>
#### Apache License Version 2.0
本ライセンスを適用しているOSS：Apache, Docker

- 「MIT License」とほぼ同等の規定に**特許条項**を追加したライセンスである。
* 対象ソフトウェアを利用する場合に限り、対象ソフトウェアに含まれる特許を自由に利用できる。

---
###### 参考文献
- [MITライセンスってなに？どうやって使うの？商用でも無料で使えるの？ - WisdomMingle.com](http://wisdommingle.com/mit-license/)
- [可知豊の『 わかっておきたい、オープンソースライセンス』: 第2回 色々なオープンソースライセンスをわかっておきたい — サイオステクノロジー](https://oss.sios.com/guest-blog/gestblog-oss-license-vol2)
- [GNU 一般公衆利用許諾契約書 - GNU プロジェクト - フリーソフトウェア財団](http://www.opensource.jp/gpl/gpl.ja.html#SEC3)
- [WordPressのテーマに使われるライセンス(GPL、MIT)についてまとめ - まとめたる](http://matometaru.com/licence/#GPLMIT)
- [自作ソースコードに、MITライセンスを適用する３つのやり方 - オープンソース・ライセンスの談話室](http://www.catch.jp/oss-license/2013/09/27/mit_license/
)
* [企業技術者のためのOSSライセンス入門（3）：アカデミック系OSSライセンスに関する一考察 - ＠IT](http://www.atmarkit.co.jp/ait/articles/0906/26/news129.html)
* [MIT、BSD、GPLライセンスの内容と意味を学んでみた - YoheiM .NET](http://www.yoheim.net/blog.php?q=20120914)