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