license-tools-pluginの移行に関するお知らせ

はじめまして、クックパッドでAndroid開発を担当している吉田です。 本記事は弊社がOSSとして公開していたAndroid向けのライセンス管理プラグインに関するお知らせです。

2行まとめ

旧license-tools-pluginをアーカイブした背景

クックパッドでは社内で利用していたライブラリのいくつかをOSSとして公開します。これらは国内外を問わず多くの方にご利用頂いていることを観測しており、皆様の開発が僅かでも効率化されていればとても嬉しく思います。 さてOSSについてまわるのがメンテナンス問題です。クックパッドのエンジニアもここ数年で入れ替わりライブラリの著者が既に在籍していないケースもあります。license-tools-pluginもそのケースに当てはまっており、issueやPRが届く度に持ち回りで対応していたのですが直近ではほとんど対応出来ていない状態でした。そういった経緯から一度チーム内で話し合いの場を設けて議論したのですが、「ずるずる公開し続けているよりは一思いにアーカイブしよう」という結論になりました。

新たにLicenseToolsPluginを開発した背景

私個人としてlicense-tools-pluginは非常に気に入っているプラグインの一つでした。過去には紹介記事も書いています。

techlife.cookpad.com

愛着のあるOSSだったため継続してメンテナンスしたかったのですが、一番の心理的な障壁がGroovyで実装されている点でした。そんな折にふとKotlinでプラグインをフルスクラッチ出来るのではないかと思い、休日にコアロジックを移植してみた所思いの外上手く行きました。後日そのような話をテックリードとの1on1で話したところ「業務時間使ってプラグインの開発をやっていいよ」とあっさり承認を頂いたので100% Kotlinによるフルスクラッチプロジェクトを始めることにしました。これは蛇足というか弊社のアピールですがクックパッドはOSS活動に理解があるのでライブラリ開発の7~8割は業務時間を利用して書いています。
そのようなわけでフルスクラッチ化のプロジェクトも無事完了し、クックパッドのAndroidアプリは既に新しいライセンスプラグインに置きかえました。互換性の問題や大きな不具合は解決したと思いますので、みなさまにも安心してご利用頂けると思います。また機能はシンプルですがgoogleから公式のプラグインが提供されているのでこちらをご検討ください。

developers.google.com

新プラグインへの移行

コマンドやオプションは互換性があるため、cookpad/license-tools-pluginをご利用のプロジェクトではプラグインだけ新しいものに切り替えれば動作します。これは一例ですがアプリケーションモジュールの差分は以下のようになるかと思います。

buildscript {
    repositories {
        google()
        jcenter()
        mavenLocal()
    }
    dependencies {
-        classpath 'com.cookpad.android.licensetools:license-tools-plugin:1.7.0'
    }
}
- apply plugin: 'com.cookpad.android.licensetools'

+plugins {
+  id "com.cookpad.android.plugin.license-tools" version "${latest_version}"
+}

apply plugin: 'com.android.application'

$latest_versionはレポジトリを参照して最新のバージョンをご利用ください。初めて利用するという方やその他詳細について知りたいという方はレポジトリのREADMEをご覧ください。

github.com

DroidKaigi2020のお知らせ

Droidkaigi 2020では「KotlinではじめるGradle Plugin」というセッションを話させて頂くことになりました。プラグイン開発はAARライブラリの開発より情報量が圧倒的に少なかったり、馴染みの薄いGroovy実装による解説記事が多かったりと初心者にはやや敷居が高いですが、難しいことは少なく業務効率の改善にも繋がりやすい技術だと思いますのでご興味があればカンファレンス会場まで足を運んで頂けると嬉しく思います。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/