InfoQ

News

5つの一般的なAjaxアンチパターン

作者 James Kao, 翻訳者 松本 清一 投稿日 2007年8月31日 午前12時32分

コミュニティ
.NET,
Ruby,
Java
トピック
RIA
タグ
AJAX,
Patterns

現場でAjax開発での仕事での経験をもとにして、Jack Herrington氏が、アンチパターンとしてあげるのにふさわしい5つの特別な問題を集め、Ajaxコードの落とし穴を掘り下げて書いた。要約は次のとおりである。

必要が無いのにタイマーをポーリングする JavaScriptには、タイマー関数があります(通常、window.setInternval()を使用します)が、慎重に使用されるべきである。アニメーションには有効だが、他の用途で使用する際には、十分にチェックしなければいけない。赤旗として注意が必要なものの一つとして、リクエストが完了したことを監視するためにタイマーを利用することである。ポーリングではなく、コールバックを使用しなければならない。

コールバックの返り値をチェックしない XMLHTTPRequestオブジェクトのコールバックをprocessReqChange()で行う際、コールバック結果であるreadyStateプロパティとstatusプロパティのチェックを行う必要がある。コールバックは、大抵、結果が完了する前に呼ばれるだろう。不完全なデータの処理を行おうとするときにチェックをしないと、エラーが発生する。

HTMLの方が良いとき、XMLの複合とする ブラウザで表示するためのHTMLの中に整形したXMLを書くことは、多くのJavaScriptを必要とし、開発者をブラウザの整合性問題にさらすことになる。おおまかなものは次のとおりである。

一連のこととして、ジョブの要求によって、サーバ上で処理を行うか、クライアント上で行うかという選択があります。例えば、映画の一覧を表示するといった場合、ジョブとしては比較的単純です。もし、ジョブがより複雑(多分、ソート、検索、登録、削除、若しくは、ある映画をクリックすると追加情報が表示されるような動的なインタラクションを伴うもの)ならば、クライアントのコードはより複雑なものとなります。事実、私はこの記事の最後で、処理をサーバに置いた方が良いという反論について語るにあたり、クライアント上でのソート処理のデモを行うでしょう。

JavaScriptコードを使用する際にXMLを使用する 簡単に言えば、JSONが使えるときはXMLを使用しないということである。

そのメリットははっきりしています。例として、JavaScriptコードと一緒に、クライアントにダウンロードしたデータの塊のサイズの52%を保存しました。さらに、パフォーマンスがアップしました。JavaScriptバージョンを読んだ方が、9%高速でした。9%はさほど大きくないように見えますが、これはかなり基本的な例だということを念頭において下さい。より大きなデータブロック、若しくは、より複雑な構造の場合、JavaScriptコードは変わらないままですが、XMLをパースするコードがさらに必要になるでしょう。
サーバで沢山のことをしない 表をソートするような単純な単一ページでの機能の場合、サーバよりもJavaScriptの方が、より高速で、効率よく処理することができる。

(原文は2007年3月31日にリリースされた記事です)
ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

メタプログラミングを使ってRubyにプロパティを追加する

Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。

BlazeDSとAMFでWebとデスクトップのアプリケーションを構築する

現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。

業務ソフトに手を加えずに暗号化を実現する~秘文の挑戦~

hibun

ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。

Google Chartとgchartrbの紹介

Google Chartは、チャートを作成するためのWebサービスです。本稿では、Google Chartのインターフェースと、Rubyコードから簡単にチャートを生成することができるgchartrbライブラリの説明をします。

SOAを超えて: 動的な業務アプリケーションのための新しいエンタープライズアーキテクチャフレームワーク

全二回からなるこの記事では、ダイナミックビジネスアプリケーション(Dynamic Business Applications:DBAs)の開発についての全体的な眺望を、アーキテクチャと方法論の観点から見ていくことになります。我々のゴールは、「ビジネスの変化や、その他に必要とされる変更に対して、いかにして容易に適応できるアプリケーションを構築していくか」を導きだすことです。

ESB接続形態のオルタナティブ

本稿では、Adrien Louis氏がESBベースのSOAに対する2つの接続形態についての賛否について説明しています。その2つとは、会社での単一のESB対「部門毎」に相互接続するESBによるシステムです。

AjaxプログラマのためのJavaOne2008 -GrizzlyでComet!-

誕生から2年を経てCometは「何が出来るのか」という議論から、「いかに実現するか」という議論に関心が移ってきたように見えます。そこで本稿では同じくJavaOneで数多く取り上げられたNetBeans 6.1とGlassFish v3を使いながら、サンプルを交えてCometを解説していく事にします。

SharePoint Webサービスを始めましょう

この記事では、WSS3とMOSS 2007に難しい設定など一切せず、すぐに利用可能なWebサービスと、Javaと.NETからそのWebサービスを消費する方法に目を向けます。