アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » DEVELOPER STAGE » 連載 » モダンPerlの世界へようこそ » 第11回 Devel::Declare:醜い部分を隠すための工夫あれこれ

モダンPerlの世界へようこそ

第11回 Devel::Declare:醜い部分を隠すための工夫あれこれ

Perl界を牽引しているのはやはりネットまわり

Perlの世界でいま何が起こっているかを調べるには,最近どんなCPANモジュールが更新されているかを追いかけてみるのが簡単です。筆者も日頃からCPAN検索サイト更新情報や,typesterこと村瀬大輔氏のCPAN Recent Changesのフィードを読んでいますが,ここでは日頃みなさんもおそらく肌で感じているであろう傾向を具体的な数字に落とすために,cpan-uploadsという,CPANにアップロードされたファイルの情報が流れてくる受信専用のメーリングリストを利用して,この1年間にどのような名前のモジュールがアップロードされたかをまとめてみました。

このリストによると,2008年7月から2009年6月までの1年間にアップロードされたファイルの数は27,009個。そのファイル名(ディストリビューション名)を整理・分解して,共通の名前空間に属するものを出現回数順にまとめると,上位10傑はこのようになります。

 回数名前空間
1905Net
2614Catalyst
3532POE
4515WWW
5493Test
6434App
7401POE-Component
8369HTML
9355Data
10351MooseX

ひとつでもバグが見つかったら修正版をCPANにアップロードするという人もいれば,「不安定で実用に耐えない」という悪評が立たないように更新頻度を調整している人もいますから,出現回数が多いからといってかならずしも人気のある,重要な名前空間とは限りませんが,これを見る限り,やはりいまのPerl界はインターネットがらみ,特にCatalystの勢力が強いのがわかりますし,この連載ではまだ取り上げていませんが,20世紀のPerl界を締めくくる一大プロジェクトとなったPOEの堅調ぶりや,CPANモジュールの品質を支えるTest系モジュールの充実,以前取り上げたMooseの成長などもうかがえます。

ハック系のモジュールも毎日のように更新されています

ここまでは予想通りの結果といってよいのですが,興味深いのはその次,11位から20位までのリストです。

 回数名前空間
11318XML
12262Padre
13257DBIx
14252Class
15249Devel
16242Acme
17241CGI
18241Text
19231CPAN
20226Parse

12位のPadreは最近活発に開発が続けられているPerl製のIDE。16位のAcmeはいわゆる「ネタ」系のモジュールを入れておく名前空間なのですが,ここで筆者の目を引いたのは15位にランクインしたDevelという名前空間。

これは,1996年リリースのPerl 5.002で導入されたDevel::SelfStubberを筆頭に,2000年に初お目見えした5.6系列でコア入りしたDevel::DProfDevel::Peek,2002年の5.007003でコア入りしたDevel::PPPortなど,もともとはかなり高度な開発者向けのツールを入れておく名前空間でした。

典型的なDevel系モジュールであれば,perlコマンドの-dスイッチといっしょに使うと「Devel::」という名前空間を省略できる,という特徴があるくらいPerlの内部に密着した名前空間ですから(たとえば2008年に登場して新たな定番となりつつあるDevel::NYTProfというプロファイラであれば,「perl -d:NYTProf <プロファイルを取りたいスクリプト>」という形で実行できます),ふつうに考えれば2日に1回以上のハイペースで更新があるような場所ではないのですが,この数年は,従来のデバッグや開発支援といった分野だけでなく,前回話題にしたMooseX::Declareの背後にあるDevel::Declareなど,近年のモダンPerl界を特徴づける技術を支える黒魔術的なモジュールを入れておく場所としても活況を呈している様子がうかがえます。

もっとも,活況を呈しているのはDevelだけではありません。そのつもりで見ていくと,たとえば63位(年79回更新)には,Bという,Perl 5.10系列ではコアから外されてしまったPerlコンパイラ関連の名前空間が登場しますし,87位(62回更新)にはSubという,サブルーチン/メソッドまわりの名前空間が登場します。14位のClassや,62位(81回更新)のObjectといった名前空間のなかにもよりよい書き方を実現するためのツールが登録されていますから,均してしまえばそれこそ毎日ひとつやふたつはこの手のモジュールが目に入る,といってよいでしょう。

このようなモジュールはPerl内部の詳しい知識がないと使いこなせないものも少なくないので,なかなか日常業務のなかで取り入れるところまではいかないものですが,今回はそれぞれの名前空間からいくつか,話のネタになりそうなモジュールをピックアップしていきたいと思います。

モダン世代のソースフィルタ

Perlには1996年リリースのPerl 5.002からソースフィルタ用のAPIが組み込まれています。これは,もともとは(おもにソースコードを保護するために)圧縮・暗号化したファイルを動的に展開してコードを実行するために用意されたものなのですが(詳しくはPerlに同梱されているperlfilter.podをご覧ください),2000年にPerl 6の議論が始まってからはもっぱら理想的な書き方をPerl 5のコードに変換するためのツールとして使われるようになりました。古くからのPerlユーザであれば,宮川達彦氏が2001年に書いたFilter::Pyuutaというモジュールを思い出す方も少なくないでしょう。伊藤直也氏が以前紹介していたClass::HPLOOPerl6::Classesといったモジュールもソースフィルタを使ってPerl5らしからぬ表記を可能にしていました(いずれも2003年リリース)。

比較的モダンに近いところでは,インギー・ドット・ネット(Ingy döt Net)氏が2005年にリリースしたTest::Baseなどの裏で使われているSpiffy(こちらは2004年リリース)がソースフィルタを活用していることで知られています。

ただ,このようなソースフィルタは,ソースコードを先頭から末尾まで一律に修正してしまうため,実装によっては本来壊してはいけないコードやデータまで汚染してしまうこともありました。

この問題を解決するため,ソースフィルタ用のAPIに手を加えて,ソースコードをパースしながらフィルタリングできるようにしたのが,2007年に開発が始まったDevel::Declareです。

その詳細についてはPODをご覧いただくとして,これもまた影響範囲をなるべく局所化しようという大きな流れの中に位置づけられるもの。いまでは前回紹介したMooseX::Declareだけでなく,Method::SignaturesTryCatchといったモダンなモジュールの裏方としても利用されています。

著者プロフィール

石垣憲一(いしがきけんいち)

あるときは翻訳家。あるときはPerlプログラマ。先日『カクテルホントのうんちく話』(柴田書店)を上梓。最新刊は『ガリア戦記』(平凡社ライブラリー)。

URLhttp://d.hatena.ne.jp/charsbar/

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス