Hatena::ブログ(Diary)

日記的な

2011-10-19

[]YAPC::Asia 2011の感想 次期Perl

日本でのPerl最大級のイベント「YAPC::Asia 2011」に行ってきました!

今更ざっと書いてもしょうがないと思うので、私が以前からずっと気になった点を1つ2つ局所的に書いてみようと思います。


Jesse Vincent 氏 の Perl 5.16 and beyond

f:id:masakyst:20111019135822j:image:left

スライド

http://yapcasia.org/2011/talk/96


もう初っぱなから、私的にクライマックスになってました。

今回のYAPC::Asiaの内容に限らず、現時点の「Perl」に対して、一番気になっていた内容でした。というのは、既にPerl6がコミュニティからあまり受けが良くないようで「次期Perl」という立ち位置すら失ってしまってから、個人的には今まで、Perlの未来が見えていませんでした。


私はPerl6に過剰に期待していた事もあって、結構最近まで、悲しい気持ちであったのを覚えています。折角Larry含め、みんな頑張っていたのですしおすし


...。


でまあ、トークの内容に話を戻すと、Perl6はひとまず置いておいて、Perl5がその系譜のまま進化していくのが、ハッキリと見える内容でした。

大きなポイントをいくつか...、


useのセマンティクスを変える

以降のuseの挙動は、指定されたバージョンのランタイムで実行するという事でした。単一バイナリで複数のランタイムを切り替えられるような仕組みですね。後方互換を、コアチームが最大限重視している事が、よくわかりましたし、長くプログラムを運用していくにあたって、大変ありがたい大きな進化だと思います。


Perlコアを小さく

コアから極力不要な機能*1 を削ぎ落した小さなPerlと、十分な機能をバンドルしたPerl、の2系統用意していく、という事です。

というのは、以後のPerlは、あらゆるOSだけでなく、あらゆるVM、あらゆる電話機やあらゆるブラウザの上で動作するよう目指していく、という性質上の理由からだと思います。Perlが普通に、スマホブラウザ上で動作する日が来る、と言うことを想像するだけでも、ファンタスティックですね!


simpleなMOPがビルトイン

Mooseという、素晴らしいクラスビルダーが出来てから数年経ちました。Mooseを知った当時、Mooseのsyntaxは、RubyPythonOOP的な意味で引けを取っていた部分を覆す、Perlらしい進化を見たような感覚を持ったのを覚えています。(Mooseはビルトインされる、と思っていた時期が僕にもありました...)

が、それから数年たった今、Mooseはあまりの高機能さゆえ、ビルドするにも、依存やテストが多く、あまり好んで使われなくなってきたように思います。個人的にも、Moose依存したライブラリは少し躊躇してしまいます。Catalyst以外は。

Mooseの不満点を改善しようと、Mouseを筆頭に、Moo、Mo, M *2含め、さらにクラスビルダーは混沌としていく一方な気がしていました。まさにCommon LISP的なイメージ の様に。*3しかし以降は、現在のblessed hashベースのクラス定義はデフォルトでoffになり、新しいsimple-MOPがデフォルトになるという事は、 この混沌から一気に解放されるのでは!と、今から楽しみでしょうがありません。


以上、Jesse Vincent 氏の発表は、全て興味深く、現在のPerl5の問題の多くを解消し、全体的に見て「次期Perl」を感じられるような、進化をしていく事がはっきりわかる内容だと思います。

Perl6、Perl7 ... どう系統が流れていくかは、はまだわからない事だと思いますが、少なくとも、Perl5は、もはやRuby1.9(2.0), Python3 ...に勝るとも劣らないものになっていくのは、間違いないでしょう。


...という事で、YAPCに参加すると、素晴らしい技術的なトークの他、今後の動向も詳しく分かったりするので、是非、もっとみんな参加すると良いと思います。また、プログラマーだけでなく、Webデザイナーの方が見ても、楽し/参考になるイベントだと思います。毎年楽しみに待っているので、早くも来年の動向が楽しみですね!

スピーカー、スタッフ、JPA、スポンサー、皆様、ありがとうございました!

(画像提供元 Japan Perl Association[JPA])

*1
SysV用のIPC関数
SocketIO用の関数
Unixユーザ/グループ情報用の関数
Unixネットワーク情報用の関数
プロセス/プロセスグループ用の関数
フォーマット
スマートマッチ(w

*2:Mはネタですね!

*3:2日目LTの深町英太郎さん「PerlCommon LispPerl」の様に。爆笑しました!