Flex/AIRアプリのアーキテクチャ探索 その1
MVCモデルでアプリを組もうとして、Viewへのデータをどう送ろうかと調べようとして、イベント駆動とMVCをキーワードに検索してたら、MVCよりいいよみたいな感じで PAC や PluggableMVC というのを見かけた。
(ちなみにMVCではObserverパターンを使うので、Flexではデータバインドを使うことになりそう。[Bindable]タグやmx.binding.utils.BindingUtilsを使うことになるはず。でもViewとModelが相互作用しないかが心配だった。どちらからだけ操作するならまだいいけども)
ここでもFlexにPACはいいのではないだろうかと書いてある。
http://idm.s9.xrea.com/ratio/2007/08/14/000654.html
まずPACを検索してみたが、PACもPresentation-Control-Abstractionとコンポーネントを分けていてMVCに似ていて違いがよくわからない。
探してまず一番分かりやすかったのが、ここ。
MVCパターンとPACパターン
CocoaにはMVCよりもPACの方が合っている?
MVCは縦割りで3つに分けるけど、PACはシステムを”エージェント”で分けて階層構造を作ること(Controlで上下関係を結ぶ)、プラス、各エージェントをP/A/Cに分けるというアイディアのよう。
さらに見つけた以下の卒論はPAC理解にもってこいだった(元の場所はなくなってる)。
「PACパターンによるWebアプリケーション開発」(PDF)
これのいいとこは、デメリットも書いてあるところ。
まず、大規模向き、とのこと。コンポーネントベースだから小中規模の反復型にもいいはずとも書いてあるが。他のサイトにも不必要に手間がかかる可能性ありそうとあった。MVCではそうでもないのだろうか。まあ一度試してみよう。
次に分業。GUIもコンポーネント分割されるから確かにデザイナーはつらそう。が、今回は一人だからそんなの関係ない。
次にエージェント間の通信コスト。異なるマシンを使うわけでもインターネットを多用するわけでもない(ほぼクライアントで完結)から、これも問題ない。
PluggableMVCはほんの少し見たところコンポーネントの追加・削除に強いよう。MVCでやろうとした時に、動的にコンポーネント追加はできるのだろうか、何かしらインターフェースが必要だろうと思っていた。これに対処できるのだろうか?
動的コンポーネント追加=プラグイン式のアプリにも興味があるのでPluggableMVCも調べてみようと思う。