ほぼ1年ぶりの開催になってしまった五反田Perlで, CPANモジュールのディレクトリ構成についての話題が出たので, 自分の理解をアウトプットしておこうと思います.
lib
/ t
もはや説明不要ですが, lib
ディレクトリにはモジュール本体, t
にはそのモジュールのテストを配置します.
Minillaなどを使ってモジュールの雛形を作った場合, 最初から作られていますので, 見たことのある方は多いのではないでしょうか(?).
xt
いわゆる「Authorテスト」を設置するディレクトリです.
例えばPOD(モジュールのドキュメント)関連のテストやPerl::Critic/Perl::Lintによる静的解的テストなどを設置することが多いです.
share
Webアプリケーションなどをモジュールとして配布する際, CSSやJavaScriptなどを同梱したい場合にはこのディレクトリに設置します.
このディレクトリに設置したファイルは, File::ShareDirモジュールなどを使えば利用できるようになります.
例えば, Ukigumo::Serverのshare
ディレクトリには, Ukigumoのサーバ(Webアプリケーション)を起動する際に利用するテンプレートや設定ファイルなどが設置されています.
詳しくは, こちらの記事も参考にしてみてください: ノンコードなファイルをモジュールと一緒にインストールしたければshareディレクトリを使う by @yusukebeさん
eg
/ examples
サンプルスクリプトを設置する際によく利用するディレクトリです.
このディレクトリに設置しておけば, MetaCPAN上でもExamples
として表示されるので便利です.
author
モジュール作成に役立つ, 作者用のスクリプトを設置するディレクトリです.
例えばAmon2には, 各種JavaScriptやjQuery, Bootstrapのコードを前述のshare
ディレクトリに配置するためのassets.plというスクリプトがauthor
ディレクトリに設置されています.
また類似モジュールとのベンチマーク用スクリプトが設置されている例もあります.
bin
/ script
ここに設置したファイルは自動的にパスが通る位置に配置され, コマンドとして利用できるようになります.
例えば, Amon2であればamon2-setup.pl
などがこのディレクトリ内に設置されています(なので, シェル上からamon2-setup.pl MyApp
のような形でAmon2の雛形の生成ができるようになる訳です).
まとめ
ざっくりと, CPANモジュールでよく出てくるディレクトリ名と, その用途についてまとめてみました.
いろいろなモジュールを見ながら, 「こういう使い分けかな?」と理解していった部分が多いので, 間違いや補足があれば是非ツッコミを頂ければ嬉しいです.