こんにちわ、技術部のkoyaです。
今回はPerl配布モジュールの作り方について書きます。
社内勉強会の内容ですが参考になれば幸いです。
準備
配布モジュールの開発を始める前に環境を準備します。
perlbrewはユーザーのホームディレクトリに好きなバージョンのPerlをインストールすることができ、システム環境を汚さずに開発できます。
pm-uninstallはその名の通りPerlモジュールをアンインストールすることができます。開発中のモジュールをインストールしたりアンインストールするときに便利です。
Module::Starterは配布モジュールのひな形を作ってくれるCPANモジュールです。ひな形を作る方法はいくつかあるようですが、ピュアPerlのモジュールを作る場合はひとまずこちらを使うのが良いようです。
pm-uninstallとModule::StaterはcpanmまたはcpanからインストールすればOKです。
※pm-uninstallはApp::pmuninstallをインストールします。
モジュールのひな形作成
Module::Starterを使ってモジュールのひな形を作成します。
$module-starter --module=Foo \
--author=”Your Name” \
--email=yourmail@example.com \
--build=Module::Build
--ignore=git
--buildオプションで指定する、モジュールをビルドする仕組みも複数あるのですが今回はPerl 5.10からコアモジュールであるModule::Buildを使っていきます。
また、コマンドのオプションはあらかじめコンフィグファイル(~/.module-starter/config)に書いておくこともできます。
ひな形のファイル構成は次の通りです。
Foo/
README
Changes
MANIFEST
Build.PL
t/(デフォルトの.tテストファイル含む)
lib/Foo.pm
.gitignore
開発の流れ
TDDで開発していきます。t/ディレクトリ以下にテストコード(*.t)を書き、lib/以下にモジュール(*.pm)のコードを書いていきます。
テストはモジュールディレクトリで次のコマンドを実行します。
$ prove -l
-lオプション: libディレクトリをインクルードパスに加えてテストを実行します。
また、配布が前提なので特に次のことに気をつけてモジュールを書きます。
- PODでドキュメントを書く
- use strict; use warningを使い、warningクリーンなコードを書く
- モジュール呼び出し側に問題がある場合は、Carpモジュールのcarpやcroakを使って警告や例外を出す
モジュールのビルドとインストール
モジュールはBuild.PLを使ってBuildスクリプトを生成し、インストールします。
$ perl Build.PL
$ ./Build test
$ ./Build install
利用している環境にモジュールがインストールされ、useして使う事ができるようになります。
モジュールの配布
配布する場合はREADMEファイルにモジュールの説明を書き、次のコマンドでtarボールを作ります。
$ ./Build dist
このときMANIFESTファイルに記述されたファイルだけがパッケージングされます。
パッケージ漏れしているファイルがあると配布先でテストに失敗するなどトラブルになるため、次のコマンドを実行してテストしておきましょう。
$ ./Build disttest
また、MANIFESTファイルを管理するコマンドもビルドスクリプトには用意されています。
$ ./Build manifest
こちらを実行するとMANIFEST.SKIPファイルにないファイルをMANIFESTファイルに追加してくれます。
デフォルトのMANIFEST.SKIPファイルは次のコマンドで生成出来ます。
$ ./Build manifest_skip
その他
実行スクリプトを配布したい場合はbin/ディレクトリを作り、その下にPerlスクリプトを書きます。
※スクリプト先頭のperlパス(#!/usr/bin/perlなど)は、インストール時にインストール先の環境のperlパスに書き換えられてインストールされます。
参考