- 設計
OSSライセンスの種類一覧と違い|MIT・Apache・GPL比較表と表示文例
OSSライセンスとは、オープンソースソフトウェアを使う・改変する・配布するときの条件を定めた文書です。 主要なライセンスはどれも商用利用を認めていて、違いは「配布するときに何をしなければならないか」にあります。その義務は、配布するか・どう組み込むか(リンク形態)・SaaSとして提供するか、の3問でほぼ決まります。
この記事では、12種の早見表と組み合わせのマトリクスに加えて、そのまま使える表示文のテンプレートと、依存ライブラリのライセンスを一覧にするツールの実行結果を載せます。
確認環境:Python 3.11.15+pip-licenses 5.5.5、Node.js 22.22.2+license-checker 25.0.1(Linux)。各ライセンスの条件は choosealicense.com、SPDX License List 3.29.0、Apache License 2.0 の原文、GNU・Mozilla・Apache Software Foundation の公式FAQを 2026-10-06 に開いて確認しました。
この記事は法律上の助言ではありません。利用の可否は、各ライセンスの原文と、自社の規程・法務の確認に従ってください。
この記事の結論
- 主要12種はすべて商用利用できます。 違いは配布時の条件(表示・ソース開示・同じライセンスの適用範囲)です。
- 義務は3問で決まります。 配布するか → どう組み込むか → SaaSで提供するか。
- 寛容型(MIT・BSD・ISC・Apache-2.0)は、著作権表示とライセンス文を同梱すれば配布できます。
- コピーレフトは範囲の違いで選びます。 MPL-2.0はファイル単位、LGPLはライブラリ単位、GPLは結合した全体、AGPLはネットワーク越しの利用者まで。
- 依存ライブラリのライセンスはツールで一覧にします。 寛容型だけを入れたつもりでも、間接的な依存にMPLやLGPLが含まれていました(後述の実行結果)。
OSSライセンスの義務が決まる3問の判定表(早見表)
| 問1:社外に配布するか | 問2:どう組み込むか | 問3:SaaSで提供するか | 対象のライセンス | 発生する主な義務 |
|---|---|---|---|---|
| しない(社内だけで使う) | どの形でも | しない | 12種すべて | 配布時の条件は発生しない |
| しない | どの形でも | する(利用者がネットワーク越しに使う) | AGPL-3.0 | 利用者がソースコードを受け取れるようにする |
| しない | どの形でも | する | AGPL-3.0以外 | 配布時の条件は発生しない |
| する | そのまま同梱・リンク | — | MIT、ISC、BSD、Apache-2.0 | 著作権表示とライセンス文を同梱する(Apache-2.0はNOTICEの内容も) |
| する | MPLのファイルを改変して同梱 | — | MPL-2.0 | 改変したMPLのファイルのソースをMPLで公開する(自分で新しく書いたファイルは対象外) |
| する | 動的リンク | — | LGPL | 表示に加え、ライブラリを一緒に配るならライブラリのソースを提供する |
| する | 静的リンク | — | LGPL | 上に加え、利用者がライブラリを差し替えられるようアプリをオブジェクト形式でも提供する |
| する | 静的・動的リンクのどちらでも | — | GPL、AGPL | 結合した全体を同じライセンスで配布し、ソースを開示する |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「OSSライセンスの種類一覧と違い|MIT・Apache・GPL比較表と表示文例」
GNUのFAQは、GPLについて「改変版を作って、だれにも配布せずに使うことは認められている」と説明しています。また、GPLの対象物に静的または動的にリンクすることは、どちらも結合した著作物を作ることになる、としています。LGPLの静的リンクでは、利用者がライブラリを改変して組み直せるように、アプリケーションをオブジェクト形式で提供することが求められます。
OSSライセンス12種の早見表(SPDX識別子つき)
choosealicense.com の一覧(Appendix)で、各ライセンスの「許可・条件・制限」を確認してまとめました。SPDX識別子は SPDX License List 3.29.0(2026-09-16公開)の表記です。
| No. | ライセンス名 | SPDX識別子 | 分類 | 商用利用 | 著作権・ライセンスの表示 | 配布時のソース開示 | 同じライセンスが及ぶ範囲 | 変更点の明記 | 特許の明示的な許諾 | ネットワーク越しの利用 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | MIT License | MIT | 寛容型 | 可 | 必要 | 不要 | なし | 不要 | 記載なし | 対象外 |
| 2 | ISC License | ISC | 寛容型 | 可 | 必要 | 不要 | なし | 不要 | 記載なし | 対象外 |
| 3 | BSD 2-Clause "Simplified" License | BSD-2-Clause | 寛容型 | 可 | 必要 | 不要 | なし | 不要 | 記載なし | 対象外 |
| 4 | BSD 3-Clause "New" or "Revised" License | BSD-3-Clause | 寛容型 | 可 | 必要 | 不要 | なし | 不要 | 記載なし | 対象外 |
| 5 | Apache License 2.0 | Apache-2.0 | 寛容型 | 可 | 必要(NOTICEがあればその内容も) | 不要 | なし | 必要 | あり | 対象外 |
| 6 | Mozilla Public License 2.0 | MPL-2.0 | 弱いコピーレフト | 可 | 必要 | 必要 | ファイル単位 | 不要 | あり | 対象外 |
| 7 | Eclipse Public License 2.0 | EPL-2.0 | 弱いコピーレフト | 可 | 必要 | 必要 | あり | 不要 | あり | 対象外 |
| 8 | GNU Lesser General Public License v2.1 | LGPL-2.1-only/LGPL-2.1-or-later | 弱いコピーレフト | 可 | 必要 | 必要 | ライブラリ単位 | 必要 | 記載なし | 対象外 |
| 9 | GNU Lesser General Public License v3.0 | LGPL-3.0-only/LGPL-3.0-or-later | 弱いコピーレフト | 可 | 必要 | 必要 | ライブラリ単位 | 必要 | あり | 対象外 |
| 10 | GNU General Public License v2.0 | GPL-2.0-only/GPL-2.0-or-later | 強いコピーレフト | 可 | 必要 | 必要 | 全体 | 必要 | 記載なし | 対象外 |
| 11 | GNU General Public License v3.0 | GPL-3.0-only/GPL-3.0-or-later | 強いコピーレフト | 可 | 必要 | 必要 | 全体 | 必要 | あり | 対象外 |
| 12 | GNU Affero General Public License v3.0 | AGPL-3.0-only/AGPL-3.0-or-later | 強いコピーレフト | 可 | 必要 | 必要 | 全体 | 必要 | あり | 対象(利用者にソースを提供) |
表の言葉は、choosealicense.com の凡例に対応しています。
| 列 | 凡例での意味 |
|---|---|
| 著作権・ライセンスの表示 | ライセンスの写しと著作権表示を、対象物と一緒に含める |
| 配布時のソース開示 | 対象物を配布するとき、ソースコードを入手できるようにする |
| 同じライセンスが及ぶ範囲 | 改変したものを配布するとき、同じライセンスで公開する。範囲はファイル単位・ライブラリ単位・全体で異なる |
| 変更点の明記 | 対象物に加えた変更を記録して示す |
| 特許の明示的な許諾 | コントリビューターからの特許の利用許諾が、ライセンス文に明示されている |
| ネットワーク越しの利用 | ネットワーク経由で使う利用者にも、ソースコードを受け取る権利を与える |
「記載なし」は、choosealicense.com の一覧で特許の欄が空欄になっているものです。Apache-2.0 の特許条項(第3条)には、対象物について特許侵害の訴訟を起こした場合に、その許諾が終了する定めもあります。
表計算ソフトに貼る場合のタブ区切りです。
ライセンス名 SPDX識別子 分類 商用利用 著作権・ライセンスの表示 配布時のソース開示 同じライセンスが及ぶ範囲 変更点の明記 特許の明示的な許諾 ネットワーク越しの利用
MIT License MIT 寛容型 可 必要 不要 なし 不要 記載なし 対象外
ISC License ISC 寛容型 可 必要 不要 なし 不要 記載なし 対象外
BSD 2-Clause "Simplified" License BSD-2-Clause 寛容型 可 必要 不要 なし 不要 記載なし 対象外
BSD 3-Clause "New" or "Revised" License BSD-3-Clause 寛容型 可 必要 不要 なし 不要 記載なし 対象外
Apache License 2.0 Apache-2.0 寛容型 可 必要(NOTICEがあればその内容も) 不要 なし 必要 あり 対象外
Mozilla Public License 2.0 MPL-2.0 弱いコピーレフト 可 必要 必要 ファイル単位 不要 あり 対象外
Eclipse Public License 2.0 EPL-2.0 弱いコピーレフト 可 必要 必要 あり 不要 あり 対象外
GNU Lesser General Public License v2.1 LGPL-2.1-only/LGPL-2.1-or-later 弱いコピーレフト 可 必要 必要 ライブラリ単位 必要 記載なし 対象外
GNU Lesser General Public License v3.0 LGPL-3.0-only/LGPL-3.0-or-later 弱いコピーレフト 可 必要 必要 ライブラリ単位 必要 あり 対象外
GNU General Public License v2.0 GPL-2.0-only/GPL-2.0-or-later 強いコピーレフト 可 必要 必要 全体 必要 記載なし 対象外
GNU General Public License v3.0 GPL-3.0-only/GPL-3.0-or-later 強いコピーレフト 可 必要 必要 全体 必要 あり 対象外
GNU Affero General Public License v3.0 AGPL-3.0-only/AGPL-3.0-or-later 強いコピーレフト 可 必要 必要 全体 必要 あり 対象(利用者にソースを提供)
GNU系のライセンスは、SPDXでは「そのバージョンのみ(-only)」と「そのバージョン以降(-or-later)」を別の識別子で書き分けます。依存ライブラリの表記がどちらかを見ておくと、組み合わせを考えるときに役立ちます。
寛容型・弱いコピーレフト・強いコピーレフトの違い
| 分類 | 同じライセンスが及ぶ範囲 | 自分のコードを非公開のまま配布できるか | 該当するライセンス |
|---|---|---|---|
| 寛容型 | 及ばない | できる(表示を同梱) | MIT、ISC、BSD-2-Clause、BSD-3-Clause、Apache-2.0 |
| 弱いコピーレフト | 改変したファイル、またはライブラリ本体まで | できる(OSS部分のソースは開示) | MPL-2.0、EPL-2.0、LGPL-2.1、LGPL-3.0 |
| 強いコピーレフト | 結合した全体 | できない(全体を同じライセンスで開示) | GPL-2.0、GPL-3.0 |
| 強いコピーレフト(ネットワーク利用を含む) | 結合した全体。配布しなくてもネットワーク越しの利用者が対象 | できない | AGPL-3.0 |
GPLも販売を禁じてはいません。GNUのFAQには「GPLはだれにでも販売を認めている。複製物を販売する権利は自由ソフトウェアの定義の一部である」とあります。「商用利用できるか」ではなく「配布時にソースを開示できるか」で判断するのが要点です。
ライセンスの組み合わせ可否マトリクス
行が「自分の成果物の配布のしかた」、列が「取り込むOSSのライセンス」です。今回開いた公式ページで確認できた組み合わせだけを載せています。
| 自分の成果物 \ 取り込むOSS | MIT・ISC・BSD | Apache-2.0 | MPL-2.0 | LGPL | GPL-3.0 | AGPL-3.0 |
|---|---|---|---|---|---|---|
| ソース非公開で配布する製品 | ○(表示を同梱) | ○(表示とNOTICEを同梱) | ○(MPLのファイルのソースは公開) | △(動的リンク、または静的リンク+オブジェクト形式の提供) | ×(全体をGPLで開示することになる) | ×(同左) |
| Apache-2.0で公開するOSS | ○ | ○ | △(バイナリ形式での同梱に限る) | × | × | × |
| GPL-3.0で公開するOSS | ○(表示を保持) | ○ | ○(「Incompatible With Secondary Licenses」の指定が無い場合) | 各原文で確認 | ○ | ○(リンクは可。各部分はそれぞれのライセンスのまま) |
マトリクスの根拠は次のとおりです。
| 組み合わせ | 根拠にした公式の記述 |
|---|---|
| Apache-2.0 の行 | Apache Software Foundation の方針(ASF 3rd Party License Policy)。MIT・ISC・BSDは「Category A(含めてよい)」、MPL-2.0・EPL-2.0は「Category B(条件つき)」、GPL・LGPL・AGPLは「Category X(含めない)」。これはASFのプロジェクト向けの方針で、Apache-2.0で公開する場合の目安として使えます |
| Apache-2.0 → GPL-3.0 | apache.org「Apache License v2.0 and GPL Compatibility」。Apache-2.0のソフトウェアはGPLv3のプロジェクトに含められる。逆向き(GPLv3をApacheのプロジェクトへ)はできない一方通行 |
| Apache-2.0 と GPL-2.0 | 同ページ。FSFはApache LicenseをGPLバージョン2と互換とは見なしていない |
| MPL-2.0 → GPL系 | Mozilla の MPL 2.0 FAQ。「Incompatible With Secondary Licenses」は許諾者が明示的に選んだ場合だけ付き、既定ではない |
| MPL-2.0 → 非公開の製品 | 同FAQ。MPLのコードを含まない新しいファイルは「Modifications」に当たらず、MPLで配布する必要はない |
| GPL-3.0 と AGPL-3.0 | GNUのFAQ。どちらのライセンスも、もう一方のライセンスのコードとのリンクを明示的に認めている |
| MIT・ISC・BSD の列 | choosealicense.com の一覧で、条件が「著作権・ライセンスの表示」だけである |
互換とは、GNUのFAQの説明では「そのライセンスのコードとGPLのコードを、1つの大きなプログラムに結合できること」を指します。向きがある(一方通行の)関係なので、「AをBに入れられるか」と「BをAに入れられるか」は別々に確かめます。
LGPLとMPLの選び方
どちらも「OSS部分の改変は公開、自分のコードは非公開のままでよい」という弱いコピーレフトですが、範囲の決め方が違います。
| 比べる点 | LGPL | MPL-2.0 |
|---|---|---|
| コピーレフトの単位 | ライブラリ | ファイル |
| 静的リンクで非公開の製品に組み込む | できる。利用者がライブラリを差し替えられるよう、アプリをオブジェクト形式でも提供する | できる。MPLのファイル以外は対象外 |
| 動的リンク | 利用者の環境にあるライブラリを使うだけなら追加の提供は不要。ライブラリを一緒に配るならそのソースを提供する | できる。MPLのファイル以外は対象外 |
| 改変したとき | ライブラリ全体をLGPLで開示 | 改変したファイルをMPLで開示 |
| 特許の明示的な許諾 | LGPL-3.0はあり、LGPL-2.1は記載なし | あり |
| こういうとき | 選ぶもの |
|---|---|
| 自作ライブラリを公開し、改良はライブラリ単位で戻してほしい | LGPL |
| 自作ライブラリを公開し、単一バイナリ(静的リンク)での利用もしやすくしたい | MPL-2.0 |
| 利用する側で、静的リンクして1ファイルで配りたい | MPL-2.0のライブラリのほうが手順が少ない |
| 利用する側で、共有ライブラリとして動的リンクできる | LGPLでもMPL-2.0でも対応しやすい |
| 改良を広く戻してもらうことより、利用のしやすさを優先したい | 寛容型(MIT、Apache-2.0)も候補にする |
表示文の実例とコピペ用テンプレート
MITの表示:著作権表示と許諾文をそのまま同梱する
MITライセンスの条件は次の1文です(下は実際に配布されているパッケージ blinker 1.9.0 に同梱のライセンス文)。「上記の著作権表示とこの許諾表示を、ソフトウェアのすべての複製または重要な部分に記載する」という内容です。
Copyright 2010 Jason Kirtland
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
…(以下、無保証の定め。省略)…
著作権者名と年はライブラリごとに違うので、ライセンス名だけを書くのではなく、各ライブラリのライセンス文そのものを同梱します。
Apache-2.0の表示:ライセンスの写し・変更の明記・NOTICE
Apache License 2.0 の第4条(Redistribution)が求めるのは次の4点です。
| 項 | 求められること |
|---|---|
| (a) | 受け取る人にライセンスの写しを渡す |
| (b) | 変更したファイルには、変更したことが分かる目立つ表示を付ける |
| (c) | ソース形式で配布する派生物には、元の著作権・特許・商標・帰属の表示を残す |
| (d) | 元の配布物に NOTICE ファイルがあれば、その帰属表示を読める形で含める(NOTICEファイル、ドキュメント、または画面上の表示のいずれか) |
たとえば requests 2.33.1 には、次の NOTICE が同梱されています。
Requests
Copyright 2019 Kenneth Reitz
NOTICEファイルのテンプレート
自分の製品の NOTICE に、取り込んだApache-2.0のライブラリの NOTICE の内容を書き写します。製品名・社名は架空のものです。
備品予約システム
Copyright 2026 Example Corp.
This product includes software developed by third parties.
The full list and license texts are in THIRD-PARTY-LICENSES.md.
==========================================================
requests 2.33.1 (Apache-2.0)
https://github.com/psf/requests
----------------------------------------------------------
Requests
Copyright 2019 Kenneth Reitz
==========================================================
{ライブラリ名} {バージョン} (Apache-2.0)
{入手元のURL}
----------------------------------------------------------
{そのライブラリの NOTICE ファイルの内容をそのまま貼る}
自分のソースファイルをApache-2.0で公開するときの定型文(原文のAPPENDIX)は次のとおりです。
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
THIRD-PARTY-LICENSES.md のテンプレート
一覧表と、ライブラリごとのライセンス全文の2部構成にします。
# Third-Party Licenses
{製品名} は、次のオープンソースソフトウェアを含みます。
各ソフトウェアの著作権表示とライセンス全文を、一覧の下に掲載します。
| No. | 名前 | バージョン | ライセンス | 入手元 |
|---|---|---|---|---|
| 1 | {名前} | {バージョン} | {SPDX識別子} | {URL} |
---
## {名前} {バージョン}
- ライセンス: {SPDX識別子}
- 入手元: {URL}
```text
{ライセンス全文(著作権表示を含む)をそのまま貼る}
```
テンプレートをツールの出力から自動で作る(Python)
手で書き写すと抜けが出やすいので、pip-licenses のJSON出力から生成します。次のスクリプトを make_third_party.py として保存します。
"""pip-licenses の JSON 出力から THIRD-PARTY-LICENSES.md を作る。
使い方:
pip-licenses --format=json --with-urls --with-license-file --no-license-path \
--ignore-packages pip-licenses prettytable wcwidth > licenses.json
python3 make_third_party.py licenses.json "備品予約システム" > THIRD-PARTY-LICENSES.md
"""
import json
import sys
path, product = sys.argv[1], sys.argv[2]
with open(path, encoding="utf-8") as f:
pkgs = sorted(json.load(f), key=lambda p: p["Name"].lower())
print("# Third-Party Licenses\n")
print(f"{product} は、次のオープンソースソフトウェアを含みます。")
print("各ソフトウェアの著作権表示とライセンス全文を、一覧の下に掲載します。\n")
print("| No. | 名前 | バージョン | ライセンス | 入手元 |")
print("|---|---|---|---|---|")
for i, p in enumerate(pkgs, 1):
print(f"| {i} | {p['Name']} | {p['Version']} | {p['License']} | {p['URL']} |")
for p in pkgs:
print(f"\n---\n\n## {p['Name']} {p['Version']}\n")
print(f"- ライセンス: {p['License']}")
print(f"- 入手元: {p['URL']}\n")
print("```text")
print(p["LicenseText"].strip())
print("```")
実行結果(THIRD-PARTY-LICENSES.md の先頭と1件目)
# Third-Party Licenses
備品予約システム は、次のオープンソースソフトウェアを含みます。
各ソフトウェアの著作権表示とライセンス全文を、一覧の下に掲載します。
| No. | 名前 | バージョン | ライセンス | 入手元 |
|---|---|---|---|---|
| 1 | blinker | 1.9.0 | MIT License | https://github.com/pallets-eco/blinker/ |
| 2 | certifi | 2026.7.22 | Mozilla Public License 2.0 (MPL 2.0) | https://github.com/certifi/python-certifi |
| 3 | charset-normalizer | 3.5.2 | MIT | https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md |
| 4 | click | 8.5.0 | BSD-3-Clause | https://github.com/pallets/click/ |
| 5 | Flask | 3.1.3 | BSD-3-Clause | https://github.com/pallets/flask/ |
| 6 | idna | 3.20 | BSD-3-Clause | https://github.com/kjd/idna |
| 7 | itsdangerous | 2.2.0 | BSD License | https://github.com/pallets/itsdangerous/ |
| 8 | Jinja2 | 3.1.6 | BSD License | https://github.com/pallets/jinja/ |
| 9 | MarkupSafe | 3.0.4 | BSD-3-Clause | https://github.com/pallets/markupsafe/ |
| 10 | psycopg2-binary | 2.9.13 | GNU Library or Lesser General Public License (LGPL) | https://psycopg.org/ |
| 11 | requests | 2.33.1 | Apache Software License | https://github.com/psf/requests |
| 12 | urllib3 | 2.8.0 | MIT | https://github.com/urllib3/urllib3/blob/main/CHANGES.rst |
| 13 | Werkzeug | 3.1.9 | BSD-3-Clause | https://github.com/pallets/werkzeug/ |
---
## blinker 1.9.0
## blinker 1.9.0
- ライセンス: MIT License
- 入手元: https://github.com/pallets-eco/blinker/
```text
Copyright 2010 Jason Kirtland
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```
…(以下、13件分が同じ形式で続く。省略)…
依存ライブラリのライセンスを一覧にする:pip-licenses(Python)
仮想環境に requests・Flask・psycopg2-binary を入れた状態で実行しました。
python3 -m venv venv
./venv/bin/pip install requests flask psycopg2-binary pip-licenses
./venv/bin/pip-licenses --order=license --format=markdown
| Name | Version | License |
|--------------------|-----------|-----------------------------------------------------|
| requests | 2.33.1 | Apache Software License |
| Jinja2 | 3.1.6 | BSD License |
| itsdangerous | 2.2.0 | BSD License |
| Flask | 3.1.3 | BSD-3-Clause |
| MarkupSafe | 3.0.4 | BSD-3-Clause |
| Werkzeug | 3.1.9 | BSD-3-Clause |
| click | 8.5.0 | BSD-3-Clause |
| idna | 3.20 | BSD-3-Clause |
| psycopg2-binary | 2.9.13 | GNU Library or Lesser General Public License (LGPL) |
| charset-normalizer | 3.5.2 | MIT |
| urllib3 | 2.8.0 | MIT |
| blinker | 1.9.0 | MIT License |
| certifi | 2026.7.22 | Mozilla Public License 2.0 (MPL 2.0) |
直接入れたのは3つですが、13件が一覧に出ます。requests が使う certifi は MPL-2.0、psycopg2-binary は LGPL です。
件数だけを見たいときは --summary を付けます。
Count License
1 Apache Software License
1 GNU Library or Lesser General Public License (LGPL)
1 MIT License
1 Mozilla Public License 2.0 (MPL 2.0)
2 BSD License
2 MIT
5 BSD-3-Clause
許可リストで確かめる(CIに組み込む)
--allow-only に許可するライセンスを並べると、リストに無いものが見つかったときに終了コード1で止まります。
pip-licenses --allow-only="MIT;MIT License;BSD License;BSD-3-Clause;Apache Software License"; echo "終了コード: $?"
license Mozilla Public License 2.0 (MPL 2.0) not in allow-only licenses was found for package certifi:2026.7.22
終了コード: 1
表記のゆれをまとめて扱うには --partial-match を付けて、部分一致にします。
$ pip-licenses --partial-match --allow-only="MIT;BSD;Apache;Mozilla Public License 2.0;LGPL" > /dev/null; echo "終了コード: $?"
終了コード: 0
特定のライセンスを見つけたら止める場合は --fail-on です。
pip-licenses --partial-match --fail-on="LGPL"
fail-on license GNU Library or Lesser General Public License (LGPL) was found for package psycopg2-binary:2.9.13
依存ライブラリのライセンスを一覧にする:license-checker(Node.js)
express・sharp・axios を dependencies に、license-checker を devDependencies に入れたフォルダで実行しました。
npm install express sharp axios
npm install -D license-checker
npx license-checker --production --summary
├─ MIT: 75
├─ ISC: 6
├─ Apache-2.0: 4
├─ LGPL-3.0-or-later: 2
└─ BSD-3-Clause: 1
--production を外すと、開発用の依存も含めた集計になります。
├─ MIT: 105
├─ ISC: 22
├─ Apache-2.0: 6
├─ LGPL-3.0-or-later: 2
├─ BSD-3-Clause: 2
├─ Apache-2.0 AND LGPL-3.0-or-later AND MIT: 1
├─ BSD-2-Clause: 1
├─ CC-BY-3.0: 1
├─ CC0-1.0: 1
├─ (MIT AND CC-BY-3.0): 1
└─ 0BSD: 1
CSVで出すと、パッケージごとのライセンスと入手元が並びます(抜粋)。ファイルに保存するときは --out licenses.csv を付けます。
npx license-checker --production --csv
"module name","license","repository"
"@img/sharp-libvips-linux-x64@1.3.4","LGPL-3.0-or-later","https://github.com/lovell/sharp-libvips"
"@img/sharp-libvips-linuxmusl-x64@1.3.4","LGPL-3.0-or-later","https://github.com/lovell/sharp-libvips"
"@img/sharp-linux-x64@0.35.5","Apache-2.0","https://github.com/lovell/sharp"
"@img/sharp-linuxmusl-x64@0.35.5","Apache-2.0","https://github.com/lovell/sharp"
"axios@1.20.0","MIT","https://github.com/axios/axios"
"es-object-atoms@1.1.2","MIT","https://github.com/ljharb/es-object-atoms"
"express@5.2.1","MIT","https://github.com/expressjs/express"
"ms@2.1.3","MIT","https://github.com/vercel/ms"
"qs@6.16.0","BSD-3-Clause","https://github.com/ljharb/qs"
"semver@7.8.5","ISC","https://github.com/npm/node-semver"
"sharp@0.35.5","Apache-2.0","https://github.com/lovell/sharp"
許可リストは --onlyAllow です。
npx license-checker --production --onlyAllow "MIT;ISC;BSD-2-Clause;BSD-3-Clause;Apache-2.0"; echo "終了コード: $?"
Package "@img/sharp-libvips-linux-x64@1.3.4" is licensed under "LGPL-3.0-or-later" which is not permitted by the --onlyAllow flag. Exiting.
終了コード: 1
sharp 本体は Apache-2.0 ですが、一緒に入るバイナリ(sharp-libvips)は LGPL-3.0-or-later でした。リストに LGPL-3.0-or-later を加えると、終了コード0で通ります。
出力に出てくるSPDXのライセンス式の読み方
license-checker の出力には (MIT AND CC-BY-3.0) のような式が出ます。SPDX仕様 3.0.1 の定義は次のとおりです。
| 書き方 | 意味 | 例 |
|---|---|---|
| A AND B | AとBの両方に同時に従う | Apache-2.0 AND LGPL-3.0-or-later AND MIT |
| A OR B | AかBのどちらかを選べる | MIT OR Apache-2.0 |
| A WITH 例外 | ライセンスAに追加の文(例外)が付いている | GPL-2.0-only WITH Classpath-exception-2.0 |
| A+ | そのバージョン、またはそれ以降 | CDDL-1.0+ |
優先順位は高い順に +、WITH、AND、OR で、かっこで順序を変えられます。
確かめて分かったこと
- 同じライセンスが違う名前で出ます。 pip-licenses の出力では MIT が「MIT」「MIT License」、BSDが「BSD License」「BSD-3-Clause」と表記が分かれました。許可リストは表記ごとに並べるか、--partial-match を使います。
- 寛容型のライブラリだけを入れても、間接的な依存に別の分類が入ります。 requests(Apache-2.0)の依存 certifi は MPL-2.0、sharp(Apache-2.0)と一緒に入るバイナリは LGPL-3.0-or-later でした。
- --production の有無で件数が大きく変わります。 license-checker の集計は、--production ありで88件、なしで143件でした。配布物に含めない開発用の依存は、分けて数えると確認が楽になります。
- NOTICE を同梱しているライブラリは実際にあります。 requests の配布物には LICENSE と NOTICE の両方が入っていて、pip-licenses の --with-notice-file で内容を取り出せました。
- 特許の明示的な許諾は、同じ系列でも版で違います。 choosealicense.com の一覧では、GPL-3.0・LGPL-3.0 にはあり、GPL-2.0・LGPL-2.1 では空欄でした。
- Apache-2.0 と GPL の互換は一方通行です。 Apache-2.0 → GPLv3 は可、逆は不可、GPLv2 とは互換と見なされていません。
つまずきやすい点と整え方
| つまずきやすい点 | こうするとよい |
|---|---|
| ライセンス名だけを一覧にして、ライセンス文を同梱していない | ライブラリごとのライセンス全文(著作権表示つき)を THIRD-PARTY-LICENSES.md に入れる |
| 直接入れたライブラリだけを確認している | ツールで間接的な依存まで一覧にする |
| 社内利用の感覚のまま、社外への配布やSaaS提供に移る | 提供の形が変わるときに、3問の判定表をもう一度たどる |
| バージョンを上げたらライセンスが変わっていた | CIで許可リストのチェックを毎回流す |
| 「GPLは商用で使えない」と一律に避ける | 配布しない使い方など、条件が発生するかどうかを判定表で確かめる |
よくある質問
Q. MITライセンスとApache License 2.0の違いは何ですか? A. どちらも寛容型で、違いは特許と表示の扱いです。Apache-2.0には特許の明示的な許諾があり、変更したファイルへの表示と、NOTICEファイルの内容の引き継ぎが求められます。
Q. GPLのライブラリを使うと、自分のコードも公開しなければなりませんか? A. 社外に配布しない使い方では、公開の条件は発生しません。リンクして配布する場合は、結合した全体をGPLで配布し、ソースを開示することになります。
Q. SaaSで提供するだけなら、表示やソース開示は不要ですか? A. AGPL-3.0以外は、配布しなければ配布時の条件は発生しません。AGPL-3.0は、ネットワーク越しに使う利用者がソースコードを受け取れるようにすることを求めます。
Q. コピーレフトとは何ですか? A. 改変したものを配布するときに、同じライセンスで公開することを求める考え方です。その範囲がファイル単位(MPL-2.0)、ライブラリ単位(LGPL)、結合した全体(GPL)と段階的に広がります。
Q. ライセンスの表示はどこに置けばよいですか? A. 配布物と一緒に受け取れる場所に置きます。配布パッケージ内の THIRD-PARTY-LICENSES.md や NOTICE、アプリの「ライセンス情報」画面、付属ドキュメントなどが使われます。Apache-2.0の第4条(d)は、NOTICEの置き場所としてこの3種類を挙げています。
まとめ
- 主要12種はすべて商用利用できる。 違いは配布時の条件。
- 義務は「配布するか・リンク形態・SaaS提供か」の3問で決まる。
- 寛容型は表示の同梱、Apache-2.0はさらに変更の明記とNOTICEの引き継ぎ。
- コピーレフトの範囲は、MPL-2.0がファイル、LGPLがライブラリ、GPLが全体、AGPLはネットワーク利用まで。
- 組み合わせには向きがある。 Apache-2.0 → GPLv3 は可、逆は不可。
- pip-licenses と license-checker で間接的な依存まで一覧にし、許可リストをCIで確かめる。
- 最終的な判断は、各ライセンスの原文と自社の規程・法務の確認に従う。
参考・出典
すべて 2026-10-06 に確認しました。
- choosealicense.com「Appendix」 https://choosealicense.com/appendix/
- SPDX License List(3.29.0) https://spdx.org/licenses/
- SPDX Specification 3.0.1「SPDX license expressions」 https://spdx.github.io/spdx-spec/v3.0.1/annexes/spdx-license-expressions/
- Apache License, Version 2.0 https://www.apache.org/licenses/LICENSE-2.0
- Apache Software Foundation「Apache License v2.0 and GPL Compatibility」 https://www.apache.org/licenses/GPL-compatibility.html
- Apache Software Foundation「ASF 3rd Party License Policy」 https://www.apache.org/legal/resolved.html
- GNU「Frequently Asked Questions about the GNU Licenses」 https://www.gnu.org/licenses/gpl-faq.en.html
- Mozilla「MPL 2.0 FAQ」 https://www.mozilla.org/en-US/MPL/2.0/FAQ/
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「OSSライセンスの種類一覧と違い|MIT・Apache・GPL比較表と表示文例」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。