LicensePlist というiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました

ライブラリ依存情報 → LicensePlist → iOS設定アプリ上に載せられる形式のplist生成

今年(2017年)の主にゴールデンウィークを利用して、LicensePlistというiOSアプリ利用ライブラリのライセンス一覧を生成するツールを作りました。Swift Package Manager(SwiftPM)によるCLIツールとなっています。記事を書いている時点で852スターで、1,000スターに届くのを心待ちにしています🍣

英語での説明はREADMEでも書いてますが、ここでは日本語でざっと紹介します。

LicensePlistとは

何ができるか

license-plistというCLIツールを実行すると、そのプロジェクトで依存しているライブラリを収集して、iOS設定アプリ上に載せられる形式のplist群を生成します。

利用例

依存ライブラリ形式は以下に対応しています。

特に、3つ目の「YAML設定ファイルによる指定」があるので、例えばソースを直接入れたりGit Submodule使っている場合も、そちらに記載すればOKです。SwiftPMはiOSアプリではまだ通常使われていないので未対応ですが、普及したらCocoaPods・Carthageと同様に標準対応する予定です。

生成される結果例

このように、設定アプリ上でキレイに一覧されます。

設定アプリ・ライセンス一覧・ライセンス個別表示

インストールの仕方

Installation にいくつか書いてありますが、CocoaPodsでのインストールをお勧めします。 Podfileに次の行を追記することでインストールできます。

pod 'LicensePlist'

CocoaPodsを使っていない場合、Homebrew経由で、以下のコマンドによるインストールをお勧めします。

$ brew install mono0926/license-plist/license-plist

オススメの使い方

普通に手動実行しても良いですが、Integrate into build に記載のやり方がオススメです。Xcodeの Run Script PhaseBuild Phases に以下を指定することで、依存ライブラリが変わると検知してライセンスファイルを自動更新してくれるようになります。

if [ $CONFIGURATION = "Debug" ]; then
cd $SRCROOT
/usr/local/bin/license-plist --output-path $PRODUCT_NAME/Settings.bundle
fi

チーム開発だとCIに組み込むなどの方がスムーズかもしれませんが。以下なども対応するとより導入しやすくなるかなと思いつつ、手をつけられておらず、すみません🙇

類似ライブラリは?

類似ライブラリの調査は充分しましたが、どれも特定用途で困る場面があるなと感じました。また、以前類似ライブラリを作った反省点も盛り込んで、LicensePlistはライセンスファイル自動生成ライブラリの決定版となることを目指し、実際に思い描いてものができたと自負しています😎

利用実績

まず、僕が関わっているアプリにはすべて導入しています。そのためもし今後壊れても自分のためにもすぐ直すつもりです( ´・‿・`)

また、すでに導入していただいた例も結構あるようで、ありがとうございます😋

IssueStar 見る限りは日本国外にもけっこうリーチしてたり使ってもらってそうですが、Twitter検索では特に導入事例引っかからずでした🤔


関連記事など

potatotips #40での発表

SwiftPMによるCLIツール作成

OSSライブラリの記事


ちなみにLicensePlistのロゴシールも作って、配布中です( ´・‿・`)

スター数の推移

2018年3月から、Google Cloud Functions + BigQuery + Data StudioでGitHubスター数を記録しています。
(途中0になっているのはミスで欠損しています。)