最近お気に入りのPerlモジュール(Daiku編)

@nqounetです。

ウェブアプリなどのプログラムを作っている時は、同じコマンドを何度も何度も入力することになります。

そういう面倒な手順をもっと簡単なコマンドにしたい、という野望を叶えるモジュールがDaikuです。

daiku install

例えば、開発用のサーバーを立ち上げたり、データベースを初期化したり。

そういう時は、そういう処理をまとめてシェルスクリプトに書いておいて、用途に応じて実行したりすると思います。

私はシェルスクリプトが苦手なので、ちょっと難しいことをしようと思っても書けません。

また、例えば設定ファイルだけ活かした処理を手動で実行したいときは、設定ファイルの読み込みなどは既存のプログラムを利用できたほうが良いと思います。

既存のプログラムがPerlの場合、シェルスクリプトではそういう手続きを書くことが面倒になってきます。

Daikuを使うと、シェルスクリプトと同様のことだけでなく、既存のPerlプログラムを活かした手続きを簡潔に書くことができるのでとても助かっています。

インストールはとても簡単。

1
cpanm Daiku

command not foundというエラーがでた人は、先に↓のコマンドを実行すると良いです。

1
curl -L https://cpanmin.us | perl - App::cpanminus

簡単な使用例

Daikuをインストールすると、daikuコマンドが使えるようになります。

daikuコマンドを実行すると、そのディレクトリにあるDaikufileというファイルを読み込んで、そのファイルに書いてあるtaskを実行してくれます。

私がどんな感じで使っているかというと、例えばdaiku installで、そのプロジェクトのcpanfileに書いてあるモジュールを全部インストールする、みたいなことをしています。

1
2
3
4
desc 'install perl modules';
task install => sub {
    sh q(cpanm --with-all-features --installdeps .);
};

descは、その後に書いたtaskの説明文です。

shはシェルコマンドを示します。

なので、この例では単純なシェルスクリプトと何ら変わりありません。

複雑な使用例

プロジェクトの設定ファイルなどを活かした例としては、以下の記事が非常に役立つでしょう。

また、Amon2のようなPSGIなフレームワークを使っている場合、環境変数のPLACK_ENVを設定して実行するようなことがあれば楽になります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
namespace migrate => sub {
    desc 'development database';
    task development => sub {
        $ENV{PLACK_ENV} = 'development';
        require MyApp::CLI::Migrate;
        MyApp::CLI::Migrate->new->run;
    };
    desc 'staging database';
    task staging => sub {
        $ENV{PLACK_ENV} = 'staging';
        require MyApp::CLI::Migrate;
        MyApp::CLI::Migrate->new->run;
    };
};

この場合、開発環境の場合はdaiku migrate:development、ステージング環境の場合はdaiku migrate:stagingのようになります。

namespacetaskの関係が間違っている気がしますが、書いているとこの書き方がしっくりと来るのでいつもこんな感じです。

まとめ

daikuは便利ですよ。

特に、Perlのプログラムを作っているときはね。

comments powered by Disqus
Hugo で構築されています。
テーマ StackJimmy によって設計されています。