ククログ

株式会社クリアコード > ククログ > フリーソフトウェアライセンス(オープンソースソフトウェアライセンス)入門

フリーソフトウェアライセンス(オープンソースソフトウェアライセンス)入門

最近、フリーソフトウェア(オープンソースソフトウェア)をいざ公開しようと思った時に、ライセンスの扱いに困った福田です。

ライセンスはたくさん種類があって、いざ自分で選んで使おう!と思っても、最初は難しいですよね。

難しそうなライセンスは選ぶのが怖いから、とりあえず使いやすそうなMITライセンスを使おう!となってしまっていませんか?
実はそれ、大きなデメリットもあるのです。

今回は、お勧めのライセンスの選び方や、使い方を紹介したいと思います。

フリーソフトウェアとは

フリーソフトウェアとは、ユーザーが自由に使えるソフトウェアのことで、自由(な)ソフトウェア、などとも呼ばれます1。オープンソースソフトウェア(OSS)という言葉の方が聞き慣れている方が多いかもしれません。フリーソフトウェアとOSSはほぼ同じソフトウェアを指しますが、考え方が違います2

詳しく知りたい方は脚注のサイトをご覧頂きたいのですが、「OSSは分かるけどフリーソフトウェアという言葉がピンと来ない」、という方のためにここで簡単に概念を紹介します。OSSはそのメリットを重視する考え方に基づいています。オープンにすることで広い協力を集められる、技術力をアピールできる、などです。一方でフリーソフトウェアは、ユーザーにソフトウェアをコントロールする権利があるべきだ、という考え方に基づいています3。メリットが大きいから公開するのではなくて、ユーザーがコントロールできて然るべきだから公開するのです。結局ほぼ同じソフトウェアを指すのですが、考え方の違いで言葉が使い分けられているのです。

クリアコードは、フリーソフトウェアとビジネスの両立を理念としており、フリーソフトウェアの考え方を大事にし、推進している会社です4。そのため、本記事ではOSSではなく、フリーソフトウェアという言葉を使います。

フリーソフトウェアとソフトウェアライセンス

自分の作ったソフトウェアをフリーソフトウェアとして公開するためには、ソフトウェアライセンスについての理解が欠かせません。

フリーソフトウェアの定義を満たすだけであれば、実は著作権を放棄するだけでも構いません。しかしそれだけでは、後世そのソフトウェアの開発を引き継いだ人たちがそれをフリーソフトウェアではなくしてしまったり、その二次的著作物がフリーソフトウェアではなくなってしまったりする可能性があります。せっかくフリーソフトウェアとして世に出すのですから、そういった事態は防ぎたいですよね。これを実現する、つまりそのソフトウェアの自由を永続的に保護するために、コピーレフト5という概念に基づいたライセンスを用いることができます。

著作権の放棄

実は、何もライセンスを付けず、著作権を放棄して公開すれば、フリーソフトウェアになります。これはパブリックドメイン・ソフトウェアと呼ばれます6

しかし、上述の通り、この方法はお勧めできません。

永続的な自由を保護するため、コピーレフトのあるライセンスを用いることを推奨します。

コピーレフトのあるライセンス

コピーレフト(Copyleft)とは、コピーライト(Copyright)、すなわち著作権をもじった概念です。著作権には、利用者の自由を制限するもの、というイメージがあるでしょう。しかしフリーソフトウェアにおいては著作権を逆の目的、すなわち利用者の自由を保護するために用います。例えば、二次的著作物にも自由が保証されるよう義務付け、さらに二次的著作物にも同じ著作権の適用を義務付けることで、再帰的に全ての二次的著作物の自由を保護することができます。

コピーレフトのあるライセンスは、フリーソフトウェアに必要な保護の仕組みを提供してくれます。ライセンスの選び方については後の章で紹介しますが、特別な理由がなければこの種類のライセンスから選ぶことをお勧めします。

コピーレフトのないライセンス

ライセンスには、コピーレフトではないものも存在します。MITライセンスが有名でしょう。

こういったライセンスは、制限が緩く使いやすいと認識されることもありますが、「制限が緩い」ということは「保護が弱い」ということでもあり、立場によって真逆の捉え方になります。フリーソフトウェアの作者という立場から見れば、こういったライセンスは単に「保護が弱い」ものであり、できれば採用したくありません。今後非公開のソフトウェアにする可能性があるなど、コピーレフトを含められない事情がある場合に採用を検討します。

代表的なライセンス

フリーソフトウェアに使われるライセンス一覧は、https://www.gnu.org/licenses/license-list.htmlhttps://opensource.org/licenses/alphabetical で確認できます。

見ての通り多くの種類がありますが、まずはコピーレフトの強さという観点で代表的なライセンスを把握することをお勧めします。

GPLv3 (GNU GENERAL PUBLIC LICENSE Version 3)

しっかりしたコピーレフトのライセンスです。

しっかりした保護が受けられる有名なライセンスであるため、最もお勧めするライセンスです。

ライセンス内容: https://www.gnu.org/licenses/gpl-3.0.html

LGPLv3 (GNU LESSER GENERAL PUBLIC LICENSE Version 3)

GPLv3に比べ、弱い(LESSERな)コピーレフトのライセンスです。GPLv3と同等にユーザーの自由を保護しつつ、不自由なソフトウェアからの利用を許します。

ライブラリーを作成する時に、GPLv3の代わりに用いることがあります。GPLv3は、そのライブラリーを利用するソフトウェアにも自由であることを要求します。本来それは良いことなのですが、ご存知の通り、残念ながら世の中にはフリーソフトウェアではないソフトウェア(不自由なソフトウェア)もたくさんあります。ライブラリーをこういった不自由なソフトウェアに使用してもらいたい場合は、GPLv3を用いることができません。もしくは他に競合となるライブラリーがある場合、GPLv3を用いることはソフトウェア側に他のライブラリーを選ばせ、そのライブラリーを使ってもらえない原因になり得ます。こういった場合にGPLv3の代わりに使用できるものがLGPLv3です。

ライセンス内容: https://www.gnu.org/licenses/lgpl-3.0.html

Apache-2.0

コピーレフトではないライセンスです。

「特許ライセンスの付与(Grant of Patent License)」条項があり、開発元から特許権を行使される心配なくユーザーに利用してもらえる点で好まれます。

ライセンス内容: https://www.apache.org/licenses/LICENSE-2.0

MIT

コピーレフトではないライセンスです。

非常にシンプルで使いやすそうに見えるかもしれませんが、それだけの理由で選ぶのは推奨しません。

ライセンス内容: https://opensource.org/licenses/MIT

ライセンスの選び方

以下の手順でライセンスを選択することをお勧めします。

  1. 関連するフリーソフトウェアがあるならそのソフトウェアと同じライセンスを選ぶ
  2. 関連するフリーソフトウェアがなく、単独で動くプログラムならGPLv3を選ぶ
  3. 関連するフリーソフトウェアがなく、ライブラリーならLGPLv3を選ぶ

また、もしコピーレフトを含められない事情がある場合は、Apache-2.0を選びます。ただし、Apache-2.0はGPLv27とのライセンス互換性8がないため、それが問題となる場合のみMITを選びます。

より詳しく知りたい方は、 https://www.gnu.org/licenses/license-recommendations.html をご覧下さい。

GPLライセンスの使い方

以上の通り、関連するフリーソフトウェアがある場合にはそれと同じライセンスを選ぶべきです。この場合は、その関連ソフトウェアがどうライセンスを適用しているのかを参考にしつつ、そのライセンスの正しい使い方を調べることになります。

そうでない場合は、GPLv3かLGPLv3を選ぶことになります。どちらも同じように使えるため、まとめて解説します。厳密には、各ライセンス内容の末尾にあるHow to Apply These Terms to Your New Programsの内容や https://www.gnu.org/licenses/gpl-howto.html をご覧下さい。

以下の手順でプログラムにライセンスを適用することができます。

  1. COPYINGという名前のファイルをプログラムに追加し、ライセンスの原文(GPLv3, LGPLv3)をコピーする
  2. 主要な各ファイルの冒頭にライセンス告知(後述)をつける

ライセンス告知

各ライセンス原文のHow to Apply These Terms to Your New Programsに告知の原文があります。ここで記載されている通り、この告知文は必要に応じてアレンジ可能であり、著作権者と完全な原文の入手方法が明記されていれば良いです。特にソースコードファイル上におけるコメントアウト方法はプログラム言語によって変わります。

原文では最後に「プログラムと一緒にライセンスのコピーが渡されているはずです。もしそうでなければ、 https://www.gnu.org/licenses/ を見てください。」という趣旨の文が書いてあり、このためCOPYINGというファイルを用意するわけです。

また、 https://www.gnu.org/licenses/gpl-howto.html に記載されている通り、複数ファイルからなるプログラムの場合は、This programをプログラム名に変更し、This file is part of {プログラム名}.という一行を追加することを推奨します。

GPLv3の告知文は例えば下記のようになります。

# Copyright (C) {著作権発生年} {ファイル作成者名} <{メールアドレス}>

# This file is part of {プログラム名}.

# {プログラム名} is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# {プログラム名} is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

or later と only について

GPLv3やLGPLv3などのGPLライセンスを適用する際に、今後の新しいバージョンのライセンスを自動で採用するかどうかを選ぶことができます。

ライセンスの新しいバージョンを自動で採用する場合はGPLv3 or later、現バージョンに限定する場合はGPLv3 only、のようにor lateronlyを付けて区別します。

これはライセンス告知の内容によって決まり、デフォルトの内容ではor laterになっています。onlyにしたい場合は告知文を変更する必要があります。

例えばGPLv3 or laterでは以下のようになる部分を、

# {プログラム名} is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

GPLv3 onlyにする場合は以下のように変更します。

# {プログラム名} is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as 
# published by the Free Software Foundation.

今後作られる新しいバージョンのライセンスがどのような内容になるのか分からないため、それを気にする場合はonlyにすることを検討します。

まとめ

フリーソフトウェアを公開する際のライセンスの選び方や使い方を、フリーソフトウェアやライセンスの基本的な事柄も含めて簡単に紹介しました。

ライセンスはたくさん種類があり、それぞれ内容が難しいので、いざ自分で使おうとするとハードルが高いですよね。

しかし、シンプルで使いやすそうという理由だけでMITなどの保護の弱いライセンスを選んでしまうことは、フリーソフトウェアを大事にしたい著作者自身に大きなデメリットをもたらしてしまいます。なるべくしっかりとした保護が受けられるライセンスを選ぶようにすることをお勧めします。

本記事の内容が少しでも参考になり、状況に応じて適切なライセンスを選んで頂けたら幸いです。

より詳しく厳密に知りたい方は、 https://www.gnu.org/licenses/licenses.html をご覧下さい。

  1. 自由ソフトウェアとは?: https://www.gnu.org/philosophy/free-sw.ja.html

  2. なぜ、オープンソースは自由ソフトウェアの的を外すのか: https://www.gnu.org/philosophy/open-source-misses-the-point.html

  3. 「フリー」(「自由」、「free」)という言葉は「無料」を意味しているわけではありません。

  4. クリアコードとフリーソフトウェアとビジネス

  5. コピーレフト: https://www.gnu.org/licenses/copyleft.html

  6. パブリックドメイン・ソフトウェア: https://www.gnu.org/philosophy/categories.html#PublicDomainSoftware

  7. GPLv2とは、GPLv3の前のバージョンです: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

  8. ライセンス互換性: https://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean