Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

オープンソースライセンスについてまとめてみた Part1-コピーレフト型編

はじめに

こんにちは、筆者です。

最近お仕事にて、職場内であまりノウハウのない技術(Vue.js)を使用するプロジェクトに携わっており。
そんな中で、ちょっとした動き…スライダー表示や仮想スクロールなんかの「自力開発がめんどい処理」を実現するのにライブラリを探す機会が多くありました。

そんな中で気になったのが「オープンソースライセンス」の存在。
これまでの趣味プログラムと違って製品化するプログラムなので、「使用するライブラリのライセンス」には注意を払いたいところです。

ただ、幸か不幸かこれまで筆者はライブラリを自力で探して活用して…みたいなことを業務で行ったことはなく…ライセンスに関する知識がほぼない状態。
幸いにも、職場内にそういったライセンス周りに詳しい方がいたため難を逃れましたが…。
ライセンスについては、エンジニアとして最低限レベルは知識をつけたい分野だなぁと。

知識をつけるには、調べてまとめるのが一番自分的に身につくので…。
本記事にて、ライセンスに関する知識が載ってる記事をまとめたり、時には自分なりにまとめていきながら見ていこうと思います。

それではいきましょう。

オープンソースライセンスにどんな種類があるのか

まずは「オープンソースライセンスにどんな種類があるのか」から。
オープンソースライセンスは、大まかに分けると下記の3種類に分類されるそうです:

この3つを順に見ていきましょう。

コピーレフト型とは

概要をWikipediaさんからお借りします:

コピーレフト(英: copyleft)は、著作権(英: copyright)に対する考え方で、著作権を保持したまま、二次的著作物も含めて、すべての者が著作物を利用・再配布・改変できなければならないという考え方である。

参考: コピーレフト - Wikipedia

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

参考: コピーレフト - Wikipedia

コピーレフト型のライセンスが適用されたソフトウェアは、そのソフトウェアを利用した他のソフトウェアもコピーレフト型のライセンスとなり、ソースコードを公開しないといけなくなっちゃうので…。
製品化を行う上では、このライセンスが適用されたライブラリを使用しちゃうと製品化されたソフトウェアのコードも全て公開しないといけなくなるので注意が必要です。

また、コピーレフト型のライセンスが持つ特性から「ライセンス汚染」というスラングも生まれたそうで。
「汚染」という言葉に、コピーレフト型の考え方に合わない方の想いが伝わる気もします…。

これらの特性から、個人的には先に掲げた3つ「コピーレフト型」「準コピーレフト型」「非コピーレフト型」の中でも最も気をつけなければいけないライセンスかなと思いますが…。
このライセンス…いえ、もっと言うと…。
このライセンスを定義したリチャード・ストールマンさんが創始者フリーソフトウェア運動と言う観点から見れば、このライセンス形態はリチャード・ストールマンさんの理想とした形でもあるのかなと。

また、Wikipedia情報&コピーレフトではなくGPLに関する話題ですが、こんな見解もあるようで:

ストールマンは、ソフトウェアに対する自由とは何かという問題を提起し、そのひとつの答えを提示した。
GPLは、「自由なソフトウェア」を、有償・無償に関係なく、頒布できるようにした、という単純な意味だけでなく、「ソフトウェアは自由であるべき」という思想が存在することを一般に認知させたという意味において極めて重要な意義がある。

GPLにより付与される強力なコピーレフトGNU/Linuxの成功にとって重要な役割を果たしているとも言われる。
なぜなら、コミュニティに全く還元しようとしないソフトウェア企業にただ搾取されるのではなく、著作物が世界全体に貢献し、自由であり続けるという確証をGPLプログラマに与えたからである。

参考: GNU General Public License - Wikipedia

ソフトウェアの自由を守る上では、最も強力なライセンスと言ってもいいかもしれません。

余談ですが、「コピーレフト」の名称の由来は「コピーライト(Copyright)」のもじりから来たものであるそうです。
「コピーライト」が「Copyright — all rights reserved」(著作権―全ての権利は留保されている)」に対し、
コピーレフト」は「Copyleft — all rights reversed」(コピーレフト―全ての権利は逆さにされている)」といった感じに。

このフレーズは「ドン・ホプキンス」という開発者が、コピーレフトの考え方の師リチャード・ストールマンにあてて送ったフレーズであるそうで。
ストールマンさんがこのフレーズを気に入ってそのまま使ったそうな…。

お次はそんなコピーレフト型の特性を持った具体的なライセンスの代表格、GPLについて見ていきましょう。

GNU General Public License(GPL)

GPLは「GNU General Public License」の略称です。
フルネームでこの用語を見かけることはほとんどなく、GPLの名称で呼ばれているのをよく見かける…気がします。

GPLライセンスが許諾する内容は下記の通りとなります:

  • プログラムの実行
  • プログラムの動作を調べ、それを改変すること(ソースコードへのアクセスは、その前提になる)
  • 複製物の再頒布
  • プログラムを改良し、改良を公衆にリリースする権利(ソースコードへのアクセスは、その前提になる)

また、GPL自体も何回か改訂されており、執筆当時(2020/07/24)では「GPL Version1」と「GPL Version2」、「GPL Version3」までが存在します。
ただ、どのバージョンでも基本思想は変わっておりません。
どちらかと言うと、GPLが広まっていく&時代が変わるにつれ、GPLの規定の穴を突く様な使われ方をされたケースがあった or 当初の規定では考慮していなかった要素が出てきた事に対する対抗策として改訂されていった…と言う形ですね。

もっと詳しいことを見たい場合は、下記の記事あたりを参照に。

GNU General Public License - Wikipedia
https://www.ipa.go.jp/files/000028288.pdf
GPL(v3)をApache(v2)と比較する、ためにGPL(v3)の該当部分を読む。 – 弁理士 前渋正治

特にWikipediaさんは結構詳しくまとめられておすすめです。
というかオープンソースライセンス周りについては、執筆当時(2020/07/24)段階のWikipediaさんで結構詳しくまとめられているので…。
GPLに限らずオープンソースライセンスについて知りたい場合は、Wikipediaを見てみるといいかもしれません。

お次は非コピーレフト型をまとめていきたい…ところですが、記事が長くなりそうなので分割する事にします。

おわりに

今回記事では、オープンソースライセンスのコピーレフト型に関してまとめてみました。
本記事でオープンソースライセンスのおおまかな内容と、コピーレフト型については把握できたかなぁと。

次回記事では、非コピーレフト型のオープンソースライセンスにまとめていこうと思います。

余談として、Githubでのライセンスシェア状況をまとめてみました。
何かの参考になれば幸いです。

それでは|д゚*)

余談: Githubでのライセンスシェア状況

こちらの下記記事を参考に、執筆当時でGithubリポジトリ内の「シェア率が最も高いライセンスが何か」をまとめてみました。
GitHubのOSSライセンスシェアの調査結果 - Qiita

集計結果はこんな感じ。

"各ライセンスのリポジトリ数"
各ライセンスのリポジトリ

"各ライセンスのリポジトリ数比率"
各ライセンスのリポジトリ数比率

上位ライセンスを簡単にまとめてみるとこんな感じ。

ライセンス名称 ライセンス数 シェア率
MIT コピーレフト 3898191 40%
GPL 1696639 コピーレフト 18%
Apache-2.0 コピーレフト 1314776 14%
GPL Version3.0 コピーレフト 1297730 13%
GPL Version2.0 コピーレフト 403907 4%

MITライセンスは圧倒的なシェアを誇っていることがわかります。
2番目のGPLライセンスも大したものですが、この中に「伝播してGPLにせざるを得なかった」リポジトリがどれだけあるかはわかりませんがね…。