Previous month:
December 2010
Next month:
February 2011

ピュア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の最大の敵」と言う指摘は正しい。


CESレポート:「おもてなし」アワード2011

来る予定などなかったのだが、ひょんなことから来る事になったCES。初日の感想に代えて、数多く見た展示物の中で、「これは良い」と感じたもの二つをピックアップする。

1. ベスト・ユーザーインターフェイス:Samsung i-Function

私自信、Canonのデジカメ一眼レフを使いはじめて2年ほどたつが、操作が面倒で結局使いこなせていないというのが正直なところだ。特に夕焼けのように「今しか撮れない」ショットを撮影しようとした時に、明るさやホワイトバランスを微調整している間にその「魔法の瞬間」が終わってしまう。しかしフルオートではやはり満足のできる写真は撮れない。そんなジレンマをついに解決する「おもてなし」を提供してくれるのが、SamsungのNX11に搭載された i-Function。

IMG_0105 i-Functionは、レンズ側にある1つのボタンとリングだけで構成されているのだが、その二つだけで、明るさ、ホワイトバランス、シャッタースピードなどの微調整がLED画面から目を離さずにすることが可能なのだ。

鍵は、従来型の一眼レフレンズではピントやズームの調整に使われていたリングを、ユニバーサルなボリュームコント・ローラーとして使うことにより、操作すべきボタン等の数を極端に減らしたことにある。

「わずかな使い勝手の改良にすぎない」と言う人もいるとは思うが、「使い勝手が悪い機能は存在しないのも同じ」なので、この手のおもてなしはやたらに解像度や機能を増やす事よりももっと大切。

 

2. ベスト・ベンチャー:Dynamics, Inc.

日本で大きく広まったお財布ケータイも、スイカを広めたJRのような存在のない米国にとっては、インフラが「鶏と卵」状態でなかなか立ち上がらないと見ている人も少なくない。そんな中で、このDynamicsの "Dynamics Card" は、既存のクレジットカード・インフラに直接乗る事が出来るという点で画期的。

IMG_0120 左の写真を見ただけだと分かりにくいかも知れないが、ひと言で言えば「クレジットカード型のコンピューター」である。それも、単に「大きさがクレジットガードサイズ」だけでなく、厚さ(財布に入る)・柔らかさも(少しぐらい曲げても大丈夫)・耐久性も(水に落としても大丈夫)のすべてがクレジットカードと全く同じ。

何と言っても感動的なのは、 このデバイスの出力装置が磁気ストライプであるという点。内蔵されたアプリケーションから、自由にこの磁気ストライプの内容を変更することが可能だ。

もちろん、入力装置としてのボタン(写真では、CとRボタン)もあるので、複数のクレジットカード番号を格納しておいたり、暗証番号を入れないと使えない様にしたりと色々な応用が考えられる。

すでにシティー・バンクがトライアルを始めているらしいが、「暗証番号を入れないと使えない落としても安心なクレジットカード」というふれこみだけでもこのカードにスイッチする人はたくさんいるだろう。

 

 


2011年はソシアル・アプリ元年か?Facebookユーザー向けグループウェアFruence

Fruence

11〜12月にかけて、3本連続してGoogle App Engine上のアプリを作ったので、かなりDatastoreにも慣れて来たし、ライブラリも充実してきた。これならば、小さなアプリなら2〜3日で開発+リリースする事も十分に可能だ。ということで、正月休みの間に「書き初め」として何か自分の日々の仕事の役に立つものを作ろうと思い立ったのが1日の夜。

そこでまず候補として思いついたのが、オンラインの「to-do リスト」サービス。ここのところ、本の執筆、雑誌のコラム、CloudReaders、neu.Notes、neu.Draw、neu.Annotate、neu.Journal と複数のプロジェクトに同時に関っているため、記憶やメモに頼って作業するのは不可能になって来た。そこで、どのデバイスからでも簡単にアクセスできる「オンライン to-do リスト」が欲しいと思ったのだ。

ただ、単なる「オンライン to-do リスト」では新規性はないし面白くもない。そこで、最近勉強したFacebookのAPIを使って、「to-do リスト」を特定の人たちと共有できるようにすれば、単なる「to-do リスト」アプリが、ソシアル・アプリに変身する。今年の「書き初め」としては最適だ。

ということで三ヶ日を利用して一気に作ったのが、Fruence.com("Fruence" は "Friend" と "Influence" から作った造語)。使うにはFacebookアカウントが必要。プロジェクトの共有はFacebookフレンドとだけできる(もちろん、フレンド全員と共有するのではなく、指定した人とだけ共有する)。

今のところ、「to-do リスト」の機能しかないが、掲示板などの機能も追加して行く予定だ。バグレポートやご要望はこのブログのコメント欄で受け付ける。効率重視で作ったので、かなりの人数までApp Engineの無料Quotaでさばけるはずだ。

ちなみに、こんな風に従来型のアプリをFacebook APIなどを使ってソシアル・アプリに変身させる、というのが今年2011年のトレンドになるのでは、というのが私の予想。ここ1〜2年で、Facebookやmixi上のソシアル・ゲームが大きなビジネスに育ったが、その波が他のアプリにもそろそろ来て良い頃だ。