「モダン Perl 入門」の入門
とりあえずメモ程度にー。
School Guardian をモダン Perl でつくったよ。
使いたかった技術
- CataMoose
- API
- Web::Scraper
- TheSchwartz
- local::lib
local::lib で運用することで、5.7 と 5.8 を共存させたかった。
Catalyst を継承して App を作ることをしない。
$c (Context) を汚染するので Plugin はなるべくつかわない。
でも、ログインとセッション関連だけ Plugin つかったよ。
API 化までの試行錯誤
Controller にロジックを書くと見通しが悪いよね。
Model::Adaptor で1つ1つマッピングするのは大変。
Model::MultiAdaptor でいっきにマッピングするとカンタン。
Model の分離はできたけれど API の中身がごちゃごちゃになった。。。
そもそも API って何?
Wikipedia にも具体的には載ってない。
どうやら自分たちで決めていいみたいだ。
なんでぐちゃぐちゃなのか?
ロジックを書いている部分が Model から API に移動しただけじゃないか。
Web アプリは DB の呼び出しが多い。
DB処理と一連の処理の流れ、ビジネスロジックを整理すれば見通しがよくなるのでは?
CRUD の処理もビジネスロジックも 1API にしよう。
結果
API::Data クラス
- DB 接続
- SQL 発行
子クラスで CRUD 処理を書いてある。コネクションプーリングとかやっている。
子クラスはテーブル毎につくるやり方が(結果として)よかった。
必ず API::Data を通して CRUD 処理を発行するルールをつくった。
(DBIC の search とかを直接さわらせない)
API::Logic クラス
API クラス