CESレポート:「おもてなし」アワード2011
UIEngine、自動車に載る(Toyota Entune)

ピュアAJAXアーキテクチャのススメ

先日、ここで発表したFacebookユーザーむけグループウェア「Fruence.com」。今年のトレンドになるであろう「ソシアル・アプリ」の実例という意味もあったが、私自身の中で少し前から形になりつつあった「AJAXを最大限に活用した新しい形にウェブ・アプリケーション」のアーキテクチャの実践という意味合いも大きい。

このアーキテクチャの特徴は以下の3つである。

  • サーバー側は、JSON over HTTPのAPIとHTML/CSS(およびそのテンプレート)をスタティックな形でのみ提供する(サーバー側では、ダイナミックなHTMLの生成はしない)
  • クライアント側では、JavaScriptを使ってサーバーから取得したJSONとHTMLのテンプレートを組み合わせて(データ・バインドして)表示する。
  • ウェブサイトはあたかも独立したアプリのように動き、操作中はURLは一切変化しない

もともとは、HTML5の機能を最大限に活かした「HTML5アプリ」向けのアーキテクチャとして設計していたのだが、ブラウザー間のコンパチビリティなどを考慮していろいろと工夫しているうちに、HTML4でも十分にやりたいことが実現できることが分かったので、HTML5への依存度はゼロである。

このアーキテクチャ、少し前までははRESTful-MVCとも呼んでいたのだが(参照)、RESTと呼んでしまうと「項目の削除はHTTP-DELETEで」「PUTとPOSTの違いは」などと不必要なアーキテクチャ議論に陥りそうなので、自由度の高いJSON over HTTPとした(現にFruenceは、HTTP-GETとHTTP-POSTしか使っていない)。

ということで、すべてをAJAXで行っているという意味で「ピュアAJAXアーキテクチャ(もしくは100%JAXアーキテクチャ)」と呼ぶことにする。

ちなみに、このアーキテクチャ、「あたかも独立したアプリの用に動く」ことが重要で、「ページごとのSEOが不必要」な場合にのみ適用できるので注意が必要。ページ遷移型のUIで各ページをクローラーに独立したページとして見せたい場合は、JavaScriptが使えないブラウザーを対象にしている場合は、従来型のサーバー側でHTMLをダイナミックに生成するアーキテクチャが適している。

しかし、Fruenceみたいなソシアル・アプリが増えて人々のアクティビティがそちらに移行すると、Googleの支配するURL空間から、Facebookの支配するソシアル・グラフ空間へと色々なものがシフトして行くわけで、その意味でも「現時点でFacebookがGoogleの最大の敵」と言う指摘は正しい。

Comments

maito

>ウェブサイトはあたかも独立したアプリのように動き

にとても共感しました。
おそらく今後、クライアントアプリケーションのようにwebアプリケーションも振る舞うようになるのかなと推測しております。その一貫で、googleは先日、chrome web storeを展開したのかなと。

慎一郎 山神

「しかし、Fruenceみたいなソシアル・アプリが増えて人々のアクティビティがそちらに移行すると、Googleの支配するURL空間から、Facebookの支配するソシアル・グラフ空間へと色々なものがシフトして行くわけで、その意味でも「現時点でFacebookがGoogleの最大の敵」と言う指摘は正しい。」

これって、解りやすく例えると、クレジットカードがFacebookで現金がGoogleですよね。僕みたいな信用がない、冒険大好き人間にはFacebookはどうも魅力的に映らない。現金だって中央銀行によって簡単に魅力がなくなるけどね。

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Your Information

(Name is required. Email address will not be displayed with the comment.)