myfinderの技術や周辺的活動のblog

2009年7月19日日曜日

Perlモジュールの開発方法まとめ

目的
Perlモジュールの開発環境を整えるいち手法をまとめる。
最近だとModule::Setupが使われている?ぽいのですが、このエントリではModule::Starter::PBPを使ったやり方について書く。
(もう野良.pmファイルをhogeるのは嫌なのじゃよ〜><)

対象環境
LinuxもしくはMacOSX Leopardが対象。
Windows環境でのやり方はわかりません><

必要なモジュールのインストール
何はともあれ、セットアップに必要なCPANモジュールをインストールする。

$ sudo cpan -i PPI
$ sudo cpan -i Module::Build
$ sudo cpan -i Test::Pod
$ sudo cpan -i Test::Pod::Coverage
$ sudo cpan -i Test::Perl::Critic
$ sudo cpan -i Module::Starter
$ sudo cpan -i Module::Starter::PBP
$ sudo cpan -i Module::Starter::Smart
Module::Starter::Smartは、モジュール開発中に同じパッケージ以下にさらにモジュールを追加したくなったときに必要なので入れておくべき。

Module::Starter::PBPの初期設定

$ perl -MModule::Starter::PBP=setup
Please enter your full name: YourName
Please enter an email address: mailaddr@example.com
これで「~/.module-starter/PBP/」というディレクトリがホームに出来る。
一部ひな形となるファイルの修正が必要なので、対応する。

$ vi ~/.module-starter/PBP/Module.pm
Module.pmを下記のように修正する。

use version; $VERSION = qv('0.0.3');
# ↓
use version; our $VERSION = qv('0.0.3');
また、Makefile.PLにも修正が必要なので、下記内容に書き換える。

$ vi ~/.module-starter/PBP/Makefile.PL


use lib qw(lib);
use Module::Build::Compat;

Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => 'Module::Build');


Module::Starter::Smartの設定
Module::Starter::PBPだけでは一つのpmファイルしか作れないので、ちょっと凝ったモジュールを作ろうとすると少々面倒。
なので、Module::Starter::Smartの設定も併せて行なっておく。
(※Module::Starter::Smartはインストールしただけでは有効にならないので注意)

$ vi ~/.module-starter/config
下記のように「Module::Starter::Smart」という記述を追加する。

plugins: Module::Starter::PBP Module::Starter::Smart


モジュールのひな形を作る
ここまでで、Module::Starter::PBP周りの設定ができたので、任意のディレクトリでモジュールの開発を始められる。
モジュールのひな形を作るには、下記コマンドを利用する。

module-starter --module=MODULE::NAME
このコマンドによって、カレントディレクトリにモジュールのひな形が生成されるので、あとはがしがし開発していけばOK

モジュールを追加する
機能毎、あるいはMooseなどでクラスを分けるときに、.pmファイルを追加したい要求が出他場合、下記コマンドで.pmファイルを現在のひな形に追加できる。

$ module-starter --module="MODULE::NAME::ADDMODULENAME" --distro="MODULE-NAME"


ビルドのテスト
開発が出来たら、ビルドできるかどうかテストする。

$ cd MODULE-NAME
$ perl Build.PL
$ perl Build
$ perl Build test


パッケージング
ビルドまでウマくいったら、後は配布可能な形にパッケージングするだけ。

まず、ひな形のBuild.PLファイルに、依存しているモジュールを追記する。

$ vi Build.PL


requires => {
'Test::More' => 0,
'version' => 0,
# この行以下に依存モジュールを追記
},
次に、パッケージングに不要なファイルを除くためのMANIFEST.SKIPファイルを作成

$ vi MANIFEST.SKIP


\bRCS\b
\bCVS\b
^MANIFEST\.
^Makefile$
^Build$
^Build.bat$
^_build/
\.(bak|tdy|old|tmp)$
~$
^blib/
^pm_to_blib
\.cvsignore
\.gz$
ここまでできたら、MANIFESTファイルを作成してパッケージングする。

$ perl Build manifest
$ perl Build dist
$ perl Build disttest
「perl Build disttest」は、作成したディストリビューションの動作確認を行なうものなので忘れずに実施したい。

ここまでやると、カレントディレクトリに「MODULE-NAME-v0.0.3.tar.gz」という名前のファイルが出来上がる。
モジュールを配布したい場合はこのアーカイブを利用すればOK


参考サイト
正しいPerl/CGIの書き方
はじめてのPerlモジュール開発メモ
Module-Starterのカスタマイズ
Module::Starter使ってみる

0 件のコメント: