OSSライセンスについて
はじめに
皆さんは開発される際、外部ライブラリを使われたことはありますか?
世の中にはたくさんの便利なライブラリがあります。
これらを利用することで、コーディングが楽になったり、見た目がきれいになったりして、いいことずくめですよね。
ですが、ちょっと待ってください。
そのライブラリのライセンス、ちゃんと理解して使っていますか?
きちんと理解しないまま使うと、訴訟問題などの思わぬ事態に発展してしまうこともあります。
この記事では、そういったリスクを避けるため、正しいライセンスの守り方について説明します。
コードと著作権
まずは、コードと著作権の関係からみていきましょう。
世の中にある「コード」は法律上「著作物」と扱われるため、「著作権法」が適用されます。
したがって、他の人の著作物を無断に利用した場合は、著作権法違反(著作権侵害)になってしまいます。
それを避けるためには、しっかりとライセンス(利用許諾)を守って利用する必要があります。
万が一ライセンスに違反している場合は、著作権侵害となります。
そのため、コードの作者が差止請求権を行使すると、公開停止(利用できなくなる)になってしまうリスクがあるのです。
OSSライセンスとは
一方で、世の中にはたくさんの外部ライブラリやオープンソースが存在しています。
そもそも、なぜソースコードは公開されているのでしょうか?
実は、ソースコードを公開することにはたくさんのメリットがあります。
- 自社にとどまらず、さまざまな開発者の目に触れることで、多くの改善が見込まれる。
- バグの発見や修正が早まる。
- マーケティング面でのプレゼンスが向上する。
- エンジニアの技術力・モチベーションが向上する。
- 作成者が離れた後でも、継続して発展が望める。
中には、ソースコードが公開され、提供されているソフトウェアもあります。
そのようなソフトウェアは OSS(オープンソースソフトウェア)と呼ばれます。
代表的な例として、Linux、Apache、Android、MySQLなどが挙げられます。
さて、そんなOSSですが、前述したとおりソース自体の著作権が放棄されているわけではありません。
OSSは、あくまでも「著作者が提示した一定の条件を守るならば、その著作物(ソフトウェア)を利用してよい」というものになります。
ですので、利用する側はOSSに定められた条件に従う必要があります。その条件は「OSSライセンス」に記載されています。
OSSライセンスの分類
では、OSSライセンスにはどのようなものがあるのでしょうか?
OSSライセンスは、「コピーレフト」という概念に基づき、以下の3つに分類できます。
OSSライセンスのカテゴリ | 改変部分のソースコードの開⽰必要性 | 組み合わせた他のソースコードの開⽰必要性 |
---|---|---|
1. コピーレフト型ライセンス | あり | あり |
2. 準コピーレフト型ライセンス | あり | なし |
3. ⾮コピーレフト型ライセンス | なし | なし |
「コピーレフト」とは、著作物の配布について、その変更の有無にかかわらず、制限のない利用の自由を著作者が利用者に与えるという考え方のことです。また、その著作物の再配布物についても同様の考え方をします。
たとえばコピーレフト型ライセンスでは、利用者がソースコードを変更して利用している場合、その変更部分を開示しなければなりません。
また、他のソースコードと組み合わせた場合、そのソースコードも公開しなければなりません。
一方、非コピーレフト型ライセンスの場合は、両方ともに公開する必要はありません。
まずは、この3種類の分類をしっかり抑えておきましょう。
有名なライセンス
では次に、有名なOSSライセンスを紹介します。
以下の3つの観点で各ライセンスを表にまとめました。
- 利用するための条件
- 利用用途の許可範囲
- 利用上禁止されている点
ライセンス | カテゴリ種別 | Required (条件) | Permitted (許可) | Forbidden (禁止) |
---|---|---|---|---|
GPL v2
|
コピーレフト型 | 著作権の表示、変更箇所の明示、ソースの明示 | 商用利用、修正、配布、特許許可 | 責任追及、サブライセンス |
GPL v3
|
コピーレフト型 | 著作権の表示、変更箇所の明示、ソースの明示 | 商用利用、修正、配布、特許許可 | 責任追及、サブライセンス |
Affero GPL
|
コピーレフト型 | 著作権の表示、変更箇所の明示、ソースの明示 | 商用利用、修正、配布 | 責任追及、サブライセンス |
LGPL v2.1
|
準コピーレフト型 | 著作権の表示、ライブラリの使用、ソースの明示 | 商用利用、修正、配布、サブライセンス、特許許可 | 責任追及 |
LGPL v3
|
準コピーレフト型 | 著作権の表示、ライブラリの使用、ソースの明示 | 商用利用、修正、配布、サブライセンス、特許許可 | 責任追及 |
Artistic 2.0
|
準コピーレフト型 | 著作権の表示、変更箇所の明示、ソースの明示 | 商用利用、修正、配布、サブライセンス、個人利用 | 責任追及、トレードマークの使用 |
Apache v2
|
非コピーレフト型 | 著作権の表示、変更箇所の明示 | 商用利用、修正、配布、サブライセンス、特許許可 | 責任追及、トレードマークの使用 |
MIT
|
非コピーレフト型 | 著作権の表示 | 商用利用、修正、配布、サブライセンス | 責任追及 |
The BSD 3-Clause
|
非コピーレフト型 | 著作権の表示 | 商用利用、修正、配布、サブライセンス | 責任追及、トレードマークの使用 |
Public Domain
|
- | - | 個人利用、商用利用、修正、配布、サブライセンス | 責任追及 |
参考元:
たくさんあるオープンソースライセンスのそれぞれの特徴のまとめ
(tukiyo3)
たくさんありますね。一例として、MITライセンスを見てみましょう。
JavaScript関連で比較的多いのが、このMITライセンスです。
利用条件は「著作権表示」と「MITライセンスの全文の記載(URL可)」のみと、数あるライセンスの中でも非常に制限が緩いです。
たとえば、jQuery には、次のような記載がコード内にあるはずです。
|
|
きちんと著作権とライセンスを明記したページのURL への誘導が入っていますね。
jQueryを利用/改変する場合、このコメントを消すことはライセンス違反になります。
しかし「JavaScriptで使うライブラリだから、大丈夫」とはいきません。
有名なのはReact.jsです。
React.jsは、Facebookによって作成・公開されており、ライセンスとして BSD-style license が適用されていました。
BSDライセンス自体は比較的利用にあたっての自由度が高いライセンスです。
Facebookはこのライセンスに独自項目として「FacebookおよびFacebookの関連会社を特許で訴訟した場合、ライセンスは破棄され、Facebookのコードを使う権利を失う」というものを追加していました。
つまり、ライセンスとしてはBSD + 特許事項(Patents License)の形で配布されていたのです。
この特許事項は、もしReact.jsを利用した製品を作成している場合、事実上Facebookに特許訴訟を行うことが出来ないことを意味します。
このように、しっかりとライセンスを読まないと、上記のような事態に巻き込まれる危険性があることを認識しておくべきです。
React.jsは、2018年10月にMITライセンスへ変更されたため、現在では上記のような問題は生じません。
cybozu developer networkに記載されているコードに関して
さて、ここまで読んでいただいた方には、ライセンスの重要性は分かっていただけたと思います。
一方で本サイトのコードやCybozu CDNのライブラリに関しては、どうなっているのでしょうか。
cybozu developer network利用規約 - 第7条(ライセンス)
まずは、利用規約を確認しましょう。
こちらは「cybozu developer network利用規約」の 第7条 に記載があります。
第7条(ライセンス)
本サイト内で提供されているサンプルプログラム等のライセンスは、別途指定される場合を除き、MITライセンスが適用されるものとします。
サンプルプログラム等には、サイボウズが著作権を有しない第三者のプログラムおよび第三者のサービスのAPI等を利用する記述が含まれる場合があります。
第三者のプログラム、API等の利用条件については、各プログラムのライセンスその他提供元の定める取り決めに従うものとし、利用ユーザーご自身が責任をもって確認するものとします。
つまり、指定がなければ MITライセンスの範囲の元、ご自由に使っていただいてかまいません。
ただし、第2項にもあるように、弊社に著作権が存在しないプログラムやAPIに関しては、提供元のライセンスや取り決めにしたがってください。
Cybozu CDN利用規約 - 第2条(コンテンツに対する知的財産権とライセンス)
また、Cybozu CDNに載っているライブラリに関しては「Cybozu CDN利用規約」の 第2条 に記載があります。
第2条(コンテンツに対する知的財産権とライセンス)
Cybozu CDN上で提供するコンテンツに対する所有権、著作権等の知的財産権は、サイボウズまたは各コンテンツの提供者(以下「提供者等」といいます)に帰属します。
利用者は提供者等の知的財産権等、コンテンツと関連するすべての権利を害する利用をすることはできません。
コンテンツを利用する際には、提供者等が指定するライセンス内容を事前に確認しそのライセンスに従って適切に利用してください。
したがって、利用したいライブラリがある場合は、提供元を確認する必要があります。
Cybozu CDN
から、利用したいライブラリ名をクリックし、公式HPから確認してください。
基本的にはMITライセンス、またはそれに準ずるライセンス(開発者が利用しやすいライセンス)のCDNを掲載していますが、念のためライセンスを確認してください。
利用具体例
では、実際の利用例を見ていきましょう。今回kintoneのJavaScriptカスタマイズにおいて、Cybozu CDNのJSZipを使いたいとします。
まずは、
Cybozu CDN
より、JSZipのリンクをクリックします。
すると、JSZipの公式HPに移動したと思います。
ここでライセンスに関する記載を探します。画面右上を見ると、次の表記があります。
これにより、JSZipは必要に応じてMITライセンスまたはGPLv3ライセンスの下で使用できることが分かります。
「ソフトウェアの著作権表示、およびラインセンスの全文(または全文へのリンク)」を記載すれば、コードの開示等も必要なく、自由に使ってよいことが分かりました。
もし、それぞれのライセンスに詳しくない場合は、しっかりとリンク先からライセンス全文を読むようにしましょう。
利用するライブラリに、ライセンス全文または全文へのリンクがない場合は、
Cybozu CDN
のバージョンごとのリンクからライセンスを確認してください。
念のため、実際に利用するコードの最上部も見てみましょう。
はい、きちんと記載がありますね。
これで、Cybozu CDN記載のリンクを読み込ませてカスタマイズする場合は、何も心配せずにJSZipを使用できることが分かりました。
おわりに
いかがでしたでしょうか?この記事が、少しでも皆さんの開発の手助けになれば幸いです。
何気なく使っているライブラリによって、一生懸命作ったプログラムが法的リスクにさらされないよう、ライセンスには十分注意しましょう。
それでは、素敵な開発ライフを!