Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。Explorerブラウザを通じてこのアプリケーションにアクセスすることができたので、いよいよこのWebアプリケーションに実際の機能を追加する番です。サーバの応答に基づいてDIV要素を更新できるボタンを実装してみましょう。これは非常に基本的な操作ですが、すべてのAJAXアプリケーションの基礎的な構成要素となるものです。MVCアプリケーションなら、このような機能はAJAXヘルパーオブジェクトで簡単に追加できます。WebブラウザのJavaScriptエンジンの機能が不十分で、デスクトップPC用に書かれたスクリプトにうまく対処できないため、AJAXヘルパーオブジェクトを直接使用できないという点です。従って、その点は我慢して、必要なJavaScriptを自分で書く必要があります。World」タイプのメッセージを返す次のようなコントローラメソッドを書くことを考えます。実際のアプリケーションではこのような文字列の代わりに、JSONエンコードデータベースオブジェクトなど任意のデータを返すことができます。今回は簡単なデモンストレーションを見せることが目的なので、単純な文字列で済ませることにします。"!";}次に、適切なビューページ(.aspxファイル)にJavaScriptコードを書き込む必要があります。デスクトップブラウザ用のスクリプトを書くのであれば、次のようなタグを書くことができます。Mobileオペレーティングシステムに含まれているMsxml2.XMLHTTPオブジェクトに直接アクセスする必要があります。ボタンクリックへの応答としてmobileAJAXResponseのidを更新したければ、次のようなHTMLコードを書くことができます。id="mobileAJAXResponse"></div>ボタンのOnClickイベントハンドラは、callAJAXMethodと呼ばれるJavaScript関数に関連付けられています。この関数の実装は次のようになります。}...Alertメッセージボックスの呼び出しは別にして、ActiveXObjectの呼び出しにより、AJAX呼び出しを行うことができる要求オブジェクトが作成されます。その後、非同期のAJAX呼び出しの結果を収集できるように、OnReadyStateChangeイベントが割り当てられます。要求オブジェクトのOpenメソッドは、正しいエンドポイントURLを選択します。ホスト名を指定する必要がないことに注意してください。相対URLが常にHTMLコードの送信元の同じサーバを指すので開発が楽になります。応答が返ってくると、要求オブジェクトはOnReadyStateChangeイベントが指している関数を呼び出します。このサンプルアプリケーションの場合、このイベントハンドラの実装は次のようになります。}}ShowAJAXResponseOnScreen関数は、AJAX要求が処理されてサーバに送信され、サーバからの応答が取得されるときに、何度も呼び出されます。ReadyStateプロパティは現在の状態(単純な整数値)を表すもので、4という値は呼び出しが成功して、サーバからの応答が読み取られたことを意味します。Statusプロパティは応答のHTTPステータスコードを表します。知られた200というコードは成功を意味し、404や500といったコードは失敗を意味します。要求の状態が4で、ステータスが200なら、選択されたDIVタグの内部テキストは、サーバの応答テキストと同じものに設定されます。JavaScriptコード内で適切なid属性を持つ任意の要素を直接使用できることに注意してください。そのため、開発が容易になります。AJAX呼び出しに応答してサンプルアプリケーションのユーザーインターフェースが更新されるこの時点で、ユーザーインターフェースはサーバの応答に従って更新されています。これで今回のサンプルアプリケーションの目的は達成です。MobileブラウザのJavaScriptサポートは基礎的なものにすぎません。そのため、とりわけJavaScriptの問題をデバッグするのが難しくなる可能性があります。構文エラーがあっても、JavaScriptの実行が失敗するだけで、画面にエラーメッセージやアイコンが表示されることはありません。単純ながら効果的なAlertメッセージボックスを重要な箇所で使用すれば、デバッグに要する時間が大幅に短縮されることが多いはずです。Explorerブラウザでも利用できる、現代的なAJAX対応Webアプリケーションの作成方法を紹介しました。したWebアプリケーションのテストには何段階もの手順が必要になることもありますが、Webアプリケーションを実際のWebサーバに展開して、携帯電話エミュレータをGPRSデータ接続に接続すれば、準備万端整ったことになります。Webアプリケーションでは、今のところ必要なJavaScriptコードをすべて自分で書かなければなりません。これは20行程度のコードにすぎません。このコードを用意すれば、AJAX要求とサーバ応答に基づいてユーザーインターフェースの一部を簡単に更新できます。開発側は、限定的なHTMLサポートと限られた画面サイズに気を配らねばなりませんが、これは携帯電話ユーザーにさまざまなメリットをもたらします。phoneと本格的なデスクトップブラウザのどちらを使用しているのかを判別するコードを追加することもできます。すれば、1つのコードベースで両方の使用シナリオに対応できます。MVCはAJAX呼び出しとJSONエンコードに対する組み込みサポートを含む優れたテクノロジです。伝統的なWebFormsテクノロジも同様に簡単に使用できますが、MVCパターンなら単体テストも容易になります。1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。Jarvinen)フィンランドのソフトウェア開発トレーナー兼コンサルタント。MVPの受賞者で、投稿も多数。ソフトウェア開発に関する著書も3冊出版している。ITpro.fiというフィンランドのソフトウェア開発エキスパートグループのグループリーダー。ブログのアドレスはhttp://www.saunalahti.fi/janij/。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。プラットフォームチームの意義と実践のポイント1DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防2企業の7割超が「2025年の崖」を理解していないことが明らかに。NEW新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。