フレームワーク

id:a_php_extさんが日記にかかれてますが、「フレームワークをつかうと自由度がさがる」という話はよくでてきますね。

まずフレームワークとよばれるものが一般的に特定のインタフェースを強制するという意味で、そのインタフェースを使いなさいという意味では自由はない。が、そのインタフェースをまもってつくれば、後は実装はどうなってもいいよと考えると自由度はある。結局はそのフレームワークが強制しているインタフェースがどれくらい妥当なものであるか?というところが重要なんではないだろうか。

ま、おそらく世の中にたくさんあるフレームワークというのは自分自身でいろいろやりすぎていて、ユーザが必要としない機能を提供していたり、しかもそれが切り離せなかったり、差し替えできなかったりということがあったりして、印象を悪くしてるんでしょうね。

以前まさたかさんにコメントをつけていただきましたが、何でもかんでも1つのフレームワーク自身にしてほしいわけではなくて、便利な機能をもったコンポーネント群をインタフェース経由でマネージメントだけをしてくれるだけのフレームワークってのがいいんじゃないだろうか。Mapleが目指すのはそんなものです。

やっぱりDIContainerを中心におくか。

Mapleに関して、一時期なやんでましたが、やっぱりDIContainerを中心におこうかと思っています。Request、Response、ActionChain等いくつかのクラスをSingleton(といってもリクエスト毎に吹っ飛ぶんですが・・・)にしてあるんすが、それらを普通に生成してDIContainerに管理させて、それから取得して使うって形にしようと思います(ま、これでもリクエスト後に吹っ飛ぶことには代わりがなんすが・・・。気軽にオブジェクトのプールができればな・・・)。それぞれのクラスの関係性を疎にするということではこの方がいいと思っているので。

今後もいろいろ悩んでいくことにはなるとは思うのですが、現時点の私ではこの組み方が一番かと思います。