(著者:サイボウズ 相馬 理人)
Index
はじめに
皆さんは開発される際に、外部ライブラリを使われることはありませんか?世の中にはたくさんの便利なライブラリがあり、使うことでコーディングは楽になり、見た目も綺麗になったりして、いいことづくめですよね。
ですが、ちょっと待ってください。そのライブラリのライセンス、ちゃんと理解して使っていますか?きちんと理解しないまま使うと、思わぬところで訴訟問題に発展することも・・・。この記事では、そういったリスクを避けるための正しいライセンスの守り方についてご説明していきます。
コードと著作権
まずは、コードと著作権の関係からみていきましょう。世の中にある「コード」は法律上「著作物」と扱われるため、「著作権法」が適用されます。したがって、他の人の著作物を無断に利用した場合は、著作権法違反(著作権侵害)になってしまいます。それを避けるためには、しっかりとライセンス(利用許諾)を守って利用すれば良いのですが・・・万が一ライセンスに違反している場合は著作権侵害になりますので、コードの作者によって差止請求権が行使された場合、公開が停止される(利用できなくなる)リスクがあります。
OSS ライセンスとは
一方で、世の中には沢山の外部ライブラリやオープンソースが存在しています。そもそも、なぜソースコードは公開されているのでしょうか?実は、ソースコードを公開することには沢山のメリットがあります。
- 自社に留まらない開発者の目に留まり、様々な改善が見込まれる
- バグの発見や修正が早まる
- マーケティング面でのプレゼンス向上
- エンジニアの技術力・モチベーション向上
- 作成者が離れた後でも、継続して発展が望める
というわけで、現在はソースコードを世間に公開することは、割と一般的になっています。さらには、ソースコードが公開され、提供されているソフトウェアさえあります。そのようなソフトウェアは OSS (オープンソースソフトウェア)と呼ばれており、代表的なものだと、Linux、Apache、Android、MySQL などが挙げられます。
さて、そんな OSS であっても、前述した通り、ソース自体の著作権が放棄されているわけではありません。あくまで、OSS は「著作者が提示した一定の条件を守るならば、その著作物(ソフトウェア)を利用してよい」ということなので、利用する側は OSS に定められた条件に従う必要があります。その条件が記載されているのが「OSS ライセンス」です。
OSS ライセンスの大別
では、OSS ライセンスにはどのようなものがあるのでしょうか?OSS ライセンスは、「コピーレフト」という考え方をどれだけ踏襲しているかによって、3種類に分類することができます。
コピーレフト:著作者は、著作物の配布について(変更の有無にかかわらず)制限のない利用の自由を利用者に与えるとする概念。またその著作物の再配布物についても同様の考え方をする。
OSS ライセンスのカテゴリ |
改変部分のソースコードの |
組み合わせた他のソースコードの |
---|---|---|
コピーレフト型ライセンス |
〇 |
〇 |
準コピーレフト型ライセンス |
〇 |
✖ |
⾮コピーレフト型ライセンス |
✖ |
✖ |
出展元: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 であれば、下記のような記載がコード内にあるはずです。
/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
きちんと著作権とライセンスを明記したページの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 条
はい。つまり、指定が無ければ MIT ライセンスの範囲の元、ご自由に使っていただいて構いません。ただし、第 2 項にもありますように、弊社に著作権が存在しないプログラムや API に関しては、提供元のライセンスや取り決めに従っていただきますよう、お願いいたします。
また、Cybozu CDN に載っているライブラリに関しては「Cybozu CDN 利用規約」の 第 2 条 に記載があります。
▼ Cybozu CDN 利用規約 - 第 2 条
したがって、利用したいライブラリがある場合は、提供者元に確認しに行く必要があります。CDN のサイトより利用したいライブラリ名のところをクリックしていただけると、公式 HP に飛びますので、そちらからご確認ください。基本的には MIT ライセンス、またはそれに準ずるようなライセンスのもの(開発者が利用しやすいライセンス)を掲載するようにしておりますが、念のため、ご確認いただくことをお勧めいたします。
利用具体例
では、実際の利用例を見ていきましょう。今回 kintone の JavaScript カスタマイズにおいて、Cybozu CDN の JSZip を使いたいとします。
まずは、Cybozu CDN ページより、JSZip を見つけて、ライブラリ名のところをクリックします。
すると、JSZip の公式 HP に移動したと思います。ここでライセンスに関する記載を探します。画面右上を見ると、下記の表記を見つけることができると思います。
これにより、JSZip は必要に応じて MIT ライセンスまたは GPLv3 ライセンスの下で使用できることが分かります。「ソフトウェアの著作権表示、及びラインセンスの全文(または全文へのリンク)」を記載すれば、コードの開示等も必要なく、自由に使って良いことが分かりました。もし、それぞれのライセンスに詳しくない場合は、しっかりとリンク先からライセンス全文を読むようにしましょう。
利用するライブラリに、ライセンス全文またはまたは全文へのリンクがない場合は、Cybozu CDN のバージョンごとのリンクからライセンスを確認してください。念のため、実際に利用するコードの最上部も見てみましょうか。
はい、きちんと記載がありますね。これで、Cybozu CDN 記載のリンクを読み込ませてカスタマイズする場合は、何も心配せずに JSZip を使うことが出来ることが分かりました。
おわりに
皆様、いかがでしたでしょうか?少しでも本記事が皆様の開発の手助けになれば、幸いです。普段何気なく使っているライブラリによって、皆様が一生懸命作ったプログラムが法的リスクにさらされることが無いように、ライセンスに関しては十分注意して、開発を行っていきましょう。それでは、素敵な開発ライフを!
とあるのですが、AngularJS のコードの最上部には「ラインセンスの全文(または全文へのリンク)」がありませんので、この場合は AngularJS を利用する Webアプリ側でそれらを参照できるようにする必要があるでしょうか?
khana 様
お世話になっております。cybozu developer network 事務局です。
Cybozu CDN で配信している AngularJS のコードの最上部にはライセンスの全文へのリンクを記載しております。
恐れ入りますが、ライセンスの全文(または全文へのリンク)が記載されていない部分とはどちらのソースコードでしょうか。
また、AngularJS は現在メンテナンスモードになっており、別ライブラリへの移行が推奨されております。
https://developer.cybozu.io/hc/ja/articles/202960194#angularjs
khana 様
お世話になっております。cybozu developer network 事務局です。
>https://js.cybozu.com/angularjs/v1.8.3/angular.min.js のソースコードの最上部には AngularJS の公式サイトへのリンク (http://angularjs.org) はありますが、MIT ライセンスの全文を確認できるリンク (https://opensource.org/licenses/mit-license.php や https://github.com/angular/angular.js/blob/master/LICENSE) は無いように思います。
こちらご指摘のとおりです。大変失礼いたしました。
ライセンスの提示は再頒布時に行うとされており、
再頒布ページである Cybozu CDN で「versions」欄でのMIT ライセンスの全文リンクへの対応および著者名表記をしております。そのため、既存のソースコードの変更の必要はございません。