CatalystはPerlで書かれたオープンソースの ウェブアプリケーションフレームワークです。モデル・ビュー・コントローラ(MVC)アーキテクチャに厳密に準拠し、数多くの実験的なウェブパターンをサポートしています。Perlの最新のオブジェクトシステムであるMooseを使用して記述されています。その設計は、 Ruby on Rails、Maypole、Springなどのフレームワークから大きく影響を受けています。
Catalystは、Webアプリケーション開発者があらゆるWebアプリケーションに共通するコードを処理するために使用できます。ページリクエストの受信、開発者が記述した処理コードへのページリクエストのディスパッチ、そしてリクエストの返却を行うためのインターフェースを提供します。また、データモデル、認証、セッション管理、その他一般的なWebアプリケーション要素のための標準化されたインターフェースも提供します。
これらの要素はすべて、一連の共通インターフェースへのプラグインとして実装されており、開発者は、アプリケーション コードを変更することなく、異なるプラグインを使用するように Catalyst の設定を変更することで、使用される特定の方法 (セッションを共有メモリに保存するかデータベース テーブルとして保存するか、FastCGIを使用するか Apache の mod_perl 内で操作するかなど) を変更できます。
Catalyst は主に、Perl ライブラリおよびアプリケーションの公式配布チャネルである CPANを通じて配布されます。
Maypoleは、 MVCパターンに基づいたPerlプログラミング言語用の最初のウェブアプリケーションフレームワークの1つであり、主な作者はSimon Cozensでした。[2] CatalystはMaypoleのフォークとして始まり、Maypole 3.0となる予定でした。[3]しかし、2008年4月の最新リリースをもってMaypoleの開発は終了し、[4] Catalystが最新のサポート付き同等のものとなりました。
Catalystの最初の開発リリースは2005年1月28日に行われました。最初の公式バージョンは2005年2月16日にCPANで公開されました。[5] 2011年6月現在、Catalystには201人の貢献者が登録されています。[6]
Catalystは「 Don't Repeat Yourself(同じことを繰り返さない)」(DRY)原則に基づいています。これは、定義は一度だけで済むことを意味します。Catalystは、多数のローダーモジュールのいずれかを介してデータベースからクラスを自動的にロードできるため、データベース層のコードは必要ありません。しかし、すべてを手動で行う柔軟性が必要な場合は、それも選択肢となります。Catalystのもう一つの指針は柔軟性です。
Catalyst は、一般的な Web アプリケーションの問題を適切に処理する既存の Perl モジュールの再利用を促進します。
Catalystには豊富なプラグインが用意されています。[7]例えば、Catalyst::Plugin::Prototypeモジュール(prototypeはAjaxフレームワーク)を用いたAjaxおよびRIA用のJavaScript生成機能があります。プラグインは、認証、セッション管理、HTTPネゴシエーション、RESTなど、様々な分野をカバーしています。
Catalyst は、jQueryやYUI (Yahoo!ユーザー インターフェース ライブラリ)などの他の Ajax フレームワークでも使用できます。
開発とテスト用に、Catalyst にはシンプルな HTTP サーバーが組み込まれています。本番環境では、FastCGIまたはmod_perlをサポートするApache、lighttpd、Hiawatha、Cherokee 、またはNginxが推奨されますが、CGI または FastCGI をサポートする Web サーバーであればどれでも動作します。Apache では mod_perl を使用するとパフォーマンスが大幅に向上しますが、mod_perl 環境で複数のアプリケーションを共有するのは安全ではないため、mod_perl の使用には問題が生じる可能性があります。
2008年初頭以降、CatalystアプリケーションはHTTP::Preforkエンジン[8]を使用してデプロイできるようになりました。これにより、別のWebサーバーを必要とせずに高性能なCatalystアプリケーションをデプロイできます。Catalyst 5.9のリリース以降、CatalystはPSGI仕様にも出力するため、任意のPlackサーバー上で実行でき、 Mongrel2を含むPSGI仕様をサポートする任意のサーバーやプロトコルと連携できます。
Catalystは、PerlのDBIがサポートするあらゆるデータベース( CSVファイルも含むほぼすべてのデータベース)で実行できますが、適切なRDBMSまたはODBMSの使用が推奨されます。データベースアクセスはプログラマの観点から完全に抽象化されており、Catalystはモデルクラスの1つを通じてすべてのデータベースへのアクセスを自動的に処理します。ただし、必要に応じて直接SQLクエリを使用することも可能です。これにより、データベース中立性、異なるデータベースシステム間でのアプリケーションの移植性、そしてCatalystアプリケーション開発における既存データベースの最大限の利便性が実現されます。ただし、RDBMSの機能セットが異なるため、フレームワークだけでは完全には保証されません。MySQL 、PostgreSQL、SQLite、IBM Db2 、 Oracle 、 Microsoft SQL Serverなど、複数のRDBMSシステムがサポートされています。ODBMSについては、Catalyst::Model::KiokuDBを介してKiokuDBが明示的にサポートされています。[9] Model抽象化により、 Catalyst::Model::Adaptorを介してあらゆる種類のデータベースにアクセスできます。[10]
多くの Catalyst ベースのプロジェクトでは、 ORM レイヤーとしてDBIx::Class を使用しています。これは、任意の結合やその他の機能を透過的にサポートする結果セット ベースの API を使用して、SQL クエリをさらに抽象化します。
Catalystを採用しているウェブサイトには、Magazines.com、[11]、 bbc.co.ukのiPlayerバックエンド、[12]、 DuckDuckGoのコミュニティプラットフォーム、http://flexibase.io、Tripwolf.comなどがあります。MojoMojoのWikiエンジンはCatalystを使用して開発されています。[13]
YouPornは2012年までCatalyst [14]によって運営されていました。[15]