Freiheit.comのCTO、Stefan Richter氏は、今週ミュンヘンのGoogle Developer Dayにおいて、HTML5とGoogle App Engineを使ったリッチインターネットアプリケーション開発の展望について説明した。特に彼は、サーバベースのページレンダリングに比べてクライアントサイドコンポーネントベースのHTML5構築は少し難しいと考えている。
Webが登場する以前、シック(Thick)クライアントアプリケーションモデルはウィジェット、イベント、イベントハンドラに基づいていた。これはイベントチェーンが複雑になることが多く、悪夢のようなメンテナンスをもたらしていた。2層クライアントアプリケーションモデルでは、イベントハンドラから直接データベースにアクセスしていることもあった。サーバベースのページレンダリングでは、完全なページが一度にひとつの場所で、一回のリクエストとレスポンスで作られる(ことが多い)。
Stefan氏は、HTML5を使うと 「あなたはもっともっとクライアントサイドでHTMLコードを生成しなくてはならない」と説明する。それを試すひとつの方法はGoogle Closure Templatesの利用だ。
Closure Templatesはクライアントサイドおよびサーバサイドのテンプレーティングシステムで、再利用可能なHTMLとUI要素を動的に構築するのに便利です...Closure TemplatesはJavaScriptとJavaの両方のために実装されており、サーバサイドとクライアントサイドで同じテンプレートを使います。
彼はイベントハンドリングを集めて、必要に応じて状態をカスタムウィジェットにカプセル化することも推奨している。
バックエンドから見て、彼はこう質問する。「本当にデータをあちこち渡すためのクラスやオブジェクトは必要だろうか?」それらはClojureマクロを使ってサーバ上でデータストアアクセスコードを生成する。同じデータ構造がクライアントとサーバで使われる。
私たちはプライマリのデータ構造としてキー/バリューペアを使っています... 私はこれがアプリケーション開発の未来だと考えています。もうインピーダンスミスマッチも、ORマッパーも、変換ステップも必要ありません。
Clojureが内部的にキー/バリューペアを使って機能します。Google Datastoreともやり取りできます。そして、クライアントにはJSONとして送ることができます。
Stefan氏はただの 「キー/バリュー」ペアを使って行けるところまで行き、このデータを操作するのに副作用のない関数的JavaScriptコードを書くことを勧めている。
話のなかで、彼は次世代RIAのための一連の一般原則を述べた。
- コードを読むことで、やっていることが理解できるようにしなければならない。
- ブライザ内部でWindowsスタイルのデスクトップアプリを書こうとしてはいけない。
- HTMLコードの大部分をクライアントサイドでレンダリングできるようにしよう。
- Java言語のスタイルでJavaScriptコードを書いてはいけない。Javaコードを書いて学んだことをすべて忘れよう。
- 事前にオフライン機能(および、古いデータの同期)の計画を立てておこう。
- ユーザが同一データを同時に変更する可能性があるなら、並列な変更をどうやって扱うか考える必要がある。
- プッシュ通知が必要だ。
- クライアントサイドの例外をサーバにログ記録しよう。
デッドラインというアプリケーションはこうした原則に従って作られた。
HTML5(そして、クラウド)はRIAのアーキテクチャとプログラミングモデルを変えつつあるのだろうか? 開発者とアーキテクトは飛躍する準備をしているのか? あなたはどう考えるだろうか?