はじめに
お客さんから、「このアプリが使ってるパッケージのライセンスどーなってるの?」って聞かれて、「ほとんど MIT ですよー」で終わらせてくれなかった(当然ですが・・)ので、wiki へまとめて markdown ファイルで展開するようにしてました。
そして、Gemfile 変更時に wiki をメンテナンスしてたのですが、当然のごとく更新漏れなどがおきます。
手動のメンテナンスに疲れたので、いいものないか探してたら LicenseFinder: https://github.com/pivotal/LicenseFinder なる期待どおりのものがあったので、紹介します。
インストール
Gemfile へ LicenseFinder を追加して、bundle install
gem 'license_finder', :group => :development
使い方
ライセンスの一覧を確認するなら、プロジェクト下で licence_finder
コマンドを実行するだけです。
% license_finder
...................................Dependencies that need approval:
actionmailer, 4.2.4, MIT
actionpack, 4.2.4, MIT
actionview, 4.2.4, MIT
activejob, 4.2.4, MIT
activemodel, 4.2.4, MIT
activerecord, 4.2.4, MIT
activesupport, 4.2.4, MIT
annotate, 2.6.10, ruby
...
このままでは、提出資料としての体裁が味気ないので、report --format html
オプションを指定します。
% license_finder report --format html > licence.html
出力結果:
大方の目的(ライセンスの一覧を可視化して、ライセンス形態を確認する)は果たせるのですが、LicenceFinder ではライセンスの承認リストを設定できるので、もう少しがんばってみる。
$ license_finder whitelist add MIT # 承認するライセンス形態を指定
また、中にはライセンス形態が不明確な unknown
となるものもあるので、そこは個別に確認してパッケージ指定で承認リストへ追加します。(実際に rdoc のライセンスを確認しにいくと GPLv2 のようだが・・)
$ license_finder approval add rdoc # 承認するパッケージを指定
承認リスト設定後の出力結果:
MIT など承認リストへ追加したライセンスが unapproved からはずれました。
承認リストはデフォルトで doc/dependency_decisions.yml
となっていますが、--decisions_file
で指定できるので ~/.licence_finder/dependency_decisions.yml
などを指定すると他のプロジェクトでも使い回しできそうです。
最後に
定期的に提出するドキュメントは自動生成できると幸せですね。
Rails 以外でも以下のパッケージ管理をサポートしているようなので、ライセンスが気になる方は試してみてはいかがでしょうか。
- Gemfile (for bundler)
- requirements.txt (for pip)
- package.json (for npm)
- pom.xml (for maven)
- build.gradle (for gradle)
- bower.json (for bower)
- Podfile (for CocoaPods)
- rebar.config (for rebar)
- packages/ directory (for Nuget)