タイトルの元ネタは
これ。
本題。ここに書いてあるように、
https://twitter.com/ytnobody/status/335212752857616384
Minillaつかってみた記録&べた褒めするエントリです。(
Minilla作者によるエントリはこちら)
1週間くらいMinillaをつかってみましたが、これからPerlモジュールをつくるのなら、Minillaはおそらく最上のツールとして選択肢に上るべきだと思いますね。
CPANにはこれまでもいくつかのモジュール作成支援ツールが登録されてます。例をあげると、
・
ExtUtils::MakeMaker
・
Module::Build
・
Dist::Zilla
・
Module::Starter
・
Module::Setup (しばらくこれのデフォルトフレーバーを使ってた)
などなどあるわけですが・・・
(にわかCPAN Authorな僕はこのくらいしかしらないんですけど、Dist::Zilla,Module::Starter,Module::SetupがMinillaと同じいわゆる「Authoring tool」なんでしょうね)
Minillaのいいとこ
サブコマンドの直感性の高さ
よく使いそうなminilサブコマンドをあげてみると、
・new
・build
・test
・release
と、一目でみて使い方がわかりそうなものが多いです。ざっくり言うと、
minil new New::Module
とかで新しいモジュールの雛形つくってくれて、
minil build
でcpanfileやらNew::Moduleあたりのファイルを元にBuild.PLやREADME.mdあたりをつくってくれで、(大まかなイメージ。あってるかな・・・)
minil test
でテストを走らせてくれる。で、
minil release
で、そのままCPANにモジュールをアップしてくれます。開発からリリースまでの一連の流れをminilコマンド一つで面倒見てくれます。すごい。
git(特にgithub)との親和性の高さ
例えばminil testするときに、git add されていないテストファイルは実行されません。これは一見不便なように思えますが、新しくテストを書く場合、proveあたりで新しいテストファイル単品を実行すればよく、git addしてからminil testすれば、テストのcommit漏れとかなくなるはず・・・だと思ってます。
あとminil release したときに、gitで新しいtag切ってくれるの、すごく楽できていいと思います。origin がgithubだったりしても、git push --tags してくれます。
そして前述してある通り、minil buildしたときにREADME.mdを自動で吐き出してくれるので、わざわざREADME.なんとかを自分で書く必要なく、二度手間を解消できます。(今までそんなことやってたの?って言われるとわりと辛いんですけどね)
過去の財産のMinilla対応がものすごく簡単
これがもっとも驚いた特長なのですが、既存のModule::Buildベースなモジュールの開発ディレクトリで
minil migrate
してあげると、そのままMinilla対応のモジュールに早変わり。もうあとはgit pushするだけでオッケーなところまでやってくれます。
また、ExtUtils::MakeMakerにも対応しているらしく、おそらく同じコマンドを実行するだけでMinilla対応できちゃうというわけです。
とまあ、ものすごくべた褒めしてきたわけですけど、実際そのくらいによくできてます。
若干ブラックボックスっぽいところも無いわけではないんですけど、minil helpで大体の動作とか説明されてたり(まだドキュメント未整備のものも有る様ですが、特にminil help migrateの内容は、minil migrate使用前に読んでおくと、納得してminil migrateを使うことができます。)して、そこまでブラックボックスというものでもないという印象を受けました。
間違いなく、「これ使っとくといいよ!」とおすすめできるツールでしたので、ブログにて紹介させていただいた次第です。