新春特別企画

2011年のPerl

あけましておめでとうございます。今回は新春特別企画ということで、2010年のPerl界を振り返りつつ、2011年のPerl界がどうなっていくかを、予定と期待を織りまぜながら見ていきましょう。

Perl 5.14

2010年のYAPC::Asiaでジェシー・ヴィンセント(Jesse Vincent)氏が紹介されていたように、Perl 5は現在、2011年4月に予定されているPerl 5.14のリリースに向けて最後の仕上げをしているところです。Perl 5.14は2010年の開発成果をまとめた定期リリースなのでPerlの根幹をゆるがす大きな仕様変更はありませんが、Perl本体、コアモジュールともに細かなバグがいくつも修正されているほか、内部的にはさまざまな最適化が行われています。

一例を紹介しますと、Perl 5.14ではkeysやeach、あるいはpushやshiftのような、配列やハッシュを受け取るコア関数に配列やハッシュのリファレンスを渡せるようになります。具体的なコードでいうと、従来のPerlであればこのように書かなければならなかったのが、

for my $key (keys %{ $hashref || {} }) { ... }
push @{ $arrayref ||= [] }, $value;

Perl 5.14ではこのように書いても(リファレンスが未定義の場合まで含めて)期待通りの動作をするようになります。

for my $key (keys $hashref) { ... }
push $arrayref, $value;

新しい書き方ではコードが簡潔になるだけでなく、明示的なデリファレンスが不要になるため、実行速度も向上することが確認できています。あとは、Unicode 6.0対応をはじめとする文字コードまわりの改善や、正規表現の拡張、例外処理の信頼性向上といったあたりがPerl 5.14の目玉となりそうです。詳しくはPerl 5.13系列のperldelta(およびperl513*delta)ファイルなどをご覧ください。

移行の必要性は?

Perl 5.14は過去のPerlとのバイナリ互換性はありません。既存のPerlをPerl 5.14にした場合、Perlだけで書かれたモジュールやアプリケーションはそのまま利用できますが、XS/Cを利用しているモジュールについては再インストールが必要になります。DBIのように直接XSを利用しているモジュールはもちろんのこと、MooseやCatalystのように裏でXSベースのモジュールを利用しているものや、DateTimeやTemplate Toolkit、JSONのように高速化のためにXSも利用できるようになっているものなども正常に動作しなくなったり、挙動が変わったりすることがあるので、動作確認の意味でも、Perlバイナリを差し替えたときはCPANモジュールも一から全部入れ直しと思っておいたほうがよいでしょう。

ほとんどのCPANモジュールについてはCPAN Testersの努力によって5.14でも問題なく動作することが確認されていますが、古いモジュールやCPANにはないアプリケーションのなかには、最新の変更によってテストが通らなくなったり、期待通りの動作をしなくなっているものが残っているかもしれません。Perl 5.14への移行を検討している方は、4月に予定されている安定版のリリース前に一度開発版であるPerl 5.13系列をインストールしてお使いのモジュールやアプリケーションに不具合が出ないことを確認しておいてください。問題が見つかった場合、1月中に報告しておけば、5.14リリースまでに何らかの対応が入るかもしれません。

移行にはそれなりの手間と多少のリスクがあるので、比較的最近のPerlを使っていて特に問題を感じていないのであれば慌ててPerl 5.14に移行する必要はありませんが、2000年にリリースされたPerl 5.6系列(およびそれ以前のバージョン)については10年以上も前のPerlとして今後本格的にサポートが打ち切られていく可能性が高いですし、Perl 5.8系列でも比較的古いバージョンのものについては意図的に対応が打ち切られるものが出てきています。該当するバージョンのPerlをお使いの方は、この機会にぜひ移行を検討していただければと思います。

Perl 6

2010年にはPerl 6の新しい実行環境であるRakudo Starのリリースも始まりました。Rakudo Starはいまも活発に開発が続いているRakudoやParrotの現状をもっと多くの開発者に知ってもらい、適切なフィードバックを得られるようにするためのもので、未実装の部分や、速度的に難がある部分も残っていますが、Perl 6の基本を学ぶのに必要な機能はあらかた用意されています。Parrot、Rakudoともに毎月さまざまな改良が加えられていますので、興味のある方は過去の印象にとらわれず定期的に試してみていただければと思います(詳細はリリースノートや公式サイトの実装済みの機能一覧をご覧ください⁠⁠。

また、すでに登録は締め切られているようですが、2010年12月にはPerl 6のコーディングコンテストも始まりました。2010年1月14日までに「連鎖行列積の最適な計算法を探す」⁠ある点が多角形の内側に含まれるかどうかを判定」⁠ある整数が与えられた(複数の)整数の範囲に含まれるかどうかを判定」⁠石取りゲームで最後の石を取る」⁠2つの長い文字列に共通する最長の部分文字列を取得」という5つの課題を提出すると、もっともすぐれたコードを書いた人に100ユーロ相当の書籍が当たることになっています。景品はさておき、応募されたコードはコンテスト終了後に公開されるようなので、生きたサンプルを知りたい方は結果を楽しみにしていましょう。

日本語の情報はまだ限られていますが、Rakudo Starのリリースを受けて、国内でも有志による仕様読書会などの動きが見られるようになってきました。まだ完結はしていませんが、2010年末には日本語でPerl 6のAdvent Calendarを執筆する試みも行われています。Perl 6を使うにあたって必要最低限の情報はまとまっていますので、未見の方はあわせてご覧ください。また、Perl 6の公式サイトによれば、Perl 6関連の書籍もいくつか準備が進められているようです。

なお、既報の通り、Perl 6はPerl 5の後継者としてPerl 5にとってかわるものではなく、Perl 5とともに同じ時代を少しだけ違った生き方で生きる妹たちの総称です。Rakudo Starが出たからといってPerl 5の開発やサポートが終了することはありませんのでご安心ください。

CPANモジュール、アプリケーション

2010年には延べで1600人強の作者が22000件ほどのCPANモジュールを登録・更新しました。そのうち日本人とおぼしき方は100人弱、延べアップロード数は2100件ほどです。

この数字は2009年とほぼ同じで、それまでに比べれば順調に増加してはいるのですが、2006年のPlagger、2007年のCatalyst/DBIC、2008年のMoose、2009年のPlack/PSGIのように、この数年はなにかしらブームの核になるモジュール、アプリケーションがあったことを思うと、2010年はやや地味な印象を受ける年だったかもしれません。

もっとも、特筆に値するモジュールやアプリケーションがなかったかというとそんなことはなく、宮川達彦氏のApp::cpanminusやgugodこと劉康民氏のApp::perlbrewはこの1年で多くのユーザを獲得しましたし、藤吾郎(gfx)氏のText::Xslateや、YAPC::Asia後に松野徳大(tokuhirom)氏らが集まってつくったFurlなども、特定の分野では今後さらに注目を集めそうです。また、The Perl Foundationの肝いりでドキュメントの整備が行われていたMooseやMojoliciousも、それぞれバージョン1.0がリリースされました。Plack/PSGIも着実に浸透してきています。2010年のJPerl Advent Calendarでは自薦他薦あわせて100以上のモジュールが紹介されました。この分野に関しては2011年も間違いなくこれまでと同等かそれ以上に活発な活動が見られることでしょう。

ただし、CPANモジュールはあくまでも開発者のためのものであって、ごく一般的なコンピュータユーザにはほとんど無縁のものです。開発者の世界では多くの人がCPANのすばらしさを認めていますが、2010年12月に開催されたShibuya.pmテクニカルトーク#15などでも指摘があったように、Perlといえば昔風のCGIアプリケーションか、Movable Type、という認識もまだ根強く残っています。かつてPlaggerが一世を風靡していた頃には初心者向けの雑誌などにもしばしばPerlの話題がとりあげられていましたが、Perlの露出を高めるという点ではもう少し一般ユーザに向けたアプリケーションも出てきてほしいところです。この分野では長野雅広(kazeburo)氏のCloudForecastが2010年の注目株でしたが、2011年はどうなるでしょうか。

海外では2008年から開発が続いているPadreというPerl製の開発環境のほか、2010年にはSDLを使ったゲームアプリケーションなども登場しました。このSDLについては現在The Perl Foundationの助成金を受けてマニュアルが執筆されているところなので、今後の進展に注目したいところです。また、助成金という点では、Padreで使われているwxWidgetsのドキュメントも整備が進められているほか、長らく知る人ぞ知る存在に留まっていたPerlbalのマニュアルが2010年末に整備されました。いまは本家にマージされるのを待っている状態のようですが、こちらも今後普及に弾みがつくことが期待されます。

ウェブサイト

一般ユーザへの露出という意味では、Perl関連のウェブサイトについても触れておいた方がよいでしょうか。

CPAN本家のサイトをはじめ、Perl関連のウェブサイトにはいまもなお古めかしい印象を与えるものが少なくありませんが、最近のPerl界のPR活動の一環として、この1~2年でPerl本家のサイトを含めて多くのPerl関連サイトがリニューアルされました。また、2010年11月からはμεταCPANという新しいCPAN検索サイトの開発も進められています。これは見た目の改善だけでなく、APIを通じた再利用可能なメタデータとの連携という意味でも興味深いプロジェクトになっています。

国内ではCPANモジュールの最新情報が確認できるFrePANが登場したほか、2010年12月に開催されたShibuya.pmのイベントではMy Favorite Perl Modulesのリニューアルの話題も出ていました。先日githubに移行したperl-users.jpのように公開リポジトリでバージョン管理されているサイトも増えているので、気になる部分を見つけたらパッチを送るなりしていただければと思います。

コミュニティ

2010年はコミュニティ活動が目立った年でもありました。これまでも、最初のYAPC::Asiaが開催された2006年以降、毎年ひとつは新しいユーザグループが生まれていたのですが、2010年4月から6月にかけて国内9番目のユーザグループとしてHokkaido.pmが誕生したのをひとつのきっかけに、2010年10月のYAPC::Asiaでは特別企画として各地のユーザグループが一堂に会する機会が設けられ、YAPC::Asia終了後にはNagoya.pmとKamakura.pmが公式に登録されました。年末にはさらにHachioji.pmとSendai.pmがそれぞれ設立に向けて初会合を開いています。この傾向は今年も続いてほしいものですし、まだまだ続く余地はあると思います。身近にPerlのことを話せる人がいないとお悩みの方、まずは声をあげてみてはいかがでしょう。

また、既存のグループも、年4回のイベントをこなしたFukuoka.pmをはじめ、Shibuya.pm、Kansai.pm、Yokohama.pmがそれぞれ複数回のイベントを開催しましたし、地域別のユーザグループではありませんが、YAPC::Asiaで前夜祭と2日目の特別企画を担当したPerl Casualや、YAPCにかぎらずさまざまな裏方仕事をされていたJapan Perl Associationの活動も特筆に値するものだったと思います。旧年中はみなさまありがとうございました。本年もよろしくお願いいたします。

2011年に予定されているイベント

2011年も各地でさまざまなイベントが計画されています。現時点で筆者が把握している限り、国内では1月22日にHachioji.pmの会合が、2月中旬にはHokkaido.pmの4回目のイベントが開催される見込みです。また、Nagoya.pmでも春先にイベントを開催したい旨の発言がありました。

海外の情報もいくつか紹介しておきますと、まず、3月26日から27日にかけて台北でOSDC.TW 2011が開催されます。1時間のセッション、5分のライトニングトークとも締め切りは2011年1月15日となっていますので、興味のある方はお早めにご応募ください。また、2011年6月27日から29日にかけて開催されるYAPC::NA 2011のスピーカー募集は2011年3月24日まで、2011年7月25日から29日にかけて開催されるOSCONのスピーカー募集は2月7日まで。YAPC::Asiaの日程はまだわかりませんが、YAPC::Europe 2011は2011年8月15日から17日まで、YAPC::Russia 2011は2011年5月14日から15日に予定されています。その他のイベントについては、ACTのカンファレンス一覧や、The Perl Reviewのコミュニティイベントカレンダーをご覧ください。国内のPerl関連イベントについては筆者のほうでもカレンダーを用意してみました。抜け洩れや追加希望などありましたらご一報いただけると幸いです。

おすすめ記事

記事・ニュース一覧