Perl/モジュール開発の変更点 - Masanoriのメモ帳

Perl/モジュール開発の変更点

Perlにおけるモジュール開発(CPANモジュール)のメモです。
:Perlカテゴリ:Perlに関するページについては[[Category/Perl]]も御覧ください。
!!!テンプレート
[Module::Starter::PBP|http://search.cpan.org/~dconway/Module-Starter-PBP-v0.0.3/lib/Module/Starter/PBP.pm]のようなモジュールを使えば、モジュールの雛形を容易に作成できる。

    $ perl -MModule::Starter::PBP=setup
    $ module-starter --module=Foo::Bar::Hoge

!!!ビルド (インストーラ)
*'''Module::Build''' (Build.PL)
*'''ExtUtils::MakeMaker''' - よく使われている、かつ強力。XSなモジュールを書くならばこれか。
*'''Module::Install''' - ExtUtils::MakeMakerのラッパ
がよく使われている。(私は、Module::Buildを用いている。)
!!Module::Build
Module::Buildは、makeコマンドに依存しないことを目的の一つとしている。
そのため、従来のMakefile.PLの代わりに、Build.PLにモジュール情報を記述する。

但し、実際にモジュール配布する上では、Makefile.PLが無ければ、makeコマンドが使えない(困ることもある)ので、Module::Buildを組み込んだMakefile.PLも用意しておく。
そうすれば、Buildコマンド(Build.PL)と、makeコマンド(Makefile.PL)の両方を使えるようになる。

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::PBPでテンプレートから作成し、Module::Buildを使った場合
結果的に次のようなファイル構成となる。
*Build.PL
*Changes - 変更履歴
*Makefile.PL
*MANIFEST - 配布アーカイブに含めるファイルのリスト (make manifestで作成できる)
*MANIFEST.SKIP - make manifestするときに含めたくないファイル名を正規表現で記述
*README - Readmeファイル (インストール方法などを記述する)
*lib/ - モジュール本体を格納するディレクトリ
**~~~
***Hoge.pm - モジュール本体 (バージョンや、ドキュメントカバレッジのテスト対象となるPODも、ファイル内に併記する)
*t/ - テストディレクトリ
**00.load.t - モジュールをuseできるかどうかの最も基本的なテスト
**perlcritic.t - Test::Perl::Criticによるテスト
**pod-coverage.t - Test::Pod::Coverageによるドキュメントカバレッジのテスト
**pod.t - Test::Podによるドキュメントのテスト
!!!テストの実行
proveコマンドを使う。(-lオプションは、libディレクトリを@INCとして追加するオプション。)
    $ prove -l
尚、Module::Buildを使っている場合は、以下のようにすると、ビルドしてからテストできる。
    $ perl Build.PL
    $ ./Build test
!!!PAUSEアカウント
CPANでモジュールを公開するために必要なアカウントである。
http://pause.perl.org/pause/query?ACTION=request_id から作成できる。
(参考: http://blog.livedoor.jp/sasata299/archives/51284970.html )
!!!配布アーカイブの作成
*make distコマンドは、MANIFESTの記述を基に、配布アーカイブ(tar ball)を生成する。
*make disttestコマンドは、配布アーカイブを実際に生成する代わりに、配布アーカイブのファイル構成でテストを行える。(万が一、MANIFESTに抜け落ちがあった場合にも、これを発見できる。)

    $ make disttest
    $ make dist

また、実際にアップロードする前に、[Perl モジュールリリースチェックリスト|http://www.naney.org/diki/dk/Perl%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%88.html]でチェックを行おう。
!!!アップロード
参照: http://sasakure.hatenablog.com/entry/20121129/1354144631
!!!CPANモジュール(namespace)をCPANから削除したいときは
CPANにアップロードするモジュールを間違えた場合や、namespaceを削除したい場合などの方法を説明する。
CPANにアップロードするモジュールを間違えた場合や、namespaceを削除したい場合の方法である。

CPANモジュールがCPANに掲載された後、さらに数日たって正式に登録されると、
PAUSEの["Edit Module Metadata"|https://pause.perl.org/pause/authenquery?ACTION=edit_mod]にモジュール名が表示されるようになる。
その後であれば、モジュール削除や、search.cpan.orgなどでの非表示が選択できる。

但し、削除リクエストを行ってから、実際の削除は、一定のライフサイクルが経過した後となるほか、
Backpanからの削除は行えないようだ。
!!!参考リンク
*[モジュール作成からCPANに上げるまでの手順|http://shibayu36.hatenablog.com/entry/20100724/1279959839] - とても参考になります。
*[Module::Build:MakeMakerの後継者を目指して|http://gihyo.jp/dev/serial/01/modern-perl/0023] - 3つのツールの歴史と経緯
*[Module::Buildでビルドを自動化する|http://ash.roova.jp/perl-to-the-people/module-build.html]
*[nDiki : Perl モジュールリリースチェックリスト|http://www.naney.org/diki/dk/Perl%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%AA%E3%82%B9%E3%83%88.html] - モジュール公開のためのチェックリスト
*[Perlのmakeフェーズの挙動|http://lestrrat.ldblog.jp/archives/23208778.html] - makeコマンド群は実際に何をするのか。
*[Perlモジュールの開発方法まとめ|http://blog.myfinder.jp/2009/07/perl.html]

----
{{category プログラミング,Perl,Linux,Windows,nolink}}


メニュー


未整理

Linux

プログラミングx

Android

サービス

製品

執筆中


筆者のサイト


スポンサード リンク