LoginSignup
21
20

More than 5 years have passed since last update.

LicenceFinder で Rails プロジェクトで使用しているパッケージのライセンスを出力する

Posted at

はじめに

お客さんから、「このアプリが使ってるパッケージのライセンスどーなってるの?」って聞かれて、「ほとんど 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

出力結果:

スクリーンショット 2015-11-25 20.51.07.png

大方の目的(ライセンスの一覧を可視化して、ライセンス形態を確認する)は果たせるのですが、LicenceFinder ではライセンスの承認リストを設定できるので、もう少しがんばってみる。

$ license_finder whitelist add MIT  # 承認するライセンス形態を指定

また、中にはライセンス形態が不明確な unknown となるものもあるので、そこは個別に確認してパッケージ指定で承認リストへ追加します。(実際に rdoc のライセンスを確認しにいくと GPLv2 のようだが・・)

$ license_finder approval add rdoc  # 承認するパッケージを指定

承認リスト設定後の出力結果:

スクリーンショット 2015-11-25 20.55.13.png

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)

参考

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20