Perl Hackers Hub

第50回  Minillaを使ったモダンなCPANモジュール開発(2)

この記事を読むのに必要な時間:およそ 5 分

前回の(1)こちらから。

CPANモジュールの作成

それでは,実際にCPANモジュールを作成していきましょう。

モジュールの命名規則

まずはモジュールの名前を決めましょう。CPANの世界では,階層化された説明的な名前が使われる傾向にあります。たとえば,MarkdownのモジュールであればText::Markdownというように「Text」が付くといった具合です。そこまで強い強制力はありませんが,ガイドラインもあります。

Perlの世界はご存じのとおりTMTOWTDIThere's more than one way to do it.注1ですし,ほかの言語の影響も受け,最近は個性的な名前のCPANモジュールも増えてきました。それ自体は悪いことではありませんが,慣れないうちはガイドラインや,既存のモジュールをお手本にしてモジュール名を考えるとよいでしょう。

CPANモジュールにはAcme::という階層があります。ここはジョークモジュール用の階層で,比較的気軽にモジュールをアップロードできます。そこで,以降はAcme::Songmuというモジュールを作りながら,Minillaの使い方を説明していきます。

注1)
「やり方は1つじゃない」というPerlのモットーです。

モジュールのひな型を作成する

minil newサブコマンドを使って,モジュールのひな型を生成します。

% minil new Acme::Songmu
Writing lib/Acme/Songmu.pm
(省略)
[Acme-Songmu] $ git add .
Finished to create Acme::Songmu

いろいろ出力されましたが,プロジェクトディレクトリのAcme-Songmuが作られ,ひな型が配置されるとともに,自動的にgit addまで実行されました。

MinillaではGitによる管理が必須

Minillaを使ったモジュール開発では,プロジェクトをGitで管理することが必須となっています。CPANモジュールに含めたいファイルはすべてGitで管理されている必要があり,リポジトリには必ずリモートリポジトリが割り当てられていないといけません。

リモートリポジトリはGitHubを利用するのがお勧めです。あとで説明するREADME.mdへのステータスバッジの表示設定など,Minilla自体がGitHubに最適化されているからです。Minillaで作成されたプロジェクトディレクトリと同名のリポジトリをGitHub上に作成し,それをリモートリポジトリとして割り当ててください。今回のAcme-Songmuであれば,git remote add origin git@github.com:Songmu/Acme-Songmu.gitといった具合です。

試しにテストを実行する

minil newで作られたプロジェクトディレクトリに移動して,まずは試しにminil testを実行してみましょう。minil testはモジュールのテストスイートを実行するコマンドです。

$ minil test
(省略)
t/00_compile.t .. ok
All tests successful.
Files=1, Tests=1, 0 wallclock secs ( 0.02 usr 0.01 sys +
0.07 cusr 0.02 csys = 0.12 CPU)
Result: PASS

モジュールのビルドとテストが実行され,成功しました。このように,Minillaを使うとひな型の時点でPerlモジュールとしての体裁がすでに整っています。

モジュールのディレクトリ構成を理解する

さっそく開発を進めたいところですが,その前に,minil newが生成したファイルの役割やディレクトリ構成の作法を理解しておきましょう。

minil newが生成したファイルをもとにCPANモジュールのディレクトリ構成を理解していきましょう。初期ファイルは次のように分類できます。

  • ライセンスファイル
    • LICENSE(ライセンスファイル)
  • 設定ファイル
    • minil.toml(Minillaの設定ファイル)
  • 開発時に編集するファイル
    • lib/Acme/Songmu.pm(メインのモジュールファイル)
    • t/00_compile.t(最低限のテストファイル)
    • cpanfile(依存モジュールを記述するファイル)
    • Changes(変更履歴を記述するファイル)
  • Minillaが自動的に更新するファイル
    • Build.PL(モジュールビルドのためのファイル)
    • META.json(モジュールのメタ情報が記述されたファイル)
    • README.md(ドキュメントファイル)

順に見ていきましょう。初期生成はされない各種配置用ディレクトリについても説明します。

ライセンスファイル

LICENSEファイルには,CPANモジュールで標準的な,GPLv1とArtistic License 1.0のデュアルライセンスが記述されています。ライセンスにこだわりのない限りはこのままで問題ありません。

設定ファイル

minil.tomlはMinillaの設定ファイルです。その名のとおり,TOMLTom's Obvious, Minimal Language形式で記述します。ただ,細かいカスタマイズが必要にならない限りは,ほとんど触ることはありません。

開発時に編集するファイル

lib/Acme/Songmu.pmがメインのモジュールファイルです。ほかにモジュールファイルを追加したい場合は,libディレクトリ以下に追加できます。

t/00_compile.tは最低限のテストファイルです。今後テストファイルはtディレクトリ以下に配置します。

cpanfileは依存モジュールを記述するためのファイルです。のちほど詳しく説明します。

Changesはモジュールの更新履歴を記述するためのファイルです。

著者プロフィール

松木雅幸(まつきまさゆき)

idのSongmuの由来は「松木」の中国語発音表記。

中国でのIT起業,語学営業職,SIer,ソーシャルゲーム開発などの紆余曲折を経て,現在は,はてな東京オフィスでチーフエンジニアとサーバー監視SaaS,Mackerelのプロダクトオーナーを務める。ISUCONに過去3度優勝するなど,インフラを意識してアプリケーションコードを書くことが得意。趣味はCPANにモジュールを上げまくることだったが,最近はGoがお気に入りで多数のオレオレツールをGitHubに公開している。

著書に『みんなのGo言語[現場で使える実践テクニック]』,『Mackerelサーバ監視[実践]入門』(共に共著,技術評論社)

Blog:http://www.songmu.jp/riji/
GitHub:Songmu

コメント

コメントの記入