GitHub利用時やソースコードのコピペ時に気をつけたいOSSライセンス知識

## はじめに
プログラミングでは、Google検索して誰かのプログラムをコピペ利用させてもらったり、GitHubなどからソースをダウンロードして活用することも多いと思います。

しかし、ソフトウェアのライセンスや権利関係については、読んでも難しかったり、うまくまとまっておらず、知らず知らずのうちにライセンス違反などをしてしまう可能性があり、怖いです。

この記事では、オープンソース(GPL v2.0)のWordPressプラグインを開発している立場から、プログラムの権利やライセンス関連について簡単にまとめてみます。

## ソースコードのコピペをすると違法になるの？
後述しますが、ソースコードは、フリー画像と同じく人の著作物にあたるので、注意しないと著作権を侵害してしまいます。
特に数十行単位のレベルではなく、GitHubに公開されているような特定の機能を持つソフトウェア一式をそのまま利用した場合は、著作権侵害の可能性が高まります。
そのためにライセンスがありますし、ライセンスに敏感になっておいて損はないと思います。

またソースコードをWebサイト上に公開する人も、参考程度に出した数十行単位の小さなソースコードであれば暗黙の了解的なところはありますが「自由に使っていいよ」と書くと親切かも知れません。GitHubに上げるときは一緒にライセンスをつけたりとか。

## そもそもライセンスって何？
ライセンスとは「利用規約（利用許諾）」のことです。
あくまでイメージですが、*ソフトウェアは「フリー画像」と似た権利* を持つと考えると、だいぶスッキリするのではないかと思います。

## ソフトウェア（ソースコード）の権利
ソースコード自体には、フリー画像のように「著作権」が認められます。従って無断利用はもちろん、そのソースを元にした改変なども原則は認められません。

しかし、ソフトウェアは画像とは違い、小さなルーチンをコピペし改変して利用した場合、その著作性を検証することは難しいことが多いです。また多くの先人が知識を共有してくれたからこそ、現代のソフトウェアの発展があるといっても良いと思います。

そこで大切になってくるのが「ライセンス」になります。

ライセンスとは、著作権者が「この条件で使っていいよ」と利用者に想いを伝えたもの、と言うことができます。

### ソフトウェアの特許について
ソフトウェアの特許は「デバイスを含む具体的な仕組みの発明」に対して付与されるもので、特許庁の審査を経て認可されます。私が開発しているデータ解析ソフトウェアでも特許を取得しています。

珍しいケースの割に、オープンソースなどが絡むとより複雑になるので詳しい説明は省きますが、もし利用したいソフトウェアが特許を保有している場合も、やはり利用規約、つまりライセンスが大切になります。

覚えておきたいのは、オープンソースのみで実現する特許権は誰でも自由に無料で利用できるということです。たとえば、先の私が特許を保有するデータ解析ソフトウェアはオープンソースであるWordPressのプラグインとして開発していますが、そのプラグインを利用するからといって、特許料が発生することはありません。

## 有名なオープンソースのライセンス比較
いつくかのメジャーなオープンソースライセンスを、各ライセンスの哲学にわけて２つご紹介します。最後のCCライセンスは、比較のために掲載します。

1. どうぞご自由に。MIT、BSD、Apatch（寛容型）
2. ソフトウェアの自由を望む。GPL（互恵型）
3. インターネット上で著作権者を守りたい。CCライセンス（※ソフトウェア非推奨）

なお、詳しくは様々なライセンスの原文を読んでもらうのがよいと思います。
一般社団法人オープンソース・グループ・ジャパンが、ありがたいことに原文に加え日本語訳もしてくれているのでURLを掲載しておきます。
https://licenses.opensource.jp/

### 1.どうぞご自由に。MIT、BSD、Apatch（寛容型）
GitHubで公開されているソフトウェアは、このライセンス型であることが多いです。
MITやBSDやApatchは、その名が示すようにそれぞれの団体により利用規約のひな形が作成されていますが、基本的に「著作権は放棄しないけど、商用だろうが非商用だろうが、自由に使ってくれていいよ」というライセンスです。

このタイプのライセンスの場合、以下を守れば自由に利用することができます。
* 著作権の表記
* ライセンスの表記

どこに表記するかは各ライセンスによって決められているので、詳しくは原文を読んで頂きたいですが、例えばMITライセンスであれば「著作権の表示と本許諾の表示を、ソフトウェアの重要な部分に記載するものとする」と定義されています。一般的にはその利用しているソースコードの中やREADMEなどに記載することが多いようです。

### 2.ソフトウェアの自由を望む。GPL（互恵型）
LinuxやWordPressなど多くの有名オープンソースが採用するライセンスです。
GPLはGNU General Public Licenseの略で、フリーソフトウェア財団という団体が作成した利用規約になります。

フリーソフトウェア財団の哲学は「ソフトウェアの自由な改変」であり、誰かが権利を守ることを良しとしません。具体的には「GPL適用ソフトウェアを利用して作成されたソースコードの開示」が求められます。JavaScriptのMinifyなども、利用者がプログラムを自由に改変できないため原則はアウトです。

GPL適用のオープンソースを利用した場合は、それを利用して作成されたソースコードもGPLである必要があり、ソースコードの開示が求められます。このようにどんどん派生していくため、一部ではGPL汚染などとも言われ、利用を避けられる傾向があります。

確かに利用する側からするとソースを開示したくない場合もありますが、一方で、どんどんソースコードが開示され、自由に使えるというのは、ソフトウェア文化としてはありがたく「ソフトウェアは人類の資産である」という哲学が根付いたライセンスだと言えると思います。

### 3.インターネット上で著作権者を守りたい。CCライセンス（※ソフトウェア非推奨）
インターネット上での画像の著作権を守るクリエイティブ・コモンズ・ライセンス（CCライセンス）も有名です。こちらも、著作権者を守るためのひな形を多数用意してくれていますが、ソフトウェアのソースコードやオブジェクトコードは対象外であり、団体自体がソフトウェアでの利用をオススメしていません。

## 最後に
先日、Apache Log4jというオープンソースの脆弱性が世間を騒がせましたが、その時のLog4jの作者と大企業との間でのやりとりが、少し話題になっていました。作者であるステンバーグ氏はこんな内容をツイートしています。

「log4jについて心配している数十億ドル(数千億円)規模の大企業が、なんの対価も支払っていないオープンソースソフトウェアの開発者にメールを送りつけて、24時間以内に無料で質問に答えるよう要求するというのは一体どういうことでしょう？」
https://gigazine.net/news/20220126-log4j-security-inquiry/

私はやはり、人のためにバグなどと向き合い、頑張って作っているプログラマーは報われて欲しいという思いがあります。
作ってくれた人への感謝と敬意を示す意味でも、ライセンスは意識するとよいかなと思っています。

### 参考情報
▼OSSライセンスの教科書 | 上田 理 (著), 岩井 久美子 (監修)　技術評論社
https://www.amazon.co.jp/dp/4297100355

▼オープンソースライセンスの日本語参考訳 | 一般社団法人オープンソース・グループ・ジャパン
https://licenses.opensource.jp/

▼【クオッカでもわかる】ワードプレスのGPLライセンス。有料テーマ、自作プラグイン販売時の考え方 | QuarkA(自作)
https://quarka.org/about-wp-theme-plugin-license/