2005年9月17日

Ajax時代の、サーバ<->クライアントで協調するMVCフレームワーク

最近、WEBサービスのユーザーインターフェースでは、AjaxあるいはAjaxっぽいJavascriptが必須になってきています。つい最近まで、MVCフレームワーク ( Model-view-controller - Wikipedia ) によって、かなり整理が進んでいたWEBアプリケーションのアーキテクチャが、(いい意味で)かなり揺さぶられている雰囲気。

Javascriptで動的に変化するWEBページをつくろうとすると、XHTMLでValidなDom構造であることがすごく重要になります(document.getElementById()とか)。HTMLの構造化を進めていくと、必然的にデザインはCSSに集約されるようになるし、DomとCSSを操作するJavascriptに、コントロール機能が集中するようになる。
こうなってくると、ブラウザ側でも、MVCフレームワークのような概念が定着しつつあるのかな?と何となく思って、以下のような図にまとめてみました。

mvc_client.png

サーバーサイドで、MVCフレームワークが重要になった要因として、WEBアプリケーションの規模に応じて、とてつもなく画面遷移が多くなることがあげられます。画面遷移の制御をコントローラーに集約しないと、手のつけようがなくなってくる。
ただ、実際にWEBアプリケーションをつくって実感するのは、画面遷移の多くは「確認画面」「エラー画面」「設定画面」などの、ユーザーが主に使う画面以外が占めているという事実です。

Ruby on Railsなどの、高速開発を売りにするフレームワークが、Ajaxライブラリと近しい関係にあるのは、単にCoolな見え方を実現するだけでなくて、サーバーサイドの無駄な画面遷移を省略する意味もあるのかなと思います。
今までWEBサーバ上のControllerで行っていた処理の一部を、ブラウザ側のController(Javascript)に移譲する感じでしょうか。

MVCのModelでも、色々なWEBサービスAPIから取得したXMLデータを、JSONオブジェクトとしてブラウザ上に展開するなど、WEBサーバ側で持つ必要がないデータは、直接ブラウザに読み込んでしまう。
またViewでも、CSSでデザインすることを前提に、データ構造をシンプルな<ul>リストからなるDom構造で、自動的に生成するTemplate Engineとか。

なんだかこの半年ぐらいで、WEBプログラミングの環境が、かなり変わってきているような気もします。

 

ブックマーク & はてなスター

コメント

GreasemonkeyでもHTMLのドロドロにはよく悩まされます。「クライアント側で弄る人にも優しいWebページ」になってほしいものです。

Posted by: 田中(頼) at 2005年9月17日 02:29

Gecko ではある程度汚い HTML も DOM として扱えるような気もしますが。
そうなると HTML ページも M として扱えますね。
もはや V をサーバー側で生成する時代ではないですね。
# クラサバの復活っぽい気もしますけど

Strict な HTML が広まるよりもより汚い HTML を DOM として処理できる engine の登場の方が早い気もします。

Posted by: nori at 2005年9月17日 03:14

そうですね。多分、実装方法は、色々なやりかたがあるのかもしれませんね。
あとは、自分が開発するときにやりやすいスタイルと、
それを汎用化したフレームワーク(Rails + prototype.jsみたいな)が、
どれぐらい一般的に使われるようになるかなのでしょうか。
(私はまだ勉強し始めたばかりですが)

Posted by: Jun Kaneko at 2005年9月17日 03:25

良く勉強していますね! 素晴らしい!
Web 2.0 から開発環境やら、利用環境、ビジネス環境が変わるような気がします。あなた方世代では今が一番面白い時期かも。大いに暴れて下さい。(良い意味でですよ。決して悪いほうには行かないで!)

Posted by: mark terada at 2005年10月25日 16:49

Pure Javascript で MVCフレームワークみたいなの作りました。

雅 - Pure Javascript MVC Framework
http://bz2.jp/Miyabi/

全然更新してないですけどw

Posted by: masato at 2005年11月 7日 16:14

英語だけのコメントは、スパムフィルターではじかれてしまうので、日本語でのコメントをお願いします。

追加情報(必須ではありません)

(ページには表示されません)

Yes No

トラックバック

トラックバックURL

ブログ記事の情報

このページへのリンク

このブログを

作成日 : 2005年9月17日 00:12