DCIは人間讃歌

ただここまで書いといてアレだけど、DCIについては実装方法とかは瑣末な話で、もともと アレグザンダーとかその辺が大本にあって、目指すところはもうちょっと電波な思想的な話みたい。DCI Meetupでは「DCIは世界を変える方法」とか言ったみたいだけど、まぁ要するに世界の見方を変えようって話なのかな。

これ(DCI)は単なるソフトウェアフレームワークではないし、メンタルモデルをとらえるためのパターンランゲージに留まるものでもない。コンピュータソフトウェアにおける人間的要素を賛美するような世界観をとらえるパラダイムなのである。

http://dl.dropbox.com/u/15791171/sa10-JimCoplien_Patterns_ja.pdf

これまでのOO設計は静的な構造を捉えることばかりに囚われていて、ユーザーがそのシステムをどのように捉えているのかと視点に欠けている部分があった。アーキテクチャからメンタルモデルへ、つまり「世界がどういう形であるか」から「世界がどういう形であるとユーザーは考えているのか」へ設計の目指すところを変えたのがDCIだと思う。

ユーザーのメンタルモデルという視点にたてば、それは固定されたものではなく、ユースケースごとに変化するものであるはず。と言っても完全に不定では何が何だか分からない。システムにはこれまで同様静的な部分も当然ある。この一時的な構造と、永続的な構造を分かりやすく分離するために導入されたのが、ロールでありコンテキストだろう。

つまり、実際のシステムのコアになる部分は静的・永続的なものであって、オブジェクト(データ)はそこに属する。ここまではこれまでと変わらない。一方ユースケースごとにユーザーの中に構築されるメンタルモデルは動的・一時的で、そこではオブジェクトがコンテキストに応じて様々なロールに射影されている。この部分がこれまでのMVCには欠けていたもので、DCIによって新しく導入されるもの。

敢えて視線をイデアから人間の住む世界である洞窟の影へ。これがDCIは「コンピュータソフトウェアにおける人間的要素を賛美するような世界観をとらえるパラダイム」という言葉の意味じゃないだろうか。

要するにDCIは人間讃歌で勇気の讃歌。