最近、mimemagicの件をきっかけにGPLが話題になることが多いのですが、 どうもSNS等ではGPLは難しい、わからん!という声をよく目にします。

また以前から、業務上GPLのライブラリなどを利用する際に、 実はGPLをきちんと理解した上で使っている人は少ないのではという不安を持っていました。

自分としてはGPLは運用の難しさはあるもののライセンスとしては明快な方だと思っていて、 じゃあなぜ理解されづらいのかと考えたときに、初心者にわかりやすく内容を要約した解説が実は無いのではないかと思いました。

そこで試みにGPLについて短い解説を書いてみました。

※注意点として、要点だけ記述しているので全ての内容はカバー出来ていません。 また自分は法律については素人なので法解釈には誤りがある可能性があります。 あくまで初歩的な理解のための大雑把な概観を得るための文章だと考えてください。


GPLとは何か

まず、そもそもGPLとは何ぞやという話なのですが、 GPLというのは著作物の利用に関するライセンス契約書です。

契約書の内容に同意して契約を交わすなら、一定の権利を契約者に与えますよと言っているわけです。

で、契約である以上、誰と誰の間で契約が結ばれているのかが重要になります。 ここが曖昧な人が多いと思っています。

GPLを一言で説明すると、配付者が著作物の配付時に一定の義務を負う代わりに、著作物を自由に利用したり配付したりする権利を得るライセンスです。

つまり、GPLで契約を結ぶのは著作者と著作物の配付者です。

GPLライセンスの文章には配付者の他に著作物を受け取った人が登場してきます。 そのため誰と誰との契約かが曖昧になりやすいのですが、 あくまで著作者と配付者の間で結ばれる契約だということが頭に入っていると理解しやすくなると思います。

また重要なことは配付者が義務を負うのは誰かに配付する時点からということです。 基本的にGPLの契約内容は配付時の義務か、あるいは利用時の権利保証になっていますから、 配付しない限り、著作物をほぼ自由に利用できると考えてもらって構いません。

もう一つ重要なこととして、GPLにおける配付というのは誰かに著作物を渡す行為全般を指していて、パブリックな場で無償公開することだけに限定されていません。 個人やクローズドなグループへの配付も契約の対象になりますし、有償での配付も対象になります。 逆に言えば有償で配付したり、特定の個人にのみ配付したりすること自体は制限されていません。

配付するときの義務

では、配付者が負う一定の義務とはなんでしょうか?

受領者の権利保証

1つ目は、配付者から著作物を受け取った人(受領者と呼びます)もまたGPLで契約する権利があることを保証することです。 この権利を隠したり、邪魔したりしないことが求められます。

これはつまり、受領者もまたGPLに従うことで新たな配付者になることが出来るということです。 コピー、孫コピーが発生してもそれぞれ再帰的に権利が引き継がれるわけです。 これが「コピーレフト」と呼ばれる仕組みになります。

またGPLにはライセンスの制限に従う限り著作物を自由に利用する権利が含まれていますから、 受領者もまた自由に著作物を利用することが出来ますし、配付者が勝手にそれを制限出来ないようになっています。

改変時の義務

2つ目は、配付者が著作物を改変したり著作物から派生したりした二次著作物を配付するときには二次著作物もまたGPLでライセンスしなければいけないということです。 この義務が無いと著作物をちょっと変えてGPLの義務から逃れてしまうようなことが出来てしまいます。

そのような逃げ道を防ぐために「派生」の範囲が結構複雑になっていて、この辺りも分かりにくい部分かと思います。

基本的には、配付する著作物が別々に分けられていても、最終的にワンセットで利用される場合は一つの著作物だと見なされる、という理解で問題ないと思います。 なぜそうなっているかというと、そうしないと改変の差分だけ別のモジュールに分けてGPLの適用範囲外ですと言い逃れ出来てしまうからです。

また逆に元々複数の著作物であってもワンセットで利用される形態で配付する場合は全てがGPLの適用範囲になります。 そうしないと差分について、元々別のモジュールだからと主張してGPLの制限から逃れてしまうことが出来てしまうからです。

上記のような非GPLの著作物をGPLの著作物とくっつけて配付する場合は非GPLの著作物の方もGPLの対象にできる必要があります。 GPLとコンフリクトする他のライセンス下にあるなどの理由でGPLが適用できない場合はGPLが課す義務が守れないためライセンス違反になり GPLが保証してくれている権利が消失してしまいます。

だいたいのケースでは上のおおざっぱな理解で問題ないと思いますが、細かいケースで「ワンセット」と言えるかどうか判別しづらいケースがあり、 そこがGPLの難しさの一つではあります。より詳細な説明は、GPL本文に細かく書いてあるので、詳しく知りたい方は頑張って読んでみてください。 gnu.orgのFAQページも参考になると思います。 https://www.gnu.org/licenses/gpl-faq.html

また、GPLライセンスを著作物に適用するにはいくつか守らないといけないルールがあります。 派生物を配付する場合や原著作者が最初にGPLで配付する場合にはルールに従ってライセンスを追加するようにしてください。 具体的なルールは以下のページが参考になります。 https://www.gnu.org/licenses/gpl-howto.html

ソースコード提供の義務

義務の3つ目は、配付者が著作物から生成した生成物だけを配付する際には、生成元の著作物も受領者が入手できるようにしないといけないということです。 具体例としてはソースコードからコンパイルした実行形式のプログラムだけを配付するような場合です。 そのような場合にはソースコードも入手できる手段も提供しなければなりません。

これは自由な利用には改変する権利も含まれているという考え方によるものです。 ソースコードなしにプログラムを改変するのは非常に難しいことが多いので、そのような事態を防ぐためにこのような義務が課せられています。

まとめ

主な義務としては上の3つになります。 ここまで見てきて分かるように、これらは配付者が受領者に対して自由に使える権利を保証するための義務になります。 著作者の視点で言えば、著作物を受け取る他の人にもちゃんと権利を保証するなら再配付してもいいですよという許可を与えているわけです。

他にもGPLには様々な契約内容が含まれていますが、それらは主に上記の義務に対する逃げ道を防ぐための防衛的な条項や、契約の例外事項についての記述が大半です。

なので大雑把に言えば、これらの義務を守る限り対象の著作物を自由に利用出来る契約がGPLというわけです。


おわりに

簡単にと言いつつ結構長くなってしまいました。

ただ重要なことはシンプルで、配付者が配付する際に義務を負うことと引き換えに自由に利用する権利をもらえるということだけを意識しておけばよく、 その義務も3つだけなので意識しないといけないことはそんなに沢山ないと思っています。

GPLの難しいところはそれらの義務について、個別のユースケースでこの場合どうすればいいんだろう?と迷うことが出てくるところなので、 逆にそういったエッジケースに当たらなければ非常に分かりやすいライセンスだと思っています。

しかし周りを見るとそもそもこうした基本の考え方すら覚束ないような人が結構いて、 なんでだろう?と考えたときにそもそもGPLについて概観でとらえられるような資料が無いんじゃないかと思い今回解説を書きました。

とくに著作者、配付者、受領者の関係性が分かりにくいため理解のハードルになっているのではないかと思い、 まず登場人物を整理するところから始めてみました。

この文章が少しでも初心者の方の理解になれば幸いです。