Masteries

技術的なことや仕事に関することを書いていきます.

CPANモジュールのディレクトリ構成について

ほぼ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モジュールでよく出てくるディレクトリ名と, その用途についてまとめてみました.
いろいろなモジュールを見ながら, 「こういう使い分けかな?」と理解していった部分が多いので, 間違いや補足があれば是非ツッコミを頂ければ嬉しいです.

あわせて読みたい