Perl配布モジュールの作り方

このエントリーをはてなブックマークに追加

こんにちわ、技術部のkoyaです。

今回はPerl配布モジュールの作り方について書きます。
社内勉強会の内容ですが参考になれば幸いです。

準備

配布モジュールの開発を始める前に環境を準備します。

  1. perlbrew
  2. pm-uninstall
  3. Module::Starter

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パスに書き換えられてインストールされます。

参考

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...