OSSとライセンス

OSSとライセンスとは

OSS(Open Source Software)は、ソースコードが公開され、誰でも利用・改変・再配布できるソフトウェアです。[[Linux]] や React、Node.js など、現代の開発は OSS なしには成り立ちません。

ここで誤解しやすいのが「公開されている=自由に何でもしてよい」ではないという点です。OSS にも著作権があり、作者がどういう条件なら使ってよいかを定めたものがライセンスです。ライセンスに書かれた条件を守らずに使えば、著作権侵害になります。

「無料で使える」ことと「無条件で使える」ことは、まったく別物だと覚えてください。

主要ライセンスの比較

大きく寛容型(permissive)とコピーレフト型の2系統に分かれます。

ライセンス系統著作権表示改変部分の公開義務
MIT寛容型必要なし
Apache 2.0寛容型必要なし(特許条項あり)
BSD寛容型必要なし
LGPL弱いコピーレフト必要ライブラリ本体の改変部分のみ
GPLコピーレフト必要あり(組み込んだ側も公開)
AGPL強いコピーレフト必要あり(ネットワーク経由の提供も対象)

寛容型(MIT・Apache 2.0 など)

条件はほぼ「著作権表示とライセンス文を残すこと」だけです。自社の製品に組み込んで、ソースを公開せずに販売することもできます。npm の多くのパッケージが MIT を採用しています。

Apache 2.0 は MIT に加えて特許の使用許諾が明記されており、企業が使う際の安心感が高いライセンスです。

コピーレフト型(GPL など)

「このソフトを組み込んだソフトウェアも、同じライセンスでソースを公開すること」を求めます。自由を後世に引き継がせるという思想に基づいた条件です。

自社の非公開のプロダクトに GPL のライブラリを組み込むと、その製品のソースコード公開義務が生じる可能性があります。ここが最も事故になりやすいポイントです。

AGPL はさらに厳しく、サーバー上で動かしてネットワーク越しにサービス提供する場合も公開対象になります。SaaS を作る際は特に注意が要ります。

実務で気をつけること

  • 依存関係の奥まで確認する — 直接入れたパッケージが MIT でも、そのパッケージが依存するライブラリが GPL かもしれません。[[npmとパッケージ管理]] のツリーは深くなりがちです
  • ライセンス一覧を機械的に集めるnpm-license-checker のようなツールで、使用中のライセンスを定期的に棚卸しします
  • 著作権表示を製品に同梱する — 寛容型でも表示義務はあります。ライセンス条文をまとめたファイルを配布物に含めましょう
  • 自分が公開する側になったら LICENSE ファイルを置く — ライセンス未記載のリポジトリは「利用条件不明」であり、法的にはむしろ使えない扱いになります([[ドキュメンテーション]] の一部として整備しましょう)

初学者向けポイント

  • GitHub でリポジトリを作るときにライセンスを選べます。迷ったら、広く使われていて条件の緩い MIT が無難な出発点です
  • 「社内ツールだから公開しない=GPLでも問題ない」は、社内配布の形態によっては成り立たない場合があります。判断に迷ったら法務に相談しましょう
  • OSS を使うということは、その脆弱性も引き受けるということです。[[脆弱性管理とCVE]] の観点でも依存パッケージの把握は欠かせません
  • コードをコピーして持ち込むときも、コピー元のライセンスは付いてきます。[[Git]] の履歴に残る以上、出所は説明できるようにしておきましょう

関連技術とのつながり

  • [[npmとパッケージ管理]] — 依存ツリーの奥にあるライセンスまで把握する必要がある
  • [[Git]] — LICENSE ファイルの管理と、コードの出所を辿る履歴
  • [[ドキュメンテーション]] — 公開する側としてライセンスを明示する責任
  • [[脆弱性管理とCVE]] — OSSを使うことは脆弱性リスクも引き受けること
  • [[Linux]] — GPL で公開された代表的なOSS
Q: OSSのライセンスについて正しい説明はどれ?
- [ ] 公開されているので無条件に自由に使ってよい
- [x] 作者が定めた条件を守って使う必要があり、違反すれば著作権侵害になる
- [ ] 商用利用はすべてのOSSで禁止されている
解説: 「無料で使える」と「無条件で使える」は別です。ライセンスは利用条件を定めた契約にあたります。

Q: 自社の非公開プロダクトに組み込む際に、ソース公開義務が生じる可能性が高いライセンスはどれ?
- [ ] MIT
- [ ] Apache 2.0
- [x] GPL
解説: GPLはコピーレフト型で、組み込んだ側も同じライセンスでの公開を求めます。MITやApache 2.0は寛容型でその義務がありません。

Q: LICENSE ファイルが置かれていないリポジトリの扱いはどれ?
- [ ] 制限がないので自由に使える
- [x] 利用条件が不明なため、むしろ使えない扱いになる
- [ ] 自動的にMITライセンスが適用される
解説: ライセンスの明示がなければ著作権法の原則どおり権利は作者に留保されます。公開する側は必ず明示しましょう。