原文は The evolution of Perl frameworks

Perlフレームワークの進化

西暦2006年、Perl製Webフレームワークの土俵では重量級のCatalystと軽量級のCGI::Applicationが戦っていた。その後、Perl製フレームワークの選択肢は進化を遂げた。CGI::ApplicationとCatalystは共に人気を保っているものの、最近では新たな選択肢もいくつか登場した。以下でザッと説明しよう。

Titanium
CGI::Applicationにお勧めのプラグイン集と統一されたドキュメントがバンドルされたもので、インストールは比較的簡単である
ベースとなっているコンポーネントは既に使われている安定したもので、改名してあるものの、安心かつ安定して使えるものである
将来、より簡単にインストールできるように、依存関係チェーンを盛り込んだパッケージダウンロードの仕組みが提供される予定である
HTTP::Engine
Catalystに見られるようなHTTPリクエストオブジェクトをMooseをベースで発展させたもの
Webアプリケーションを様々なサーバーバックエンド上で動作させるための抽象化を取り入れている
手短かに言うと、Webフレームワーク中のHTTP部分にフォーカスしたものである
MojoとMojolicious
Catalystの初期コントリビューターの一人であるSebastian Riedel氏率いるプロジェクトを代表するもの
Mojoは"core Perl"に依存しないという特色がある
MojoはHTTP::Engineのような低レベルなHTTPコンポーネントを提供している
一方のMojoliciousは、Mojo上に一つの完成したフレームを構築可能なことを示すものである
Mojoliciousの特徴的な機能として、目新しいディスパッチの設計があるが、これはRuby on Railsの"Routes"の精神に基づいている
私の見る最近のトレンド
共通基盤
Perlフレームワークが高レベルなところで歩み続ける一方で、私たちは引き続き、有用なモジュールを共有することで協力していく
たとえばHTTP::FillInFormやData::FormValidatorのようなプロジェクトは、いくつかのフレームワークで使われているが、再発明されることはない。
CGI.pm死すべし
私たちが同じモジュールを共有する一方、HTTP::EngineとCatalystとMojoは全て固有のHTTPリクエストオブジェクトを考案しており、それらがCGI.pmの機能を置き換えている。
そこには明らかに、CGI名前空間内に172のサブルーチンを詰め込んだ定番モジュールを越えた利益がある。
(この点に関してCGI::Applicationは中立的な立場を維持しており、クエリーオブジェクトをアウトソーシングしている)
収束の可能性
CGI::ApplicationとCatalystではPluginの多くがかなり類似しているものの互換性は無い。これらはオープンソースなので、通常あるフレームワークから別のものへ移植することは簡単ではあるが、それは望ましいことでは無い。
HTTP::EngineとMojoは共に「フレームワークのためのフレームワーク」のようなものである。
軽量なフレームワークあるいは際立ったフレームワークを使いたがるプログラマー達には人目を引くような経験をもたらすとはいえ、私が思うに、プロジェクトにとっての将来性は、どちらかのバックエンドを使うということで落ち着くだろう。
結果、それは広くPerlコミュニティにとって有益な"web framework plugins"ということになるだろう

Mark Stosberg氏は10年以上の間、WebプログラミングにPerlを使い続けてきました。氏はSummersaultにおける開発の主役であり、TitaniumやData::FormValidatorを含むいくつかのCPANモジュールのメンテナーでもあります。

Comments (0)