OSSライセンスについて
はじめに
皆さんは開発される際に、外部ライブラリを使われることはありませんか?
世の中にはたくさんの便利なライブラリがあり、使うことでコーディングは楽になり、見た目もきれいになったりして、いいことずくめですよね。
ですが、ちょっと待ってください。
そのライブラリのライセンス、ちゃんと理解して使っていますか?
きちんと理解しないまま使うと、思わぬところで訴訟問題に発展することもあります。
この記事では、そういったリスクを避けるための正しいライセンスの守り方について説明します。
コードと著作権
まずは、コードと著作権の関係からみていきましょう。
世の中にある「コード」は法律上「著作物」と扱われるため、「著作権法」が適用されます。
したがって、他の人の著作物を無断に利用した場合は、著作権法違反(著作権侵害)になってしまいます。
それを避けるためには、しっかりとライセンス(利用許諾)を守って利用しましょう。
万が一ライセンスに違反している場合、著作権侵害となります。そのため、コードの作者が差止請求権を行使すると、公開停止(利用できなくなる)のリスクが生じます。
OSSライセンスとは
一方で、世の中にはたくさんの外部ライブラリやオープンソースが存在しています。
そもそも、なぜソースコードは公開されているのでしょうか?
実は、ソースコードを公開することにはたくさんのメリットがあります。
- 自社にとどまらず、さまざまな開発者の目に触れることで、多くの改善が見込まれる。
- バグの発見や修正が早まる。
- マーケティング面でのプレゼンス向上
- エンジニアの技術力・モチベーション向上
- 作成者が離れた後でも、継続して発展が望める。
というわけで、現在はソースコードを世間に公開することは、割と一般的になっています。
さらには、ソースコードが公開され、提供されているソフトウェアさえあります。
そのようなソフトウェアは OSS(オープンソースソフトウェア)と呼ばれており、代表的なものだと、Linux、Apache、Android、MySQLなどが挙げられます。
さて、そんなOSSですが、前述したとおりソース自体の著作権が放棄されているわけではありません。
あくまでも、OSSは「著作者が提示した一定の条件を守るならば、その著作物(ソフトウェア)を利用してよい」ということなので、利用する側はOSSに定められた条件に従う必要があります。
その条件は「OSSライセンス」に記載されています。
OSSライセンスの大別
では、OSSライセンスにはどのようなものがあるのでしょうか?OSSライセンスは、「コピーレフト」という考え方をどれだけ踏襲しているかによって、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です。
こちらのライブラリはFacebookによって作成・公開されており、ライセンスとして BSD-style license が適用されていました。
BSDライセンス自体は比較的利用にあたっての自由度が高いライセンスです。
Facebookはこのライセンスに独自項目として「FacebookおよびFacebookの関連会社を特許で訴訟した場合、ライセンスは破棄され、Facebookのコードを使う権利を失う」というものを追加していました。
つまり、ライセンスとしてはBSD + 特許事項(Patents License)の形で配布されていたのです。
この特許事項は、もしReact.jsを利用した製品を作成している場合、事実上Facebookに特許訴訟を行うことが出来ないことを意味します。
このように、しっかりとライセンスを読まないと、上記のような事態に巻き込まれる危険性があることを認識しておくべきです。
2018年10月現在では、React.jsは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を使用できることが分かりました。
おわりに
皆様、いかがでしたでしょうか?少しでも本記事が皆様の開発の手助けになれば幸いです。
普段何気なく使っているライブラリによって、一生懸命作ったプログラムが法的リスクにさらされないように、ライセンスに関しては十分注意して、開発しましょう。
それでは、素敵な開発ライフを!