OSS ライセンスについて

著者名:相馬 理人(サイボウズ株式会社)

目次

はじめに

皆さんは開発される際に、外部ライブラリを使われることはありませんか?
世の中にはたくさんの便利なライブラリがあり、使うことでコーディングは楽になり、見た目もきれいになったりして、いいことずくめですよね。

ですが、ちょっと待ってください。
そのライブラリのライセンス、ちゃんと理解して使っていますか?
きちんと理解しないまま使うと、思わぬところで訴訟問題に発展することもあります。
この記事では、そういったリスクを避けるための正しいライセンスの守り方について説明します。

まずは、コードと著作権の関係からみていきましょう。
世の中にある「コード」は法律上「著作物」と扱われるため、「著作権法」が適用されます。
したがって、他の人の著作物を無断に利用した場合は、著作権法違反著作権侵害)になってしまいます。
それを避けるためには、しっかりとライセンス(利用許諾)を守って利用しましょう。
万が一ライセンスに違反している場合、著作権侵害となります。そのため、コードの作者が差止請求権を行使すると、公開停止利用できなくなる)のリスクが生じます。

OSS ライセンスとは

一方で、世の中にはたくさんの外部ライブラリやオープンソースが存在しています。
そもそも、なぜソースコードは公開されているのでしょうか?
実は、ソースコードを公開することにはたくさんのメリットがあります。

  • 自社にとどまらず、さまざまな開発者の目に触れることで、多くの改善が見込まれる。
  • バグの発見や修正が早まる。
  • マーケティング面でのプレゼンス向上
  • エンジニアの技術力・モチベーション向上
  • 作成者が離れた後でも、継続して発展が望める。

というわけで、現在はソースコードを世間に公開することは、割と一般的になっています。
さらには、ソースコードが公開され、提供されているソフトウェアさえあります。
そのようなソフトウェアは OSSオープンソースソフトウェア)と呼ばれており、代表的なものだと、Linux、Apache、Android、MySQL などが挙げられます。

さて、そんな OSS ですが、前述したとおりソース自体の著作権が放棄されているわけではありません。
あくまでも、OSS は「著作者が提示した一定の条件を守るならば、その著作物(ソフトウェア)を利用してよい」ということなので、利用する側は OSS に定められた条件に従う必要があります。
その条件は「OSS ライセンス」に記載されています。

OSS ライセンスの大別

では、OSS ライセンスにはどのようなものがあるのでしょうか?OSS ライセンスは、「コピーレフト」という考え方をどれだけ踏襲しているかによって、3 種類に分類できます。

コピーレフトとは、著作物の配布について変更の有無にかかわらず、制限のない利用の自由を著作者が利用者に与えるとする概念のことです。またその著作物の再配布物についても同様の考え方をします。

OSS ライセンスのカテゴリ 改変部分のソースコードの開⽰必要性 組み合わせた他のソースコードの開⽰必要性
コピーレフト型ライセンス あり あり
準コピーレフト型ライセンス あり なし
⾮コピーレフト型ライセンス なし なし

たとえば、コピーレフト型ライセンスの場合は、利用者がソースコードを変更して利用している場合は、変更部分のソースコードを開示しなければなりません。
また、他のソースコードと組み合わせた場合、そのソースコードも公開しなければなりません。
一方、非コピーレフト型ライセンスの場合は、両方ともに公開する必要はありません。

まずは、この 3 種類の分類をしっかり抑えておきましょう。

有名なライセンス

続いて、さらに細かく個々のライセンスを見てみましょう。
次に、有名なライセンスにおける、以下をまとめた表を記載します。

  • 利用するための条件
  • 利用用途の許可範囲
  • 利用上禁止されている点
ライセンス カテゴリ種別 Required (条件) Permitted (許可) Forbidden (禁止)
GPL v2 (External link) コピーレフト型 著作権の表示、変更箇所の明示、ソースの明示 商用利用、修正、配布、特許許可 責任追及、サブライセンス
GPL v3 (External link) コピーレフト型 著作権の表示、変更箇所の明示、ソースの明示 商用利用、修正、配布、特許許可 責任追及、サブライセンス
Affero GPL (External link) コピーレフト型 著作権の表示、変更箇所の明示、ソースの明示 商用利用、修正、配布 責任追及、サブライセンス
LGPL v2.1 (External link) 準コピーレフト型 著作権の表示、ライブラリの使用、ソースの明示 商用利用、修正、配布、サブライセンス、特許許可 責任追及
LGPL v3 (External link) 準コピーレフト型 著作権の表示、ライブラリの使用、ソースの明示 商用利用、修正、配布、サブライセンス、特許許可 責任追及
Artistic 2.0 (External link) 準コピーレフト型 著作権の表示、変更箇所の明示、ソースの明示 商用利用、修正、配布、サブライセンス、個人利用 責任追及、トレードマークの使用
Apache v2 (External link) 非コピーレフト型 著作権の表示、変更箇所の明示 商用利用、修正、配布、サブライセンス、特許許可 責任追及、トレードマークの使用
MIT (External link) 非コピーレフト型 著作権の表示 商用利用、修正、配布、サブライセンス 責任追及
The BSD 3-Clause (External link) 非コピーレフト型 著作権の表示 商用利用、修正、配布、サブライセンス 責任追及、トレードマークの使用
Public Domain (External link) - - 個人利用、商用利用、修正、配布、サブライセンス 責任追及

参考元: たくさんあるオープンソースライセンスのそれぞれの特徴のまとめ (External link) (tukiyo3)

たくさんありますね。ひとつ、例として MIT ライセンスを見てみましょう。
JavaScript 関連で比較的多いのが、この MIT ライセンスです。
こちらの利用条件は、「著作権表示」と「MIT ライセンスの全文」(URL 可)を記載することのみで、数あるライセンスの中で非常に制限の緩いライセンスとなっています。
たとえば、jQuery には、次のような記載がコード内にあるはずです。

1
/*! 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 条 に見つけることができます。

第 7 条(ライセンス)

本サイト内で提供されているサンプルプログラム等のライセンスは、別途指定される場合を除き、MIT ライセンスが適用されるものとします。

サンプルプログラム等には、サイボウズが著作権を有しない第三者のプログラムおよび第三者のサービスの API 等を利用する記述が含まれる場合があります。
第三者のプログラム、API 等の利用条件については、各プログラムのライセンスその他提供元の定める取り決めに従うものとし、利用者ご自身が責任をもって確認するものとします。

引用: cybozu developer network 利用規約 - 第 7 条(ライセンス)

つまり、指定がなければ MIT ライセンスの範囲の元、ご自由に使っていただいてかまいません
ただし、第 2 項にもありますように、弊社に著作権が存在しないプログラムや API に関しては、提供元のライセンスや取り決めにしたがっていただきますよう、お願いします。

Cybozu CDN 利用規約 - 第 2 条(コンテンツに対する知的財産権とライセンス)

また、Cybozu CDN に載っているライブラリに関しては「Cybozu CDN 利用規約」の 第 2 条 に記載があります。

第 2 条(コンテンツに対する知的財産権とライセンス)

Cybozu CDN 上で提供するコンテンツに対する所有権、著作権等の知的財産権は、サイボウズまたは各コンテンツの提供者(以下「提供者等」といいます)に帰属します。
利用者は提供者等の知的財産権等、コンテンツと関連するすべての権利を害する利用をすることはできません。
コンテンツを利用する際には、提供者等が指定するライセンス内容を事前に確認しそのライセンスに従って適切に利用してください。

引用: Cybozu CDN 利用規約 - 第 2 条(コンテンツに対する知的財産権とライセンス)

したがって、利用したいライブラリがある場合は、提供元を確認する必要があります。

Cybozu CDN から、利用したいライブラリ名をクリックし、公式 HP から確認してください。
基本的には MIT ライセンス、またはそれに準ずるライセンス(開発者が利用しやすいライセンス)の CDN を掲載していますが、念のためライセンスの確認をしてください。

利用具体例

では、実際の利用例を見ていきましょう。今回 kintone の JavaScript カスタマイズにおいて、Cybozu CDN の JSZip を使いたいとします。
まずは、 Cybozu CDN より、JSZip のリンクをクリックします。

すると、JSZip の公式 HP に移動したと思います。ここでライセンスに関する記載を探します。画面右上を見ると、次の表記を見つけることができると思います。

JSZip 公式ホームページ (External link)

これにより、JSZip は必要に応じて MIT ライセンスまたは GPLv3 ライセンスの下で使用できることが分かります。
ソフトウェアの著作権表示、およびラインセンスの全文(または全文へのリンク)」を記載すれば、コードの開示等も必要なく、自由に使ってよいことが分かりました。
もし、それぞれのライセンスに詳しくない場合は、しっかりとリンク先からライセンス全文を読むようにしましょう。
利用するライブラリに、ライセンス全文または全文へのリンクがない場合は、 Cybozu CDN のバージョンごとのリンクからライセンスを確認してください。
念のため、実際に利用するコードの最上部も見てみましょうか。

Cybozu CDN - JSZip V3.10.0 (External link)

はい、きちんと記載がありますね。
これで、Cybozu CDN 記載のリンクを読み込ませてカスタマイズする場合は、何も心配せずに JSZip を使用できることが分かりました。

おわりに

皆様、いかがでしたでしょうか?少しでも本記事が皆様の開発の手助けになれば幸いです。
普段何気なく使っているライブラリによって、一生懸命作ったプログラムが法的リスクにさらされないように、ライセンスに関しては十分注意して、開発しましょう。
それでは、素敵な開発ライフを!