# 成果: Perl QA Hackathon 2013 Satellite at Tokyo {{tag: perl}} Perl toolchain 系の話題にキャッチアップしたかったのと、Test::* 系のモジュールを Hack するのもありだって聞いたので、わりと急でしたが Perl QA Hackathon 2013 Satellite at Tokyo に参加させて頂きました。 会場を提供してくださった FreakOut さん @coji さんありがとうございました。 ## 成果 ### Test::AllModules アプリケーションのモジュールをまとめて全部 use してコンパイルテストするモジュールであるところの {{cpan: Test::AllModules}} をちょいとアップデートしまして、use する処理を fork して行えるオプションをつけたり、use_ok なんかはコードを書かないでオプションだけで実行できるようにしました。 use Test::AllModules; BEGIN { all_ok( search_path => 'MyApp', use => 1, fork => 1, ); } こんな感じで MyApp 以下を軒並み use テスト(それぞれ個別プロセス)できます。とにかく、よくやることはシンプルに書けるようにしました。全モジュールにもりもり独自の処理をテストするためのインターフェースもありますが、説明が長くなりそうなのでそっちは割愛。ドキュメントをどうぞ。 ### Test::NoLoad とあるモジュールがロードされてたらこけるテストを書くための {{cpan: Test::NoLoad}} も少し手を入れました。ロードされてたくないモジュールをリストするとき、`qr/Foo::Bar::.*/` みたいな感じで正規表現書けるようになりました。マッチしたらこけます。 ちなみにこのモジュールは極めて俺しか得しないのでまあどうでもいいです。 ### Minilla, Dist::Milla Perl Module Authoring Tool であるところの {{cpan: Minilla}} と {{cpan: Dist::Milla}} を試してみました(本日の本題)。 Minilla は tokuhirom さん、Dist::Milla は miyagawa さんが開発しています。名前が似ている上にお互いのドキュメント上でリンクしあっているのでさらっと区別つけて読まないと最初まざりがちです。それぞれの細かい違いや方向性はドキュメントに書かれていますが、おおざっぱに以下のようなとらえ方でいまのところは良さそう。 * __Minilla__: 依存少なくてサクッと使える * __Dist::Milla__: 依存多めですが、{{cpan: Dist::Zilla}} の資産が利用できる というわけで、ハッカソンの間に、自分のモジュール({{cpan: Benchmark::Confirm}})を Minilla で CPAN リリースしてみました。XSもないごく普通のモジュールだったので本当に一撃でした。 $ git co -b minillize $ minil migrate $ git ci $ git co master $ git merge minillize $ minil release 今回は migrate でしたが、モジュールを作る作業の一連をぜんぶまとめて面倒見てくれるのですっごい便利そう。新しいのを次に書くときはゼロから使ってみようかなと思いました。考えることと手間が減って捗りそう。 そして、Dist::Milla も対応してみようかなとやってたとこでタイムアップとなりました。 乙でしたー。