Perl Hackers Hub

第21回 Carton & cpanm―Perlモジュール管理最新事情(1)

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

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回はikasam_aこと中川勝樹さんで,テーマはモジュール管理です。

Perlのモジュール管理

CPANComprehensive Perl Archive Networkは,Perlのモジュールやソフトウェアを集めたアーカイブサイトです。昨今のPerlアプリケーション開発において,CPANにあるPerlモジュールをまったく利用しないというシーンは,ほぼ皆無だと思います。

CPANには,ファイル操作や日付操作をする基本的なライブラリから,HTTPクライアントやWebアプリケーションフレームワークといった規模の大きいものまで,先人が開発を進めてきたモジュールがたくさんあります。ですのでありがたいことに,自分でゼロから下回りすべてを開発せずとも,必要なアプリケーション開発に専念できます。

CPANモジュールは使いこなすと非常に便利ですが,特定のバージョンだけにバグがあったり,モジュール同士の相性によって特定バージョンを使わないと期待どおりに動作しないということも,よくあります。そのため,各プロジェクトで正しく動作するモジュールを管理しておかないと,環境をアップデートした際にいきなりアプリケーションが動かなくなるということも考えられます。

Perlでは,言語自体がモジュールのバージョン管理のしくみを提供していないため,利用者がそれぞれ何らかの方法でバージョン管理をする必要があります。そして最近では,モジュール管理をサポートするツールがいくつか登場してきています。

本稿では,Perlの最近のモジュール管理事情について解説します。まずPerlモジュールの話をするうえで欠かせないCPAN関連の話に触れ,そして,最近開発が活発に行われているCartonとcpanmという2つのモジュール管理ツールについて説明します。

CPAN

繰り返しになりますが,CPANはPerlのモジュールを集約したアーカイブです。The CPAN Search SiteというCPANの検索サイトもあり,ここからモジュールを検索できます。

検索したモジュールはいくつかの閲覧方法があって,たとえばディストリビューション単位で閲覧してChangesからモジュールの更新履歴を確認できます。またモジュール単位で表示すると,モジュールに書かれているPODPlain Old DocumentationをHTMLでレンダリングしてくれるので,オンラインでドキュメントを確認することもできます。

MetaCPAN

MetaCPANはもう1つのCPAN検索サイトで,ブラウザで見ることができるフロントエンドのほかに,api.metacpan.orgというAPIも提供しています。

MetaCPANは,The CPAN Search Siteと同様にモジュールを検索してそのドキュメントをオンラインで見ることができるのはもちろん,自分が気に入ったモジュールをインクリメント(++)できたり,モジュールのページからバージョン間のdiffを見ることができたり,依存関係がリストアップされていたりと,ちょっとした機能が小気味良く入れられており,筆者は便利に利用しています。

The CPAN Search Siteとの違いとしてAPIを提供しているのは前述のとおりですが,このAPIを使うことで,特定のバージョンのモジュールやディストリビューションの情報を取得したり,ある名前のモジュールを検索するといったことができます。もちろんAPIは自身のツールやWebアプリケーションなどに組み込んで使うことができます。APIをブラウザ上で実行できるMetaCPANExplorerも提供されているので,実際にどのような情報が取得できるか確認することもできます。

そして,これらのソースコードはオープンソースとしてGitHub上で公開されているので,誰でも見たりforkしたりすることができます。

cpanコマンド

CPANはモジュールのインストール方法も提供していて,Perlに標準添付されているcpanコマンドを使います。ここではコマンドの詳細は割愛しますが,次のようにcpanコマンドを実行すると,初回実行時には対話式に初期設定を行います。

$ cpan

ここで設定を完了させると,以後はcpanコマンドでモジュールの取得,ビルド,テスト,インストールや検索が可能になります。より詳細な使い方は,cpanコマンドのヘルプを参照してください。

$ cpan -h
$ perldoc cpan
<続きの(2)はこちら。>

著者プロフィール

中川勝樹(なかがわまさき)

1980年北海道生まれ。

株式会社ディー・エヌ・エー,プラットフォームシステム部所属。テストエンジニアとしてモバゲープラットフォームのテスト周り全般を担当。PerlやRubyによる自動テストの整備が主な業務。

「YAPC::Asia」や「Yokohama.pm」でスピーカーをするなど,Perl関連のコミュニティに積極的に参加している。

URL:http://ikasama.hateblo.jp/
Twitter:@ikasam_a

コメント

コメントの記入