CPAN

アクセサ(3) クロージャでアクセサ - ぱるも日記

Class::Accessor や Class::Data::Accessor については後日じっくり勉強したいと思います!

という事で、勉強しようと思い、とりあえず「perldoc Class::Accessor」(Class::Accessor のドキュメントを表示するコマンド)を実行してみました。

D:\dev\perl>perldoc Class::Accessor
No documentation found for "Class::Accessor".

あれ? 「Class::Accessor のドキュメントはありません」と表示されてしまいました。Class::Data::Accessor も同様でした。
試しにワンライナーで Class::Accessor を use してみると…

D:\dev\perl>perl -e "use Class::Accessor;"
Can't locate Class/Accessor.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/
lib .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

@INC(インクルードパス)に見つからない、というエラーがでます。
つまり、Class::Accessor は標準モジュールではないので、ダウンロードしてインストールする必要がある、という事ですね。

CPANからダウンロード

こういった場合、Perl の世界では「CPAN」(Comprehensive Perl Archive Network)というサイトを参照するそうです。CPAN (くぱん?)は「Perl に関するあらゆるモノの集合体」と呼べる存在で、モジュールやスクリプト、各種OSでのPerl実装、Perlソースコード、各種ドキュメントなど、何でも揃います。
日夜 Perl Monger (Perl プログラマ)さん達が、作ったモジュールを登録(審査制)しているので、日に日にモジュールが蓄積されています。僕も、いつかCPANに登録できるようなモジュールを作れるようになりたいです。(^_^)
では、早速 Class::Accessor を CPAN からダウンロード・インストールしたいと思います。
CPAN のモジュールを検索するなら search.cpan.org が便利です。
トップページの検索フォームに Class::Accessor と入力して「CPAN Search」ボタンを押すと、検索結果が表示されます。Class::Accessor が見つかりました。
モジュールのページを開くと、モジュールのドキュメント(POD)が HTML 表示されます。POD(Plain Old Documentation)とは、Perlソースコードに埋め込まれているドキュメントの事です。「perldoc」コマンドで表示されるドキュメントは、この POD によるものです。

NAME
  Class::Accessor - Automated accessor generation

右上にある「Download: Class-Accessor-0.25.tar.gz」というリンクから、アーカイブをダウンロードします。

モジュールのインストール

ダウンロードしたファイルは圧縮されています。UNIX などでは「gunzip」「tar」コマンドなどで展開するところですが、Windows では .tar.gz を扱える解凍ソフトで展開します。(僕は Noah を愛用しています)
次に、コマンドプロンプトを開いて展開先のフォルダに移動します。(窓の手を使うと、フォルダの右クリックメニューに「コマンドプロンプト」というメニューが追加できるので、とても便利です)
そして、「perl Makefile.pl」と打って実行します。すると、モジュール用の Makefile が作られます。Makefile は作業の自動化用の設定ファイルですね。

まずは、モジュールのビルドなどを行う為に「nmake」コマンドを実行します。nmake は Windows 標準の make プログラムです。色々な作業を自動化してくれるツールです。\

D:\desktop\Class-Accessor-0.25>nmake

Microsoft(R) Program Maintenance Utility Version 7.00.9466
Copyright (C) Microsoft Corporation.  All rights reserved.

ん? 何もでませんね。特にビルドするものが無かったのでしょう。

次に、モジュール作者が用意した「テストケース」を実行します。テストが通らない場合は、ビルドや手順などに何らかの不備がある可能性があります。テストを実行するには「nmake test」を実行します。

D:\desktop\Class-Accessor-0.25>nmake test

Microsoft(R) Program Maintenance Utility Version 7.00.9466
Copyright (C) Microsoft Corporation.  All rights reserved.

cp lib/Class/Accessor/Fast.pm blib\lib\Class\Accessor\Fast.pm
cp lib/Class/Accessor.pm blib\lib\Class\Accessor.pm
        C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'bl
ib\lib', 'blib\arch')" t/*.t
t/accessors....ok
t/croak........ok
t/getset.......ok
All tests successful.
Files=3, Tests=31,  1 wallclock secs ( 0.00 cusr +  0.00 csys =  0.00 CPU)

「All tests successful.」と出たので、テストは成功したようです。(^_^)

では次にモジュールをインストールします。インストールするには「nmake install」です。

D:\desktop\Class-Accessor-0.25>nmake install

Microsoft(R) Program Maintenance Utility Version 7.00.9466
Copyright (C) Microsoft Corporation.  All rights reserved.

Installing C:\Perl\html\site\lib\Class\Accessor.html
Installing C:\Perl\html\site\lib\Class\Accessor\Fast.html
Installing C:\Perl\site\lib\Class\Accessor.pm
Installing C:\Perl\site\lib\Class\Accessor\Fast.pm
Appending installation info to C:\Perl\lib/perllocal.pod

インストールできました。(^_^)

「perldoc Class::Accessor」のように、perldoc コマンドにモジュール名を渡すと、そのモジュールの POD を読む事ができます。

D:\desktop\Class-Accessor-0.25>perldoc Class::Accessor
NAME
      Class::Accessor - Automated accessor generation

(以下略)

正常にインストールできたようです。(^_^)
インストールが終わったら、元のファイルは削除して問題ないとおもいます。「examples」フォルダにサンプルが入っているので、参考にしてもいいですね。

文章にすると長いですが、実際にやってみると簡単にインストールできちゃいます。
CPAN のモジュールは他にも色々あって、誰でも無料で利用できるモジュールが山ほど登録されています。眺めているだけでもワクワクしますね。すばらしい。

(追記) CPAN最速検索

最速インターフェース研究会さんのところで、公開されているCPAN最速検索もとっても便利です。
モジュール名をインクリメンタルに検索できます。通信は最初の1回だけで、検索にはJavaScriptで行っていて高速。正規表現や、一部分だけのタイプによる検索など、さすが「最速」の名は伊達ではありません。
Firefox のサイドバーとして使っています。(^_^)

(追記2) PPM

モジュールの一部はC言語で作られているものがあり、これをインストールするにはコンパイルが必要なのですが、Windows では標準でC言語コンパイラが付属していないので、簡単にはインストールできません。
Windows の ActivePerl には PPMPerl Package Manager)というツールが付属しています。これを利用すると、コンパイル済みのバイナリをインストールする事ができます。
ためしに「Class::Data::Accessor」を ppm でインストールしたいと思います。ppm でモジュールをインストールするには

ppm install モジュール名

を実行します。モジュール名の「::」は「-」(ハイフン)に置き換えたほうがいいようです。
早速実行してみます。

D:\dev\perl>ppm install Class-Data-Accessor
====================
Install 'Module-Build' version 0.28 in ActivePerl 5.8.8.817.
====================
Installing C:\Perl\html\bin\config_data.html
Installing C:\Perl\html\site\lib\Module\Build.html
(中略)
Installing C:\Perl\bin\config_data
Installing C:\Perl\bin\config_data.bat
Successfully installed Module-Build version 0.28 in ActivePerl 5.8.8.817.
====================
Install 'Class-Data-Accessor' version 0.02 in ActivePerl 5.8.8.817.
====================
Installing C:\Perl\html\site\lib\Class\Data\Accessor.html
Installing C:\Perl\site\lib\Class\Data\Accessor.pm
Successfully installed Class-Data-Accessor version 0.02 in ActivePerl 5.8.8.817.

モジュールのビルドに使われる Module::Build モジュールも自動的にインストールされたようです。

D:\dev\perl>perldoc Class::Data::Accessor
NAME
    Class::Data::Accessor - Inheritable, overridable class and instance data
    accessor creation

Class::Data::Accessor もちゃんとインストールできました。(^_^)