DCI (Data - Context - Interaction)のパイプライン化

なんだか最近、DCIの話題が花盛りですね。

さて、Google Group: object-compositionにて、DCIとMVCの関係について、面白い考察を行っている人がいます。

曰く、Model表現をViewのための表現に変換するためのRole (Interaction) をContextに組み込むのはどうかと提起しています。

私の中では、アプリケーションにおけるDCIの位置づけは、Modelのなかを覗き込んだときに、そこにいるものと思っています。

Modelの中の構成体ゆえ、View表現を持つことはあまり良いものではないと考えています。 しかし、View表現への変換をRoleとして組み込むのは面白いと思いました。

そこで表題に繋がるわけですが、Model層を構成するDCIをより大きな、Dとみなし、そこにView表現に変換するRoleを組み込んだらどうなのかなと思いました。

図にするとこんな感じ

1
2
3
4
5
Context1
    |- Interraction1 (View transformation)
    |- Context2 (Data1)
           |- Interraction2 (Model transformation)
           |- Data2 (Domain data)

Context2の中でドメインデータであるData2がInterraction2と作用し、次いでContext1の中でContext1での生成物とInterraction1が作用する。という処理の流れになります。

言い換えると、Context2の反応の後Context1の反応が行われるというパイプラインを構成していると見ることが出来ます。

アプリケーション全体としては、最終的に出来上がった表現をViewにバインドするというModel - Viewという単純なアーキテクチャにすることができるように思えます。

また、2フェーズのパイプラインを例示しましたが、2フェーズ以上でも同様にパイプをつないでいくだけになります。

うーん、なんてモナディック。