Ajaxデザインパターン - プログラミングパターン (1) | Ouobpo

Ajaxデザインパターン - プログラミングパターン (1)

 プログラミングのパターン(Programming patterns)は、Ajaxの基本パターンを実際に活用する方法をパターン化したもの。とくに、「メンテナンス性」「堅牢性」「パフォーマンス」といったAjaxアプリの品質をどうやって実現するかが重視される。

Michael Mahemoff, 牧野 聡, Ajaxデザインパターン ―ユーザビリティと開発効率の向上のために

【Webサービス】
RESTful Service (RESTサービス)
 Webサービスを構築する方法の1つに、REST(Representational State Transfer)スタイルを使う方法がある。

RPC Service (RPCサービス)
 Webサービスを構築する方法の1つに、RPCスタイルを使う方法がある。

Ajax Stub (Ajaxスタブ)
 RPCスタイルのWebサービスをJavaScript側で呼び出す場合、直接XMLHttpRequestを使う方法もあるが、サービスの呼び出しをJavaScriptコードから隠蔽する「Ajaxスタブ」をブラウザ側で用意して、それを介してサービスを利用するようにする方法もある。Ajaxスタブを使うと、リモート通信のコードを、Ajaxアプリのコントロールロジックから切り離すことができる。SAJAXDWRなど、Ajaxスタブを作成するためのフレームワークがある。

HTML Message (HTMLメッセージ)
 サーバが返すレスポンスのデータ形式の1選択肢として、HTMLの断片を直接送る方法がある。この場合、ブラウザ側では innerHTML 属性を使ってHTMLをそのまま描画する。

Plain-Text Message (テキストメッセージ)
 サーバが返すレスポンスのデータ形式の1選択肢として、シンプルなテキストをそのまま送る方法がある。ブラウザ側では、テキストをそのまま使うか、簡単なデータフォーマットを解析してデータを抽出して使う。

XML Message (XMLメッセージ)
 サーバが返すレスポンスのデータ形式の1選択肢として、XMLを使う方法がある。XMLだと、複雑なデータ構造を表現できる。また標準のデータ形式なので、多くのツールやライブラリのサポートを利用できる。

JSON Message (JSONメッセージ)
 サーバが返すレスポンスのデータ形式の1選択肢として、JSON(JavaScript Object Notation)形式を使う方法がある。JSONはJavaScript標準のオブジェクトシリアル化のフォーマットなので、JavaScript側で非常に簡単に扱うことができる。XMLと同様複雑なデータ構造を表現できるが、XMLよりコンパクトになるのが特徴。

【ブラウザ-サーバ間の対話】
Call Tracking (呼び出しトラッキング)
 複数のXMLHttpRequestコールを制御するには、コールのトラッキングをする。トラッキングの具体的な方法はXMLHttpRequestのラッパを作ることで、トラッキングによってコールのプーリングや直列化、ロギングなどを実現する。

Periodic Refresh (定期的な再読み込み)
 サーバ側の変更をAjaxアプリに常に察知させるには、ブラウザ側で定期的にXMLHttpRequestコールを実行して、サーバ側の情報を取得しつづけるようにする。

Submission Throttling (送信スロットリング)
 ブラウザからのデータ送信が断続的に複数回行なわれるような場合、送信イベントの度にサーバへデータを送信する代わりに、ブラウザ側で送信バッファを作って、一定間隔でまとめて送信を行なうようにする。Prototypeの TimedObserver オブジェクトなどが送信スロットリングの用途に使える。

Explicit Submission (明示的送信)
 ブラウザからのデータ送信の一方法として、ユーザに送信ボタンを押させることで明示的に送信する方法がある。

Distributed Events (分散イベント)
 AjaxアプリでMVCを意識した疎結合の設計を実現するには、JavaScriptのイベントメカニズムを積極的に使う。

Cross-Domain Proxy (ドメイン横断プロキシ)
 外部サービスを組み合わせた(マッシュアップ)アプリを作りたいときは、Ajaxアプリが直接複数のサービスと通信するのではなく、外部サービスを連携させるプロキシサービスを作り、Ajaxアプリはそこだけと通信するようにする。

(2) に続く。

>> もくじに戻る