Home > 特別企画

素晴らしきPerlモジュールの世界

カテゴリー"Acme"

 CPANには大量のPerlモジュールが登録されています。暗号操作、Apacheとの連携、テキスト処理、データベースへの接続、MIDIやPDFファイルの操作等々、ありとあらゆるモジュールがプログラミングの手助けをしてくれます。これらは全てカテゴリー別に分類されています。例えば、今あげた暗号関連のモジュールなら"Crypt"に属しますし、テキスト処理に関するものは"Text"という具合です。
 このなかでも、"Acme"というカテゴリーには大変素敵で野心的なものがたくさんあります。いくつか紹介してみたいと思います。

Acme::Damn

 さて、Perlでオブジェクト指向プログラミングを行なう場合、blessという組み込み関数を使います。

	bless $object,MyClass;

で、blessというのは「祝福」という意味でしてTRPGやってた人にはお馴染みですね。CPANモジュールの中にAcme::Damnといのがありまして、damnというのは「呪い」とか、神が永遠の断罪を下すという真に恐ろしい単語であります。英語圏の人に向かって"Damned!"と叫んでみましょう。大変なことになるかもしれませんが、当方は一切関知いたしません。また、ダムに批判的な立場から書かれたThe Dammed (Fred Pearce著,Bodley Head刊:ニュアンスとしては「ダムのくそったれ!」)という本の邦題は『ダムはムダ』(平沢正夫訳、共同通信社)だったりして、いやそれはどうでもよいのですが、予想されるようにこのモジュールを使いますと、祝福(bless)が解除されます。
 こんなもの、何のために使うのかと思ったら、ドキュメントにも "I can't think of any reason why you might want to do this, but just because it's of no use doesn't mean that you shouldn't be able to do it. " (なんであんたがこんなモノ使いたがるのか僕にはわかんないけど、役立たたずだからって使っちゃいけない法はないしね。)などと小癪なことが書いてあったりして私は好きです。

Acme::Holy

 ところで、Perlでオブジェクト指向プログラミングを行なう場合、blessという組み込み関数を使います。

	bless $object,MyClass;

で、blessというのは「祝福」という意…(省略)。さて、CPANモジュールの中にAcme::Holyというのがあります。ご存知のとおりholyというのは「神聖な」という意味でして、このモジュールを使うと、ある変数がオブジェクトなのかどうかが一目でわかるという、よく考えるとこれを使わなくても別の手段があるのですが、作者本人も"This module is a classic case of reinventing the wheel" (車輪の再発明…既にある便利なものをわざわざつくってしまうこと)といっているわけで、一体誰がこんなものをつくったのかと思ったら先のAcme::Damnと同じ作者でした。私こういう人好きです。

Acme::Playmate

 このようになんだかわけのわからないものが多いPerlモジュールのAcmeカテゴリーですが、Acme::Playmateというのがありました。「Playmate」「プレイメイト」。もうだいたい予想がついた方もいらっしゃるでしょうが、playboy.comのサイトの当該ページに対するインターフェースを提供するという、どう考えても「CPANに登録してどうするんだよそれ?」みたいな代物なのですが、使い方をドキュメントから引用しますと(一部整形・修正しました):

	my $playmate = new Acme::Playmate("2003", "04");
	print "Details for playmate " . $playmate->{Name}       . "\n";
	print "Birthdate"             . $playmate->{BirthDate}  . "\n";
	print "Birthplace"            . $playmate->{BirthPlace} . "\n";
	print "Bust"                  . $playmate->{Bust}       . "\n";
	print "Waist"                 . $playmate->{Waist}      . "\n";
	print "Hips"                  . $playmate->{Hips}       . "\n";
	print "Height"                . $playmate->{Height}     . "\n";
	print "Weight"                . $playmate->{Weight}     . "\n";

ということで、これ以上は無いぐらい即物的なモジュールに感動を覚えます。

Acme::Yoda

 このようになんだかわけのわからないものが多いPerlモジュールのAcmeカテゴリーですが、Acme::Yodaというのがありました。「Yoda」ジェダイの騎士。もうだいた(略)、文をぶちこむとヨーダ風に変換するという、素敵なモジュールです。でもヨーダ風の話し方って?(yoda-speak.org…この辺で調べてね)

Acme::Turing

 今度はなかなか有意義そうなAcme::Turing。Perlでチューリングマシンをエミュレートしてくれます。考案者のアラン・チューリングという人は、イギリスが第二次大戦中にドイツのエニグマ暗号を解読するにあたり、成功に導いた功労者としても有名です。彼は同性愛者であることを当時のイギリス社会のなかで堂々と公言したため、逮捕され、ホルモン投与を受け、最後には自ら命を絶ちました。という伝記を紹介しようと思ったのですが、部屋中探しても本が見つかりません。どこいったんだろう?
 ちなみにドキュメントの最後に"Well, uh, this module isn't really useful for much of anything. " (あー、うー、このモジュールは心底役に立ちましぇん)とか書いてあったりしますが、気にしましぇん。
 ああ、もちろんCPANにはエニグマのシミュレータもありますので、これを使ってお友達とドイツ軍ごっこをやるというのはどうでしょう?(邦訳もあります…Crypt-EnigmaCrypt-OOEnigma

Acme::ManekiNeko

 さて、最後に和風なモジュールを紹介しましょう。Acme::ManekiNeko「ManekiNeko」。もはや何もいいますまい。ドキュメントには愛と感動の招き猫=幸運の女神(観音様)伝説が書かれております。和訳されているのでこちらもどうぞ(招き猫)。  で、このモジュールのソースは非常にシンプルなので初心者にもお勧めです。ソースをみれば現れる招き猫もほら! …この猫、和風じゃないなあ…

ここで残念なお知らせ:現在CPANにはAcme::ManekiNekoはいないようです。

ここで嬉しいお知らせ:ActivePerlのppmにはまだあるようです。

ちなみにこんな感じ

まだまだあるよ、Acmeな世界

 perldocjpにも訳されているAcmeなモジュールの一つにAcme:Bleachやその応用のAcme::Morseがありますが、これなどはプログラムソースを「漂白」したりモールス信号に変えたりと、まあ、何といいましょうか。そんな感じです。楽しいですね。役に立ちますね。じゃ、そういうことで、さよなら。

ところで、Acmeカテゴリーって何?

 と思って調べたらありました。"Re: What does the "Acme" category represent?"
ナンセンスモジュール

ページの先頭へ