ライセンスコンプライアンス
このスキルを使用しない場合
- セキュリティ脆弱性 - 依存関係のセキュリティについては
supply-chain スキルを使用
- コード品質の問題 - リント/複雑性については品質スキルを使用
- 依存関係内のシークレット -
secrets-management スキルを使用
- パッケージの整合性 - SBOM と検証については
supply-chain を使用
詳細な知識: 技術 spdx で mcp__documentation__fetch_docs を使用して包括的なドキュメントを参照してください。
公式リファレンス
ライセンスカテゴリ
許容度別
| カテゴリ | ライセンス | 商用利用 |
|---|
| パブリックドメイン | Unlicense, CC0-1.0 | 無制限 |
| 許容的 | MIT, Apache-2.0, BSD-3-Clause, ISC | 許可 |
| 弱いコピーレフト | LGPL-3.0, MPL-2.0, EPL-2.0 | 許可(条件付き) |
| 強いコピーレフト | GPL-3.0, AGPL-3.0 | オープンソース化が必須 |
| ネットワークコピーレフト | AGPL-3.0, SSPL-1.0 | ネットワーク使用時に発動 |
一般的な SPDX 識別子
| ライセンス | SPDX ID | OSI | FSF |
|---|
| MIT ライセンス | MIT | ✓ | ✓ |
| Apache 2.0 | Apache-2.0 | ✓ | ✓ |
| BSD 3-Clause | BSD-3-Clause | ✓ | ✓ |
| ISC ライセンス | ISC | ✓ | ✓ |
| GPL 3.0 | GPL-3.0-only | ✓ | ✓ |
| GPL 3.0+ | GPL-3.0-or-later | ✓ | ✓ |
| LGPL 3.0 | LGPL-3.0-only | ✓ | ✓ |
| MPL 2.0 | MPL-2.0 | ✓ | ✓ |
| AGPL 3.0 | AGPL-3.0-only | ✓ | ✓ |
| Unlicense | Unlicense | ✓ | ✓ |
互換性マトリックス
入力 → 出力
| プロジェクトのライセンス | 含められるライセンス |
|---|
| MIT | MIT, BSD, ISC, Unlicense, CC0 |
| Apache-2.0 | MIT, BSD, ISC, Apache-2.0, Unlicense |
| LGPL-3.0 | MIT, BSD, ISC, Apache-2.0, LGPL, GPL(ライブラリとして) |
| GPL-3.0 | ほとんどのライセンス(出力は GPL である必要があります) |
| プロプライエタリ | MIT, BSD, ISC, Apache-2.0(表示要件を確認) |
非互換性
| ライセンス A | 非互換 |
|---|
| GPL-2.0-only | Apache-2.0(特許条項の競合) |
| GPL-3.0 | GPL-2.0-only |
| AGPL-3.0 | プロプライエタリ SaaS(ネットワーク条項) |
| SSPL-1.0 | OSI 未認定、制限付き使用 |
NPM ライセンス監査
license-checker
npm install -g license-checker-rseidelsohn
license-checker
license-checker --json > licenses.json
license-checker --summary
license-checker --production
license-checker --production --json
許可リスト設定
license-checker --onlyAllow "MIT;Apache-2.0;BSD-3-Clause;ISC;0BSD"
license-checker --failOn "GPL-3.0;AGPL-3.0;GPL-2.0"
license-checker --excludePackages "internal-pkg@1.0.0"
@onebeyond/license-checker
npm install -g @onebeyond/license-checker
npx @onebeyond/license-checker scan --allowOnly MIT Apache-2.0 BSD-3-Clause
npx @onebeyond/license-checker check "MIT OR Apache-2.0"
license-compliance
npm install -g license-compliance
license-compliance --production --allow "MIT;ISC;Apache-2.0"
license-compliance --report licenses.csv
SBOM 生成
CycloneDX
npm install -g @cyclonedx/cyclonedx-npm
cyclonedx-npm --output-file sbom.json
cyclonedx-npm --output-format XML --output-file sbom.xml
cyclonedx-npm --include-dev --output-file sbom.json
SPDX
syft . -o spdx-json > sbom-spdx.json
syft validate sbom-spdx.json
package.json 内の SBOM
{
"name": "my-package",
"version": "1.0.0",
"license": "MIT",
"licenses": [
{
"type": "MIT",
"url": "https://opensource.org/licenses/MIT"
}
]
}
CI 統合
GitHub Actions
name: License Compliance
on: [push, pull_request]
jobs:
license-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Check licenses
run: |
npx license-checker-rseidelsohn \
--production \
--onlyAllow "MIT;Apache-2.0;BSD-3-Clause;BSD-2-Clause;ISC;0BSD;Unlicense;CC0-1.0" \
--excludePrivatePackages
- name: Generate SBOM
run: |
npx @cyclonedx/cyclonedx-npm --output-file sbom.json
- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom
path: sbom.json
プリコミットフック
{
"scripts": {
"license:check": "license-checker --production --onlyAllow 'MIT;Apache-2.0;BSD-3-Clause;ISC'",
"preinstall": "npm run license:check || true"
}
}
ライセンスファイルテンプレート
MIT ライセンス
MIT License
Copyright (c) [year] [fullname]
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.
Apache 2.0 NOTICE
MyProject
Copyright [year] [owner]
This product includes software developed at
[Company Name] (https://www.example.com/).
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
表示要件
ライセンスタイプ別
| ライセンス | 要件 |
|---|
| MIT | 著作権表示 + ライセンスを含める |
| Apache-2.0 | 著作権表示 + ライセンス + NOTICE(存在する場合) |
| BSD-3-Clause | 著作権表示 + ライセンスを含める |
| LGPL-3.0 | 修正部分のソースを提供 |
| GPL-3.0 | 完全なソースを提供 |
表示の生成
license-checker --production --customFormat '{"name": "", "version": "", "license": "", "repository": ""}' \
| jq -r '.[] | "- \(.name)@\(.version) - \(.license)\n \(.repository)\n"' \
> NOTICES.md
NOTICES.md テンプレート
# サードパーティ通知
このプロジェクトには以下のサードパーティソフトウェアが含まれています。
## MIT ライセンス
### lodash (4.17.21)
- リポジトリ: https://github.com/lodash/lodash
- 著作権 (c) JS Foundation and other contributors
### axios (1.6.0)
- リポジトリ: https://github.com/axios/axios
- 著作権 (c) 2014-present Matt Zabriskie
## Apache-2.0 ライセンス
### typescript (5.3.0)
- リポジトリ: https://github.com/microsoft/TypeScript
- 著作権 (c) Microsoft Corporation
リスク評価
高リスク(プロプライエタリでは避ける)
| ライセンス | リスク | 軽減策 |
|---|
| GPL-3.0 | コピーレフト | LGPL バージョンまたは代替案を使用 |
| AGPL-3.0 | ネットワークコピーレフト | SaaS 製品では避ける |
| SSPL-1.0 | サービス制限 | 代替案を使用(MongoDB) |
| CPAL-1.0 | UI での表示 | UI 要件を確認 |
中リスク(慎重に確認)
| ライセンス | リスク | 軽減策 |
|---|
| LGPL-3.0 | 動的リンク | 動的リンクを確認 |
| MPL-2.0 | ファイルレベルコピーレフト | 修正部分を分離 |
| EPL-2.0 | 特許付与 | 特許条項を確認 |
低リスク(一般的に安全)
| ライセンス | 注記 |
|---|
| MIT | ライセンス/著作権を含める |
| Apache-2.0 | ライセンス + NOTICE を含める |
| BSD-3-Clause | ライセンス/著作権を含める |
| ISC | ライセンス/著作権を含める |
チェックリスト
初期セットアップ
継続的なコンプライアンス
リリース
アンチパターン
| アンチパターン | 問題な理由 | 正しいアプローチ |
|---|
| 依存関係追加前にライセンスをチェックしない | 法的リスク、コピーレフト違反 | CI で license-checker を使用 |
| プロプライエタリソフトウェアで GPL を使用 | アプリ全体をオープンソース化する必要がある | MIT/Apache または LGPL をライブラリとして使用 |
| 表示用の NOTICES ファイルなし | ライセンス条項に違反 | 依存関係から NOTICES を生成 |
| 更新時のライセンス変更を無視 | 新バージョンが異なるライセンスを使用する可能性 | Dependabot PR でライセンスを確認 |
| ライセンスなしのパッケージを使用 | 不明な法的地位 | 明示的なライセンス付きのパッケージのみを使用 |
| GPL-2.0 と Apache-2.0 を混在させる | 非互換なライセンス | 互換性のあるスタックを選択 |
クイックトラブルシューティング
| 問題 | 原因の可能性 | 解決策 |
|---|
| license-checker がインストール時に失敗 | package.json のライセンスフィールドが欠落 | "license": "MIT" を package.json に追加 |
| プロプライエタリで GPL 依存関係が見つかった | 推移的な依存関係 | 代替案を見つけるか、別のサービスとして使用 |
| 同じパッケージに複数のライセンス | デュアルライセンス | 互換性のあるライセンスを選択(通常は MIT/Apache) |
| SPDX 検証に失敗 | 無効な SPDX 識別子 | spdx.org/licenses から正確な ID を使用 |
| ライセンス許可リストが厳しすぎる | 一般的なライセンスをブロック | ISC、0BSD を許可リストに追加 |
| 配布にライセンスファイルがない | LICENSE ファイルが欠落 | ビルド時に LICENSE を dist/ にコピー |
関連スキル