Perl で非同期なイベントベースアプリケーションの開発をしようとした場合、これまでは POE を使用するのが一般的でした。
しかし最近ではこの POE に代わり、AnyEvent というフレームワークの人気が急速に高まっています。

AnyEvent は POE と比べて綺麗にコーディングすることができるイベントベースプログラミングのフレームワークというだけでなく、Coroなどと組み合わせることでより高レベルな非同期アプリケーションを書くことも可能であるといったことが人気の理由なのかもしれません。

さて、今回は弊社内部で使用するために開発した AnyEvent モジュールを三本セットで公開します。

1. AnyEvent::APNS
2. AnyEvent::JSONRPC::Lite
3. AnyEvent::Gearman

順番に説明していきます。

1. AnyEvent::APNS
http://search.cpan.org/dist/AnyEvent-APNS/

これは、iPhone の Push Notification の provider として動作する AnyEvent モジュールです。
このモジュールを使用すると、perl から簡単に Push Notification を送信することができます。

2. AnyEvent::JSONRPC::Lite
http://search.cpan.org/dist/AnyEvent-JSONRPC-Lite/

JSONRPCのサーバー・クライアントを実装できるモジュールです。
外部とのアプリケーションとの連携(たとえば Catalyst
アプリケーションとのやりとりなど)このモジュールを使用すると簡単に相互にデータのやりとりをすることが可能です。
また、通常の同期アプリケーション内からこの AnyEvent::JSONRPC::Lite のサーバーへつなぎたい場合は、
二年前に公開した JSONRPC::Transport::TCP を使用するのがお手軽です。

3. AnyEvent::Gearman
http://search.cpan.org/dist/AnyEvent-Gearman/

イベントベースアプリケーションの中ではブロッキングしてしまう長い処理を入れることはできません。
そのような場合、Gearman などのジョブキューシステムを使用してその処理を外部に出すと言うことをします。
このモジュールは AnyEvent から Gearman を使用することができるようにするモジュールです。