2007年12月17日月曜日

Sledgeベース開発で学んだこと

今日はperlの話です。

自社のASPサービスであるコムログというブログエンジン開発をsledgeフレームワーク上で開発を行っていました。というのは現在、コムログは社員全員で開発するようになり、自社開発されたHiveというフレームワークとこれまた自社開発されたO/Rマッパーで開発されており、一層の機能拡大を行っているので今はSledgeあまりやっていません。

そこでCatalystを勉強していくにあたって過去を振り返ってみようと思います。

CatalystなどをみてるとSledgeは過去の産物のようなイメージになってしまいがちですが、とてもシンプルで規則ただしく初心者だった自分としてはperlでのweb開発する際のベストプラクティスを提供してくれていたと思います。

自分はまだCatalystのCも読めていない乗り遅れ者ですが、Sledge+CDBI開発の知識がいかせればなと思いますね。

さて、sledge開発といえばMVC(model,view,control)= (CDBI or Original Model,TT,Sledge)などを利用した開発になるのですが、設計者によって認識の違いはあるか、もしくは書籍などとは違うかもしれないが、これらの意味を自分の経験上から説明すると。

 ここでのmodelとは物、者、マネージャーオブジェクトやデーターベースアクセスオブジェクト、外部へのアクセスを管理するオブジェクトだったりテンプレートへ上で表現豊かにしてくれるオブジェクト、テンプレート上で汎用性を提供するオブジェクトなど、ビューやコントロール上で専門の仕事を請け負ってくれる者たちです。

コントローラーはモデルであるセッションマネージャーにコンテキスト(その状態を表す構造体またはオブジェクト)を渡しモデルを操作したり、リクエストなどのイベント時にモデルのスキームを提供する。

ビューはそのものずばり、見た目を機械的に制御したり、デザインなどの汎用性を高めてくれたりと見た目を専門に扱うフレームワークのようなものです。

ブログエンジンを作成する上で必要になったモデルは
  • 無数のコンフィグを管理するモデル(リクエストや状態によって必要なコンフィグを探し、アクセサ、抽象コンフィグ項目を提供するのでコンフィグのアクセスに対するレスポンスを保証します)
  • 書き出しパスを管理(望まれる書き出しページリストを作成し、そのキャッシュ化・実行の管理を提供する)
  • 書き出しを管理(ディレクトリー自動作成など書き出しをスムーズに実行できることを保証します)
  • セキュリティーを管理(CSRF防止などセキュリティーを保証します)
  • 絵文字変換を管理(主にViewから呼び出され、どのキャリアからの絵文字データをも統一させ、それぞれにマッチした出力を保証します)
  • 自動実行に対するリソースを管理(非同期でもいい処理はデーモンによるリソースの整列化をすることにより自動処理上でのサーバーの安定性を保証する)
  • メール送信を管理(メール作成ユーティリティーやメール情報の未登録への保証)
  • などなど

こんな感じですね。
細かいのはまだまだありますが、初期はこんなモデル形成になっていました。今のコムログはまた違うけど。
クラス図なんてのがあればいいのですが、クラスの変更がかなりおこなわれているので昔作成したクラス図とはまたぜんぜん違うものになっていました(泣;;。

なんかほぼ設計の話になってしまいましたね。そろそろ自宅へ帰宅したいので今日はこの辺にしておきます。

0 件のコメント: