![]() | |
| 原作者 | セバスチャン・リーデル |
|---|---|
| 安定版リリース | 5.90131 / 2023年7月20日[1] |
| 書かれた | パール |
| タイプ | Web アプリケーション フレームワーク |
| ライセンス | PALとGPL |
| Webサイト | http://catalyst.perl.org/ |
Catalyst は、 Perlで書かれたオープンソースの Web アプリケーション フレームワークです。モデル - ビュー - コントローラ(MVC) アーキテクチャに厳密に従い、いくつかの実験的な Web パターンをサポートしています。Perl の最新のオブジェクト システムであるMoose を使用して書かれています。その設計は、 Ruby on Rails、Maypole、Springなどのフレームワークから大きな影響を受けています。
Catalyst は、Web アプリケーション開発者がすべての Web アプリケーションに共通するコードを処理するために使用できます。ページ リクエストを受信し、開発者が記述したコードにページ リクエストをディスパッチして処理し、リクエストを返すためのインターフェイスを提供します。Catalyst は、データ モデル、認証、セッション管理、およびその他の一般的な Web アプリケーション要素用の標準化されたインターフェイスも提供します。
これらの要素はすべて、一連の共通インターフェースへのプラグインとして実装されており、開発者は、アプリケーション コードを変更することなく、Catalyst の設定を変更して別のプラグインを使用することで、使用される特定の方法 (たとえば、セッションを共有メモリに保存するかデータベース テーブルとして保存するか、FastCGI を使用するか Apache の mod_perl 内で操作するかなど) を変更できます。
Catalyst は主に、Perl ライブラリとアプリケーションの公式配布チャネルである CPANを通じて配布されます。
歴史
Maypole は、 MVCパターンに基づいた Perl プログラミング言語の最初の Web アプリケーション フレームワークの 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 は、「同じことを繰り返さない」(DRY) 原則に基づいています。つまり、定義は 1 回だけ行う必要があります。Catalyst は、多数のローダー モジュールの 1 つを介してデータベースからクラスを自動的にロードする機能を備えているため、データベース レイヤーのコードは必要ありません。ただし、すべてを手動で行う柔軟性が必要な場合は、それも選択肢になります。Catalyst のもう 1 つの基本原則は柔軟性です。
Catalyst は、一般的な Web アプリケーションの問題をすでに適切に処理している既存の Perl モジュールの再利用を促進します。
- モデル部分は、 DBIx::Class、Plucene、Net::LDAPなどのモデル クラスを通じて処理されます。
- ビュー層は通常、Template Toolkit、Mason、HTML::Templateなどによって処理されます。
- コントローラ層は、もちろん各アプリケーション作成者によって作成されます。コントローラ機能の大部分は、通常、多数の Catalyst プラグイン (Catalyst::Plugin::FormValidator、Catalyst::Plugin::Prototype、Catalyst::Plugin::Account::AutoDiscovery など) のいずれかに委ねることができます。
- 最後に、Catalyst は、フロー制御と URL のコントローラー メソッドへのマッピングを簡素化する一連のヘルパーを提供します。
Catalystには、幅広いプラグインの選択肢があります。[7]たとえば、Catalyst::Plugin::Prototypeモジュール(prototypeはAjaxフレームワーク)を使用して、 AjaxとRIA用のJavaScriptを生成します。プラグインは、認証、セッション管理、HTTPネゴシエーション、RESTなど、多くの領域をカバーしています。
Catalyst は、jQueryやYUI (Yahoo!ユーザー インターフェイス ライブラリ)などの他の Ajax フレームワークでも使用できます。
Webサーバーのサポート
開発とテスト用に、Catalyst にはシンプルな HTTP サーバーが組み込まれています。実稼働環境での使用には、FastCGIまたはmod_perlをサポートするApache、lighttpd、Hiawatha、Cherokee、またはNginxが推奨されますが、CGI または FastCGI をサポートする任意の Web サーバーでも動作します。Apache では、 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]
参照
参考文献
- ディメント、キエレン。Catalyst の決定版ガイド。Apress。ISBN 978-1-4302-2365-8. 2009年9月17日時点のオリジナルよりアーカイブ。2009年9月9日閲覧。
- ^ 「CPAN モジュール リリース」。Catalyst。2024年8 月 15 日閲覧。
- ^ Simon Cozens (2004 年 4 月 22 日)。「Maypole による Web アプリケーションの迅速な展開」Perl。
- ^ Catalyst決定版ガイド。Apress 2009年9月。p. 2。ISBN 978-1430223658。
- ^ 「メイポール」CPAN。
- ^ 「Catalyst Changes ファイル」 。2018年8 月 8 日閲覧。
- ^ 「Catalyst Framework - Contributors」。Ohloh 。2011年6月6日閲覧。
- ^ 「"Catalyst::Plugin::" を検索 - metacpan.org」。metacpan.org 。 2018年8月8日閲覧。
- ^ 「Catalyst::Engine::HTTP::Prefork - 高性能なプリフォークCatalystエンジン - metacpan.org」。metacpan.org 。 2018年8月8日閲覧。
- ^ 「Catalyst::Model::KiokuDB - Catalyst アプリで KiokuDB を使用する - metacpan.org」。metacpan.org 。 2018 年8 月 8 日閲覧。
- ^ 「Catalyst::Model::Adaptor - プレーンクラスをCatalystモデルとして使用する - metacpan.org」。metacpan.org 。 2018年8月8日閲覧。
- ^ 「Catalyst/DBIC/eCommerce 開発者求人」募集中。2011 年 5 月 8 日。2011 年 5 月 13 日時点のオリジナルよりアーカイブ。2011年6 月 6 日閲覧。
- ^ 「BBC の iPlayer は Perl ソフトウェア スタック (Catalyst を含む) を搭載しています」。
- ^ Diment, Kieren; Trout, Matt S (2009). 「Catalyst Cookbook」. Catalyst の決定版ガイド. Apress. pp. 278– 281. ISBN 978-1-4302-2365-8。
- ^ 「Perl/Catalyst を搭載したウェブ上の最大のポルノサイト YouPorn (Alexa のトップ 50)」。reddit。
- ^ 「YouPorn ソフトウェア スタックはもともと Perl + Mysql で書かれていました」。
外部リンク
- 公式サイトのアーカイブ[盗用]
- Catalyst ウィキ
- CPAN の Catalyst

