2007-05-11
Catalyst-Plugin-CRUD (1)
Perl |
これから数回にわけて Catalyst::Plugin::CRUD の紹介をしていきたいと思います。
概要
Catalyst::Plugin::CRUD は Catalyst ベースのフレームワーク(もどき)です。データベースを使ってデータを「新規作成・詳細参照・更新・削除・一覧参照」するアプリケーションを劇的な速さで作成することができます。CRUD は create, read, update, delete の略です。弊社の社内で使っているフレームワークのよいところを抜き出し、悪いところを改善させたオープンソースフレームワークで、私がメンテナンスしています。
弊社のフレームワークのよいところは
- 複雑になりすぎた親コントローラを超シンプルに書き直しました
- 親コントローラの継承を委譲にすることでメモリ量を劇的に減らし、起動時間を劇的に短くしました
- 複雑になりすぎた親ビューをばっさり捨てて Template::Toolkit や ClearSilver を使うようにしました
- 親モデルはやめてローダーで自動的にモデルを読み込むようにしました(DRY)
- モデルへの操作を抽象化し、できる限り特定のモデルに依存しないようにしています
- できる限りビューに依存しないようにしています
- Template::Toolkit と ClearSilver を両サポートしようと思ったら必然的にそうなります
結果として本当に必要なビジネスロジック部分だけに注力すればすむようになりました。
現在はこのフレームワークを使って段々大きなアプリケーションを作っている最中で、大きなアプリケーションを組むときに足りない機能を随時足していく、ボトムアップ開発をしています。
TODO
-
ポップアップ系に Widget.Dialog を使うようにする-
IE7対策
-
- Data::FormValidator でエラーチェック
- xxx_check はやめよう
- 一覧参照にモデルに依存しないページング機構を組み込む
-
DBIx::Class では対応完了(0.20)
-
- 複合モデル
- 複合アクション
クラス図
Catalyst::Plugin::CRUD は以下のような構成になっています。

注目してほしいのは、Catalyst::Plugin::CRUD::CDBI と Catalyst::Plugin::CRUD::DBIC 以外は継承ではなく、委譲を使っている点です。委譲を使うことで、使用するメモリー量を劇的に減らし、起動時間を劇的に短くします。コントローラが数個しかないときは何の問題もないのですが、エンタープライズアプリケーションでコントローラが200個くらいに増えると劇的に違いが出てきます。
コメントを書く
トラックバック - http://d.hatena.ne.jp/Bayside/20070511/p1
