サーバサイドでSmalltalkのMVCパターンを使うのは無理があるかも
「WebアプリでもSmalltalkのMVCパターンが使えるかも」という記事に書いたアイディアについて、ここしばらく考えていました。結果、より良いと思われるアイディアが見つかったため、捨てることにします。
リソースをHTMLでのみ表現するならば、ブラウザに表示されているビューと同じ意味を持つ仮想ビューをサーバサイドに作ることによって、美しいMVCが使えると今でも思っています。しかし、リソースをAtomやらRSSやらJSONやらで表現する場合を考えると、うまくいきそうもありません。
HTMLではデータとUIが混在する
HTMLには、それ自体にUI(フォーム)が含まれています。ひるがえって、AtomやRSSやJSONはデータそのものです。たとえばAtomPubクライアントに表示されているビューと同じ意味を持つ仮想ビューをサーバサイドで作ったところで、クライアントに返すべきはデータだけなのですから意味がないわけです。HTMLであれば、サーバサイドでMVCした結果のデータをUIを含めて返すことができます。
ここで、ある疑問が浮かびます。データとUIが混在しているHTMLは、Webアプリで扱う表現形式としてふさわしくないのではないでしょうか。控えめにいっても、美しいプログラムが原理的に書きづらい表現形式だといえるのではないか。
Vはクライアントにまかせたい
このような疑問は、あらためて表明するまでもないことなのかもしれません。XFormsやHTML 5をみれば、データとUIの分離が以前から望まれていて、Web標準がその方向へ進んでいるのは明らかだからです。私の気づくのが遅かったというだけでしょう。
XFormsやHTML 5が実際に使えるのがいつになるのかは分かりませんが、来るべき未来に備えて、ビューの処理はクライアントにまかせ、サーバサイドはデータ処理に専心するという方法を採ろうと考えています。ここでもAtomPubが示唆的です。
先見的な記事
優秀なエンジニアたちが2005年から2006年にかけて残した先見的な記事があります。当時読んでいたはずなのですが、いまごろ腑に落ちた次第です。
- http://la.ma.la/blog/diary_200506291043.htm
- [Plagger] Livedoor Reader Frontend - Bulknews::Subtech - subtech
- http://naoya.g.hatena.ne.jp/naoya/20060509/1147157679
- API, UI as Commons - Bulknews::Subtech - subtech
- yohei-y:weblog: 次の話
- http://naoya.g.hatena.ne.jp/naoya/20060509/1147170968
- Web API と MVC - Bulknews::Subtech - subtech
- http://naoya.g.hatena.ne.jp/naoya/20060510/1147243094