ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    PAC (Presentation Abstract Controller)

    このエントリーを含むはてなブックマーク はてなブックマーク - PAC (Presentation Abstract Controller) あとで読む
    ブログを読んでいたら、アーキテクチャーパターンとして「MVC」よりも「PAC」が良いという話があった。
    PACとは、Presentation Abstract Controllerの略で、「MVCの階層的アーキテクチャー」とみなせるものだという。
    PACなんて知らんかったのでちょっと調べてみた。

    ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系
    (2000/12)
    F. ブッシュマンH. ローネルト

    商品詳細を見る

    Life is beautiful: Ruby on Railsの「えせMVC」の弊害

    もはや MVC が本当に正しいのかどうか見直す時期に来ているのでは?

    本当にオブジェクト指向や MVC は生産性をもたらしたのだろうか? Java なんか単に複雑になっただけなんじゃないだろうか?そういう疑問はあっていいと思います。

    今は最先端を行ってるのは PAC(Presentation Abstract Controller)だと確信します。

    PAC は MVC の階層的アーキテクチャとみることができます。
    これを採用しているソフトには Drupal、Firefox、Eclipse などがあります。誰も指摘しないけど。

    Drupal は PAC であり、米アマゾンのウェブ開発カテゴリでの本のランキングに Drupal が入ってきていることからもその生産性の高さが伺い知れると思います。

    Posted by: yas | 2009.10.12 at 00:15



    PACって何だ!?

    Presentation Abstract Controller の検索結果 約 6,130,000 件

    たくさんヒットした。
    まとめ記事を見つけた。

    MVCとPAC - noopな日々

    MVCアーキテクチャはある程度の規模になると限界が訪れる
    PACはMVCのスケール問題、その他を解消しうる。

    単純なMVCでは実現できない複雑な階層を持ったモデルに対するコントロールを実現するには、各モデル要素がエージェント的要素を持っていないと難しい
    実際フォームでは各要素とビジネスロジックが密接に絡むので、各エレメント、各フォームレベルでエージェント機能が欲しくなる。

    PAC の一般的な仕様ではエージェント間はメッセージングで結ばれるのに対し、Zend_Formで採用されている形式は単独ではエージェントのようだが、ツリー構造、コンポジット構造になっている。
    そのため、子側から親を参照できない。
    PACでは、子エージェントに発生したイベントは親エージェント=>兄弟エージェント=>祖先エージェントという具合にメッセージングによって伝達されるのでアーキテクチャ的には別ものではある。



    参考リンクも紹介されていた。ググる手間が省ける!

    関連:参考

    PACアーキテクチャの基本
    http://www.dossier-andreas.net/software_architecture/pac.html

    PACエージェントに関してよくまとまっている
    http://www.stripe-net.jp/cocoa/program/blog20070511.html

    日本語のリソースにしてはPACの図解がわかりやすい。(別の議論の中で言及している感じ)
    http://www.seto.nanzan-u.ac.jp/~amikio/NISE/member-niit/irisawa/HmPg/web/case_studies.htm

    PACの基本説明
    http://www.vico.org/pages/PatronsDisseny/Pattern%20Presentation%20Abstra/

    RecursiveModelViewController 単純なMVCの限界点について言及
    http://c2.com/cgi/wiki?RecursiveModelViewController



    上記参考リンクの中で、みるくCocoaさんの説明が分かりやすかった。

    ●PACの提唱者
    オブジェクト指向分析/設計概論 - 浅海 智晴

    アーキテクチャパターンとしてF. Buschmannらの「Pattern-Oriented Software Architecture」で取り上げているPACをご紹介しましょう。


    PACの言いだしっぺは、フランク・ブッシュマンという人なのかな?
    似たようなアイデアは以前からあって、それを初めて「PAC」と命名しただけとか?

    将棋や囲碁に定石があるように、ソフトウェア開発でもいろいろなアナリシスパターンがある。
    勉強することがいっぱいあるなー。

    ●玉と袋
    あ~、なるほど。
    MVCで巨大なシステムを作ると、それぞれの束がでかくなって、人間から見ると見づらくなる。
    =M、V、Cというデカイ袋が三つあって、それぞれの袋にたくさんの玉が詰め込まれているイメージ。
    どんなに玉が増えても、それをまとめて入れる袋は三つしかない。

    PACだと、機能ごとの粒度でまとめたエージェントをポコポコ追加していくので、玉と袋が適当に増やせるかんじなのかな?
    =PACの一つ一つの玉は、中身がMVCっぽくなっている。

    これからのWebアプリ - tsuchiwara日記

    FireFoxとかEclipseじゃアドオンは普通だし、すごい便利。



    確かに、Drupal、Firefox、Eclipseは、後から機能を追加するのが便利になってるアプリケーションだな。
    PACで作ると、機能単位でファイルをまとめられるようになるんだろう。

    ●PHPでPAC
    PHPでPACアーキテクチャーを採用したフレームワークってあるのかな?

    CodeIgniterを、MatchBoxやHMVCでモジュール化するよりも、
    Drupalをフレームワークとして使う
    ・Zend Framework → 「Zend_Form」
    Yii Framework
    を使うのがベター?
    まあ、でもPHPでそんなにでかいアプリは作らないから、PACなんて関係ないか。

    あるベンチマークによると、コードの量を少なくしたいならOCamlが良いらしい。Scalaもそこそこgood。
    プログラミング言語の特徴を、実行速度と簡潔さで見る

    Simple is best.

    もっと関数型言語を勉強せにゃならんなー。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/432-aba7095b

    CodeIgniterをHMVCでモジュール化

    CodeIgniterのファイル群をモジュール化するライブラリがある。 (1) MatchBox   http://codeigniter.com/wiki/Matchbox/ (2) HMVC   http://codeigniter.com/wiki/Modular_E...

    FC2Ad