OSSライセンス確認とコンプライアンスガイド。 許可/禁止ライセンス一覧、確認ツール使用法をガイド。
依存パッケージのライセンスを確認し、ライセンス違反リスクを早期発見する。
複数の言語や技術スタックがあるプロジェクトの場合、並列でサブエージェントに監査を委譲することで効率的にチェックできます。
並列監査の実施方法:
Taskツールで複数のサブエージェントを並列起動し、各言語の依存関係を同時に監査:
各言語の監査結果を統合し、全体のライセンス状況をレポートします。
メリット:
# license-checker インストール
npm install -g license-checker
# 依存関係のライセンス一覧
license-checker --summary
# 問題のあるライセンスを検出
license-checker --failOn "GPL;AGPL;SSPL"
# JSON出力(詳細分析用)
license-checker --json > licenses.json
# 特定ライセンスのみ表示
license-checker --onlyAllow "MIT;Apache-2.0;BSD"
# pip-licenses インストール
pip install pip-licenses
# 一覧表示
pip-licenses
# Markdown形式で出力
pip-licenses --format=markdown
# 許可リスト形式(違反を検出)
pip-licenses --allow-only="MIT;Apache 2.0;BSD"
# 禁止リスト形式
pip-licenses --fail-on="GPL;AGPL"
// build.gradleに追加
plugins {
id 'com.github.hierynomus.license' version '0.16.1'
}
license {
header rootProject.file('LICENSE_HEADER')
strictCheck true
}
または Maven:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>2.0.0</version>
</plugin>
# composer-licenses インストール
composer require dominikzogg/composer-licenses --dev
# ライセンス一覧
./vendor/bin/composer-licenses
# FOSSA CLI(多言語対応)
fossa analyze
fossa test
# Snyk(セキュリティ + ライセンス)
snyk test --all-projects
snyk monitor
# Black Duck(エンタープライズ)
# GitHub App: License Compliance Action
# Node.js の例
license-checker --json | jq '.[] | select(.licenses | contains("GPL"))'
# Python の例
pip-licenses --fail-on="GPL"
直接依存か間接依存か確認
# Node.js
npm ls <package-name>
# Python
pipdeptree -p <package-name>
使用箇所を特定
grep -r "import <package-name>" .
同等機能のパッケージを検索
ライセンス互換性を確認
A) 代替パッケージに置換
npm uninstall <問題パッケージ>
npm install <代替パッケージ>
B) 除外(使用していない場合)
npm uninstall <問題パッケージ>
C) 法務/コンプライアンスチームに相談
| 使用するライセンス | 依存先で許可されるライセンス |
|---|---|
| MIT/BSD/Apache | ほぼすべて(GPL除く) |
| GPL v2 | GPL v2のみ |
| GPL v3 | GPL v3, AGPL v3 |
| LGPL | すべて(動的リンク時) |
| 商用ライセンス | MIT/BSD/Apache推奨 |
name: License Check
on: [push, pull_request]
jobs:
license-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install license-checker
run: npm install -g license-checker
- name: Check licenses
run: license-checker --failOn "GPL;AGPL;SSPL"
jobs:
main:
steps:
- license-check: npm run license-check
