yamory Blog

正しく知れば怖くない GPL ライセンスの特徴

GPL ライセンス (ジーピーエルライセンス、GPL License、GNU General Public License)とは、オープンソースソフトウェアを開発・配布する際に用いられる代表的なオープンソースライセンスのひとつで、利用許諾のための条件などを定めているものです。

本記事では GPL ライセンスの概要から掲載例について解説していきます。

GPL ライセンスの概要

GPL は GNU General Public License の略で、GNU プロジェクトのためにリチャード・ストールマンによって作成されたライセンスです。
フリーソフトウェア財団(FSF; Free Software Foundation)によって公開・管理されています。

GPL ライセンスは、コピーレフト性を持つライセンスとして有名です。
WordPress を始め、様々なソースコードなどへ付与されていることでも知られています。

コピーレフトとは、著作物の自由な利用・改変・再配布する権利を人々に提供し、そこから派生した著作物についてもこれらの行為を制限してはならないとする考えのもとストールマン博士によって考案されました。

ちなみにコピーレフト(copyleft)は著作権を残したまま自由を与えるという概念ですが、コピーライト(“right”)の反対で “left” という言葉遊び的な名称になっています。
シンボルマークも著作権マーク © を左右反転させたものが使われています。

コピーレフト自体にはソースコードを公開する義務について言及していませんが、コピーレフトを最初に実装したとされる GNU Emacs General Public License(GPL の前身)では、ソースコードが無くて改変できない事態を避けるために、再頒布時にソースコード開示の条件が与えられています。

GPL は GNU Emacs General Public License を一般化した形になっており、再頒布時にソースコードの開示や入手方法の明確化、ライセンス文言の表記、派生物に対するライセンスなど、いくつかの条件を課しています。

フリー(自由な)ソフトウェアの普及を目的としているため商用目的での利用も可能で、フリー(無料)で頒布しなければならないといった制約はありません。

GPL ライセンスは他のライセンスと比較すると、制限が強く、厳格にコピーレフトの概念を具現化したライセンスといえます。

MIT ライセンス修正 BSD ライセンスなどのいわゆる寛容型(permissive)ライセンスでは、GPL のように派生著作物への同ライセンスの適用を強制することはなく、単純な条項を守ればそのソフトウェアを自由に改変・頒布することが認められます。

GPL ライセンスの内容

GPL ライセンスが他のライセンスと異なる点としては、GPL ライセンスで公開されているプログラムを改変したり、自らのプログラムの一部として組み込んだ場合のような、派生的・二次的な著作物を作成した場合、派生著作物にも GPL ライセンスの適用を強制する点にあります。

さらに、GPL は 他のライセンスと組み合わせたときに GPL ライセンスにはない強力な制限を加えることはできません。
この制約はライセンスの互換性に大きく関わるため、ソフトウェア全体のライセンスに矛盾がないか注意する必要があります。

なお、単に GPL ライセンスのソフトウェアを改変しただけでは公開義務は発生しません。

GPL ライセンスは主要なバージョンとして version 2.0(以下、GPL v2.0)と version 3.0(以下、GPL v3.0)の 2 つがあります。
GPL v2.0 は 1991 年にリリースされ、GPL v3.0 は 2007 年にリリースされています。

GPL v3.0 は GPL v2.0 をベースに作成されていますが、GPL v3.0 は、著作物に対し、著作権者やライセンス受諾者の権利、ライセンス許諾者が与える権利、法的権利の制限(DRM、特許の利用、他者を差別するような特許ライセンスの排除)に関する基本理念を GPL v2.0 より明文化していることが特徴です。

また、GPL v3.0 では、TiVo 化(ハードに対して搭載されたソフトウェアの改変を妨害する機能を作成すること)の防止を 1 つの目標にしており、再インストール情報の開示に関する条件が追加されました。

GNU General Public License version 2.0(GPL v2.0)

特徴

・商用利用可能
・利用に伴い作成者はいかなる責任も負わない

頒布時の主要な条件

・著作権表示とライセンス条文+無保証である旨をソフトウェアの重要部分(ヘッダ部など)に記載する必要あり
・GPL ライセンスを利用して作成されたソフトウェアは頒布時にソースコードの公開義務あり(改変部分のソースコード公開を含む)
・頒布がバイナリによるものであれば、ソースコードに加えてバイナリを生成するために必要な構成ファイル等の開示義務あり
・GPL ライセンスが適用されたプログラムの全部あるいは一部を用いて作られたソフトウェアは GPL に従って頒布されること
・GPL ライセンスを適用したソフトウェアを頒布する際に GPL ライセンスで書かれている以上の条件を課すことは出来ない

本ライセンスを適用している OSS の例:MySQL, Redmine, Git, CentOS

GPL v2.0 には特許に関する条項が明文化されていないため、後述する Apache 2.0 ライセンスとの互換性がないことが知られています。

公式HP:http://www.gnu.org/copyleft/gpl.html
非公式日本語訳:http://www.opensource.jp/gpl/gpl.ja.html

GNU General Public License version 3.0(GPL v3.0)

特徴

・GPL v2.0 に特許条項を追加したライセンス
・対象ソフトウェアを利用する場合に限り、対象ソフトウェアに含まれる特許を自由に利用できる

頒布時の主要な条件

・利用許諾されたソフトウェアだけで実現可能な特許について、その特許権を許諾すること
・ソースコードの開示だけではなく、改変されたバイナリを機器にインストールする方法も開示する必要あり(家庭で使われる可能性がない機器や、プログラムが ROM のように再インストールできない形態で組み込まれている場合は対象外)

参考:IPA GPLv3 逐条解説

使用と利用の違い

「著作権審議会マルチメディア小委員会 ワーキング・グループ中間まとめ」によると、利用と使用は次のように定義されています。

「利用」とは、複製や公衆送信等著作権等の支分権に基づく行為を指す。
「使用」とは、著作物を見る,聞く等のような単なる著作物等の享受を指す。

ソフトウェアの複製や改変、頒布は「利用」にあたりますが、単にソフトウェアをローカルの環境で実行するような行為「使用」にあたると言えるでしょう。

GPL ライセンスが適用されたソフトウェアを「使用」するだけであればソースコードの公開義務等は発生しません。

このことはGNU ライセンスに関してよく聞かれる質問で、次のように明記されています。

改変を加えて、リリースせずに個人的に使うのはあなたの自由です。
これは組織(企業を含む)でも同様で、ある組織は、改変した版を用意してそれを組織外にリリースすることなく内部的に利用することができます。

Web アプリを提供している場合、ブラウザ経由で JavaScript プログラムを頒布するケースもありますので、対象のソフトウェアがどのような頒布形態になるかを確認しましょう。

GPL ライセンスの例外ケース

GCC(GNU Compiler Collection)は GPL ライセンスが適用された GNU のコンパイラ群であり、GCC を使ってコンパイルを行うと通常、生成するバイナリに GPL のコードが含まれます。

GPL では、GPL ではないソフトウェアを GCC でコンパイルすることを認めるため、例外を規定しています。

GPL ライセンスの適用方法

GPL ライセンスを適用する際には「著作権表示」と「GPL ライセンスの全文」を記載します。

記載に関しては、ソースファイルに記載する方法と、別途ファイルを作成しそちらに記載する方法の 2 種類があります。
管理しやすい方を選択しましょう。

GPL ライセンスの掲載例

ここからは実際に、GPL ライセンスを利用する際の掲載例をご紹介します。

ライセンスの記載方法は、派生ソフトウェアの各ソースファイルの冒頭にライセンス文を記載することで完了します。

各ソースファイルにライセンス文を記載することが困難な場合は、ライセンス全文のファイルを別途作成し、各ソースファイルには冒頭の 2 行(「派生ソフトウェアのプログラム名」と「Copyright」行)とライセンス全文のファイルがある場所のパスを記載することで対応できます。

下記は「著作権表示」と「ライセンスの全文」の記載の実例です。

Copyright (c) 2020 yamory yamada
This program 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 2
of the License, or any later version.

This program 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 http://www.gnu.org/licenses/.

さいごに

今回は GPL ライセンスの概要について解説しました。

GPL ライセンスは他のライセンスと比較すると、利用に際しての制限が強く感じるかもしれませんが、GPL ライセンスの根底にある思想はフリー(自由な)ソフトウェアの普及にあります。

ライセンスには多くの種類があり、それぞれに特徴があります。
利用する際は自分の環境にどれがベストか、比較検討することをおすすめします。

さいごになりますが、yamory はオープンソースソフトウェアの脆弱性と、その脆弱性に関連する攻撃情報のモニタリングをすることができる脆弱性管理ツールです。

また現在、トライアルを含む有償プランにて α 版としてソフトウェアライセンス管理機能をご提供中です。

お使いのオープンソースソフトウェアのライセンスを一覧で確認することができ、合わせて Web アプリケーションで危険となりうる脆弱性を自動的に検出できるため、よりセキュアなシステム構築の助けになるかと思います。

無料でトライアルもできますので、ぜひ一度お試しください。

オープンソース脆弱性管理ツール yamory

  • 利用中のOSSを抽出し
    脆弱性を自動スキャン
  • 脆弱性への対応優先度を自動で分類
  • 組織規模に合わせたプランを選択可能

プロ

有料料金はお問い合わせください

中〜大規模組織向け

無制限の開発チーム作成

開発チームを俯瞰できるセキュリティチーム機能

危険な脆弱性の Slack 連携通知機能

Jira Cloud と連携

シングル・サインオン(SSO)連携*

* SSO 連携は無料トライアルではご利用できません。プロプラン契約後からご利用できます。

30日間の無料トライアルを開始