Maypole Tasting Notesの感想文

http://maypole.perl.org/?About
こうやって進化してきたのだなあと思った。
DBがあって、WebからそこにデータをポストするためにCGIを使う。

  1. フォームを表示
  2. データをチェック
  3. エラーだったらフォームの値を引き継いでチェック結果を表示
  4. OKならデータをDBに格納

とかやる。データは違ってもやることはだいたい一緒だ。すごく退屈でめんどくさいだけ。
そこで値のチェックを楽にとか、DBへのアクセスを楽にとかする方向に進化する。
そういうモジュールがいっぱいできて、それをまとめるためにフレームワークが誕生する。
なるほど。
この進化は頭だけでなくて身体で理解できた気がした。
というのは、こういう処理をなんとかやらないで済ませたいと考えていたから。
でもこの道はかつて先人たちの通った道なのだなあと。
こういう基本的なことの上に今あるものがあるのだなあと。

    • -

で、Maypoleだ。

  1. コントローラはApachemod_perlハンドラを使う。Apache::MVCを継承
  2. ベースURLとかを設定
  3. 値チェック用にデータの期待値を設定。Class::DBI::FromCGI
  4. クラス(テーブル)間の関係を定義。Class::DBIのhas_aとかhas_manyとか。またはClass::DBI::Loader::Relationship
  5. apacheの設定ファイル
  6. HTMLを書く。Template ToolkitMaypole::View::TT、factoryにMaypoleが作ったファイル、customに自分が作ったファイル

で、テーブル内容をページャ付きで表示したり関連テーブルの内容を表示したり、データを追加したり編集したり削除したりできる。らしい。テーブルが複雑になると対応できなそう。

    • -

Class::DBI::Loader - Dynamic definition of Class::DBI sub classes. - metacpan.org
Class::DBI::Loader::Relationship - Easier relationship specification in CDBI::L - metacpan.org
Class::DBI::FromCGI - Update Class::DBI data using CGI::Untaint - metacpan.org
CGI::Untaint - process CGI input parameters - metacpan.org
CGI::Untaint::upload - receive a file upload - metacpan.org