はじめに
前回の「このライセンスは嘘じゃないよね?」でライセンスを調べたので、ちゃんとしたライセンスもまとめます。
そもそもOSSライセンスとは?
OSSライセンスは、ソースコードの利用・変更・再配布に関するルールを定めたものです。
プロジェクトにOSSを使うときは、ライセンスの内容を守る義務があります。
Java系のライセンス
私は開発言語の中で Java
の経験が長いですが、ライセンスについては詳しくないです。
「Classpath例外」の話は何となく聞いた事がある程度です。
Java(OpenJDK)
- 主なライセンス:GPL v2 + Classpath Exception
- 商用利用:OK
- 特徴:クラスパス例外により商用アプリでも問題なし
Spring Framework (Java)
- 主なライセンス:Apache License 2.0
- 備考:商用でも安心
Classpath Exception
GPLライセンスの“強いコピーレフト”の影響を回避するための特例条項。
- 背景:GPLライセンスは「改変したら全部公開」しないといけない
- GPLソフトウェアを使ってプログラムを開発し、それを配布する場合、あなたのプログラムのソースコードも公開しなければならない
- 問題:JDK(Java開発キット)がGPLだと…?
- OpenJDK を使ってビルドしたアプリを配布したら、そのアプリのソースコードも公開義務がある(!)
- 解決:Classpath Exception の登場
- 「OpenJDK のライブラリ(java.*, javax.*など)を クラスパスに含めるだけ なら、GPLのソース公開義務を適用しません」
有名なソフトウェアライセンス
ライセンス | 商用利用 | ソース公開義務 | 改変再配布の制限 | 特許保護 | 備考 |
---|---|---|---|---|---|
MIT | OK | なし(著作権表示のみ) | なし | なし | 超シンプル |
Apache 2.0 | OK | なし(著作権・変更明示) | なし | あり | 特許保護が強い |
GPL | OK | あり(すべて) | 強い | なし | OSSの理想主義 |
LGPL | OK | 一部(ライブラリ部分) | 中程度 | なし | 動的リンクならOK |
BSD | OK | なし(著作権表示) | なし | なし | MITに似ている |
MPL | OK | 改変ファイルのみ | 緩い | なし | 中間的な立場 |
EPL | OK | 改変ファイルのみ | 緩い | あり | Eclipse系で使用多 |
MITライセンス(MIT License)
特徴
- 超シンプル&ゆるいライセンス
- 商用利用、改変、再配布すべてOK
- ライセンス表記(著作権表示)さえ残せば自由に使える
条件
- オリジナルの著作権表記とライセンス文を残すこと
保証はない
- 「このソフトを使って問題が起きても責任持ちませんよ」という免責も明記されている
向いている用途
- OSSライブラリ(特にJavaScript系などに多い)
- 商用アプリやクローズドな社内システムにも安心して使える
Apache License 2.0
特徴
- MITより少し厳しめ、でも商用利用OK
- 特許(patent)に関する保護が明記されている
- 改変部分を明示する必要がある(modified files must be marked)
条件
- 著作権表示とライセンス文の保持
- 改変した箇所がある場合、それを明示
- 特許権の使用を許諾する(ライセンスに含まれている)
向いている用途
- 法務的に慎重な企業でも安心して使える
- 特許トラブルを避けたい中~大規模プロジェクト
GPL(GNU General Public License)
特徴
- コピーレフト(Copyleft):派生物にもGPLを適用する必要がある
- 自由に使えるが、改変して配布する場合はソースコードの公開義務がある
- 商用利用は可能だが、利用者にソースを開示する義務があるため、商用プロダクトに組み込みづらいことも
向いている場面
- OSSの精神を守りたいとき
- 他人のコードが自分の改変によってクローズドになってほしくないとき
注意点
- 自分のアプリに組み込んで配布する場合、自分のコードもGPL化される必要がある
- 組み込みがライブラリ形式(静的リンク)だとGPL義務が及ぶことがある
LGPL(Lesser GPL)
特徴
- GPLの「やや緩め」バージョン
- ライブラリがLGPLでも、そのライブラリを動的リンク(DLLや.so)で使用する場合は、アプリ全体をGPLにする必要はない
向いている場面
- OSSライブラリを使ってクローズドなアプリを作りたい場合
- GPLほど強制力はいらないけど、改変されたライブラリ自体は公開してほしい場合
注意点
- 静的リンクで使用した場合はGPLと同じく公開義務が発生する可能性あり
BSDライセンス(2条項 or 3条項)
特徴
- MITに非常に似ており、シンプルで商用利用にも寛容
- 「著作権表示」「免責の明記」などの基本ルールのみ
- 3条項BSDは「開発者名を広告などに使わない」旨が含まれる
向いている場面
- MITとほぼ同様。特許を気にしない場合に気軽に使える
まとめ
- 完全自由でシンプルにしたい → MIT / BSD
- 企業利用も安心、安全に → Apache 2.0 / EPL
- OSSとしての自由・共有を守りたい → GPL / LGPL
- 部分的にOSS化したい → MPL / EPL
ライセンス利用
プログラミング言語のライセンス一覧
言語 | 主なライセンス | 商用利用 | 特徴 |
---|---|---|---|
Python | PSF License(MITベース) | ✅OK | 非常に自由度が高い |
Java(OpenJDK) | GPL v2 + Classpath Exception | ✅OK | クラスパス例外により商用アプリでも問題なし |
C / C++ | 多数(GCCはGPL + 例外) | ✅OK | 実装ごとに異なる(例:ClangはApache 2.0) |
Go | BSD-3-Clause | ✅OK | Googleが開発、非常に寛容なライセンス |
Rust | MIT or Apache 2.0(二重ライセンス) | ✅OK | 商用でも安心して利用可能 |
Ruby | BSD or GPL(二重ライセンス) | ✅OK | 柔軟に選択できる |
PHP | PHP License(MIT類似) | ✅OK | Apacheに似た独自ライセンス |
JavaScript | 実装による(例:V8 → BSD) | ✅OK | 多くがMITまたはBSD系 |
Swift | Apache 2.0 | ✅OK | Apple公式、特許保護あり |
フレームワーク・ライブラリのライセンス一覧
フレームワーク/ライブラリ | 主なライセンス | 備考 |
---|---|---|
Spring Framework (Java) | Apache License 2.0 | 商用でも安心 |
React (Meta/Facebook) | MIT License | 過去は特許条項あり→現在はMITに変更済 |
Vue.js | MIT License | 業務利用にも最適 |
Angular (Google) | MIT License | エンタープライズ利用にも安心 |
Django (Python) | BSD License | 柔軟で企業でも使いやすい |
Flask (Python) | BSD License | 軽量Webフレームワーク |
Express (Node.js) | MIT License | Node.jsで最も有名なFW |
TensorFlow (Google) | Apache License 2.0 | AI/MLライブラリ、商用利用可 |
PyTorch (Meta) | BSD License | 学術・商用ともに広く使用 |
Bootstrap (CSS/JS) | MIT License | デザイン系で広く使われる |
jQuery | MIT License | 歴史あるJSライブラリ |
モバイル系フレームワーク
フレームワーク | 主なライセンス | 備考 |
---|---|---|
Flutter (Google) | BSD License | 商用利用・改変OK |
React Native (Meta) | MIT License | スマホアプリ開発にも安心 |
SwiftUI | Apple製(ライセンス未公開、使用にAppleの規約が関わる) | App Store経由で商用利用前提 |
クラウド&インフラ関連OSS
ソフトウェア | ライセンス | 備考 |
---|---|---|
Docker | Apache License 2.0 | 商用利用OK |
Kubernetes | Apache License 2.0 | Google発、クラウドネイティブ |
Terraform | MPL v2(以前はMPL、今はBSL※) | 商用利用可(ただし改変には注意) |
Ansible | GPL v3 | ソース公開要注意(配布しない限りOK) |
まとめ:商用で安心して使いたいなら?
ライセンス | 商用利用 | OSSとしての強さ | 備考 |
---|---|---|---|
MIT / BSD / Apache | ✅ 非常に使いやすい | 🟢 | 柔軟で企業向けに最適 |
GPL / AGPL | ⚠️ 要注意 | 🔴 | 配布するならソース公開義務 |
MPL / EPL | ⚠️ 一部ファイル公開あり | 🟡 | 中間タイプ(柔軟性あり) |
おわりに
OSSライセンスって、難しそうで後回しにされがち。
でも、MITみたいな「自由に使っていいよ!」から、GPLの「ちゃんと公開してね!」、Apacheの「特許もOK!」まで、それぞれのルールには理由があります。
Classpath Exception のように、「このままだと使いづらいから、ちょっと緩めよう」なんて工夫もされてるんです。
結局のところ、OSSライセンスって、エンジニア同士の信頼で成り立ってるルールなんだなと思いました。
参考(感謝)
- AIに聞きました