MIT・GPL・Apache ライセンスの違いをやさしく理解する
オープンソースソフトウェアは、誰でも取って使えるように公開されています。だからよく「無料」だと思われますが、正確には一定の条件のもとで無料です。その条件を書き留めたものがライセンスです。
条件を知らずに取り込んでしまうと、あとから製品を売れなくなったり、ソースコードをまるごと公開しなければならない状況にぶつかることもあります。今回の記事では、代表的な三つのライセンスである MIT、Apache、GPL がどう違うのかを、コードなしで解きほぐしていきます。
オープンソースの「無料」には条件があります #
ライセンスは、このコードをどんな条件で使ってよいかを定めた使用ルールです。公開されていることと、好きに使ってよいことは別の話です。公開されたコードにも、こう使えばよい、これは守ってほしい、という約束が一緒に付いています。
幸い、広く使われるライセンスは数種類に整理できます。そのうち MIT、Apache、GPL の三つを見分けられるだけでも、たいていの状況を読み取れます。三つは、寛容な側から厳しい側へと並べることができます。
MIT — もっとも寛容なライセンス #
MIT は、もっとも自由な部類に入るライセンスです。原作者を示す著作権表示さえそのまま残しておけば、そのコードを商用で使おうと、直して使おうと、直した結果を公開しなかろうと、ほぼすべてが許されます。
条件が単純なので、企業も個人も気兼ねなく取り込みます。「このコードを使って生じた問題は責任を負わない」という免責条項と、著作権表示を残すことが、事実上のすべてです。気軽に使いやすいので、数多くの人気ライブラリが MIT を選びます。
Apache — MIT に特許保護を足したライセンス #
Apache ライセンスは、MIT のように自由に使えながら、特許に関する条項をもう一枚重ねているのが特徴です。コードの貢献者が持つ特許を、そのコードを使う人にも一緒に許可する、という内容が含まれています。
かんたんに言えば、あとからそのコードに関連する特許で利用者を訴えられないように、あらかじめ防いでおく仕掛けです。だから特許の紛争を気にする企業が Apache ライセンスを好みます。自由に使いつつ、法的な安全装置をもう一枚ほしいなら、Apache が向いています。
GPL — 自由を受け継がせるライセンス #
GPL は、前の二つとは肌合いが違います。GPL で公開されたコードを取り込んで自分のソフトウェアに入れると、自分のソフトウェアも同じ GPL の条件で公開しなければなりません。自由に受け取ったぶん、自由に出しなさい、という哲学です。
この性質のため、GPL はしばしば伝染性があると表現されます。たとえるなら、GPL のコードが一滴混ざると、その水全体が GPL の色に染まるようなものです。みんなに開かれたソフトウェアを守ろうとする良い意図ですが、ソースを公開できない商用製品では大きな制約になります。だから GPL のコードを製品に入れる前には、とくに慎重に確認する必要があります。
だから、何を見ればよいか #
製品にオープンソースを取り込むとき、確認することは二つに絞られます。商用で使ってよいか、そして自分のソースコードを公開する義務が生じるか、です。MIT と Apache はおおむねどちらも心配がなく、GPL はソース公開の義務を見きわめる必要があります。
ライブラリを一つ取り込むときにライセンスを一度確認する習慣だけでも、あとの大きな問題を防げます。公開されているのだから、そのまま使ってよいだろう、と流してしまうのがもっとも危険です。
なぜ非開発者が知っておくと仕事が楽になるのか #
- 導入の判断を一緒にできます。 どのオープンソースを製品に使うかを決めるとき、ライセンスが事業にどんな制約を与えるかを、開発者と同じ目で見られます。
- 法務・契約のリスクを先に見られます。 外注や納品の契約で「オープンソースライセンスを守ったか」がなぜ点検項目になるのかを理解できます。
- 自分たちのコードを公開するかを決められます。 自分たちが作ったものをオープンソースとして出すとき、どのライセンスを付ければ人々がどう使えるのか、方向を定められます。
まとめ #
今日は、オープンソースの代表的なライセンスである MIT、Apache、GPL を、寛容な側から厳しい側へと見てきました。MIT は著作権表示さえ守ればほぼ自由、Apache はそこに特許保護を足したもの、GPL は取り込めば自分のコードも一緒に公開しなければならない、という点が肝心です。
オープンソースがどのように世界を変えてきたのか気になればオープンソースはどのように世界を変えたのかを、複数の人が一つのコードを一緒に直す協業がどう行われるのか気になればGit とバージョン管理を一緒に読んでみることをおすすめします。