2007-04-01 20:53  第10号

use Acme::Bleach;

    エイプリルフールということで、CPAN のジョークモジュールをいくつか紹介。

    CPAN には Acme:: というジョーク専用の名前空間があります。この名前空間が生まれたのは 2001 年。提唱したのは Perl 界の重鎮 Damian で、彼が Bleach というジョークモジュールを作ったときの話らしいです。

    最初は Bleach という名前でアップしたのですが、「ジョークモジュールがいろいろ混ざっていくのはいかがなもんかね。ジョーク系は Acme:: という名前空間に入れるようにしませんか」というような感じで提唱。Bleach も Acme::Bleach として再 UP されました。

    Acme は美味しんぼで言う『究極』とか『至高』とかいうニュアンスと、思ってたのですが、ルーニー・テューンズのロードランナーの中に出てくる、コヨーテに怪しい商品を売る Acme 社 から来てるそうです(このへん参照)。 メールで教えてもらいました。すみません。

    単純に Joke:: とかじゃないのがセンスあるなあと思います。

    Acme::Bleach は、

    use Acme::Bleach;
    
    print "Hello.";
    

    みたいに普通に use Acme::Bleach; した後続けて 好きなコードを書いた bleach.pl を作り、実行すると、bleach.pl ファイルそのものが“漂白”され(書き換えられる)、以下のようになります。

    use Acme::Bleach;














    選択してみるとわかりますが、コードがすべて(バイトにされたのち)タブとスペースと改行で表現されてます。use Acme::Bleach; はデコードとエンコード両方の役割を持っており、このまま perl bleach.pl を実行するとちゃんと Hello. を表示します。

    とまあ、こうして Acme:: 名前空間ができたおかげで、世界の Perl ハッカーは心置きなく思いついたジョークモジュールを次々 CPAN に投入できるようになったのでした。めでたしめでたし♪

    日本人にもわかりやすい Acme:: 系をいくつか紹介してみます。

    Acme::DoubleHelix

    Double helix = DNA の 二重らせんです。Acme::Bleach と同じようなモジュールですが、先ほどの Hello. を出力するやつがこうなります。

    use Acme::DoubleHelix;
    
     CG
    T--A
    A---T
    A----T
     C----G
      T----A
       A---T
        G--C
         AT
         CG
        C--G
       G---C
      G----C
     C----G
    A----T
    C---G
    G--C
     TA
     CG
    C--G
    A---T
    A----T
    
    # 以下続く
    

    こういうのがお好きなら Acme::EyeDrops が気に入ると思います。

    Acme::MorningMusume

    モーニング娘モジュール。1メンバー1モジュールになってて、年齢とかがわかる便利?モジュール。

    Sex

    こいつは、Acme:: ができる前に投入されたジョークモジュール(2000年)で、まだその名前空間のまま生き残ってるやつですね。2つのモジュールを Sex させます。実行時にあえぎます(笑)

    Acme::Hoge

    foo や bar を print しようとしても日本風の hoge とか fuga になってしまう、俺は日本男児だー向け?モジュール。

    Acme::Kensiro

    ケンシロウ進数 に基づき「あたたたたた」を出力。くだらない・・・(← Acme:: 系への最高のほめことばです)

    Acme::Hyde

    こちらは、ラルクアンシエルの Hyde の身長を 1 とする新たな単位 hyde の計算用モジュール。。

    Acme::Lou

    これはぼくの作品です。テキストをルー大柴風に変換します。ルー語変換 で作ったものをモジュール化したものです。結構まじめに組んだ苦心作で、思い出深いモジュールです。

    SEE ALSO

    その他の Acme:: モジュール, Acme:: 名前空間誕生秘話

    WRITTEN BY

    冨田 尚樹 <tomita@cpan.org>

    Feedback

    はてなブックマーク livedoorクリップ Yahoo!ブックマーク del.ico.us use Acme::Bleach;

    Trackback

    url: http://e8y.net/mt/mt-tb.cgi/169

    Comments