
GoogleからJava開発者へのサプライズ!な贈り物、Google Web Toolkit[3]
JavaScript×HTMLとJavaのシームレスな開発環境を体験してみよう
リトルソフト株式会社 長尾寿宏
2006/8/26
| Yahoo!WebサービスとGoogle Web Toolkitで、JavaScript×HTMLとJavaのシームレスな開発環境を体験しながら、ウィジェット、グリッド、スクロール、フレームなどを表示させ画像検索アプリを完成させよう。グリッドのバグ回避についても解説。 |
| Webサービスから結果セットを読み出して表示させるまで |
前々回「JavaをAjaxに変換するグーグルのGWTを使ってみよう」、前回「Yahoo!のAPIとGWTを使って画像検索アプリ!」から引き続き、画像検索アプリケーションを作成しながら、Google Web Toolkit(GWT)のプログラミングを詳しく見ていきたいと思います。
今回はGWTが提供するリモート・プロシージャ・コール(RPC)のメカニズムを利用して、Yahoo!画像検索Webサービスの結果セットをクライアント側に転送し、ユーザーインターフェイスへ表示する処理を実装します。
| RPCインターフェイスの定義とサービスメソッドの実装 |
・GWTのRPCとは?
- - PR -
このようにGWTクライアント側プログラムはスタンドアロンプログラムのごとく、自らのユーザーインターフェイスを描画するので、従来型のWebアプリケーションのように、HTMLページ、あるいはHTMLの断片をサーバ側に要求する必要がありません。
GWTサーバ側プログラムの実体はcom.google.gwt.user.server.rpc.RemoteServiceServletを継承したJavaサーブレットとなりますが、ユーザービュー遷移の制御やHTML生成といった一般的なWebアプリケーションフレームワークが提供している機能は存在せず、リモート・プロシージャ・コール(RPC)機能に特化した内容となっています。
GWT RPCの特徴は、クライアント側とサーバ側との間で、HTTPプロトコルにより、Javaオブジェクトを簡単にやりとりできる点です。
もちろん、クライアント側プログラムはWebブラウザの中で実行されているJavaScriptコードですので、サーバ側で生成されたJavaオブジェクトのインスタンスを直接参照しているわけではありません。
GWTが提供しているRPCメカニズムにより、サーバ側のJavaオブジェクトが自動的に直列化され、クライアント側でJavaScriptオブジェクトとして復元されるのです。クライアント側からリモートメソッドの引数としてサーバ側に渡される際も同様な直列化と復元が行われます。
| 検索結果セットのクラスを作成する |
今回作成するアプリケーションでは、サーバ側プログラムの中でYahoo!検索Webサービスへの問い合わせ処理を行い、取得した結果をJavaオブジェクトに詰め込んで、クライアント側プログラムへ返却します。そこで、まず検索結果セットを格納するためのクラスを作成しましょう。
RPCメソッドのパラメータあるいは戻り値に指定する型は直列化可能な型である必要があります。具体的には、
- char、 byte、 short、 int、 long、 boolean、 float、or doubleといったプリミティブ型
- String、Dateおよびプリミティブ型のラッパークラス(Character、 Byte、 Short、 Integer、 Long、 Boolean、 Float、 Double)
- 直列化可能な型の配列
- 直列化可能なユーザー定義クラス
以上の型を指定することができます。
また、直列化可能なユーザー定義クラスを作成する場合は、IsSerializableインターフェイスを実装する必要があります。
以下が検索結果セット格納クラス(ImageSearchResultSet)のコードです。
package jp.littlesoft.gwttest1.client; |
ImageSearchResultSetクラスをはじめ、それぞれの入れ子クラスにIsSerializableインターフェイスの実装が指定されている点に注意してください。
Yahoo!検索Webサービスによって返される結果セットの詳細については、こちら(http://developer.yahoo.co.jp/search/image/V1/imageSearch.html)を参照してください。
| サービスインターフェイスの定義 |
まず作成するのは、GWT提供のRemoteServiceインターフェイスを拡張したサービスインターフェイスです。
package jp.littlesoft.gwttest1.client;
|
executeメソッドは、パラメータとして検索結果の先頭位置(start)、返却結果件数(size)、検索キーワード(keyword)を指定できます。また、戻り値の型は先に作成した検索結果セットクラス(ImageSearchResultSet)です。
| 1/5 |
|
INDEX |
||
| JavaScript×HTMLとJavaのシームレスな開発環境を体験してみよう | ||
| Page1<Webサービスから結果セットを読み出して表示させるまで/RPCインターフェイスの定義とサービスメソッドの実装/検索結果セットのクラスを作成する/サービスインターフェイスの定義> | ||
| Page2<サーバ側 サービスメソッドの実装/非同期インターフェイスの定義> | ||
| Page3<クライアント側 検索機能の実装/ウィジェットへの値設定> | ||
| Page4<グリッドの利用/グリッドのバグ回避/スクロールに伴う自動読み込み> | ||
| Page5<背景色変更と内部フレーム表示/今後のバージョンアップも期待> | ||
Googleからのサプライズ、Google Web Toolkit バックナンバー
- 第1回 JavaをAjaxに変換するグーグルのGWTを使ってみよう
- 第2回 GWTとYahoo!のAPIを使って画像検索アプリ!
- 最終回 JavaScript×HTMLとJavaのシームレスな開発環境
Ajax関連記事 |
| Ajaxフレームワーク「Spry」で作る「リンク集2.0」 特集:AdobeのAjaxフレームワーク「Spry」を使ってみよう アドビのAjaxフレームワーク「Spry」。さっそく簡単なリンク集のサンプルを作成しながら、その機能を探ってみよう 「リッチクライアント & 帳票」フォーラム 2006/6/21 |
||
| 古くて新しいAjaxの真実を見極める 「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう 最終更新 2005/8/2 |
||
Ajax うきうき Watch
Ajaxという流行技術の定義を明確にしながら、Ajaxの動向からうきうきするような面白いもの、確実に押さえておきたいものを厳選してお届けしていく
- 第1回 Webアプリのユーザビリティを改善しまくるAjax
- 第2回 Ajax、それはWeb 2.0へと続く道
- 第3回 どんなに無茶をやっても「それもありかな」なAjax
- 第4回 自動車業界のAjaxを活用したキャンペーンを目撃せよ
- 第5回 “どのブラウザでも動くAjax”を共有財産として育てよう
- 第6回 プロプライエタリ2.0から考えるAjaxの公開/非公開部
- 第7回 メモリリークが小さくなったGoogle Maps APIの新版
- 第8回 “CGUI” 消費者が作り出すUIの時代突入
- 第9回 巨大化するAjaxライブラリをシンプルにする新たな流れ
- 第10回 地図のように年代を移動できるMITのAjax歴史年表
- 第11回 JSONがRFCになり、どんどんこなれるAjaxサービス
- 第12回 サーバが通信を開始できるComet活用Webチャット
- 第13回 オンラインゲームで検索精度を上げるGoogleの巧みさ
- 第14回 IE7とFirefox 2への利用者の大移動は起こるか?
- 第15回 グーグル検索エンジンを特定ジャンル専用に、Co-op
- 第16回 帯域やデバイス領域をフル活用させる“モバイルAjax”
- 第17回 新しい技術を模索するYahoo!、Google、MS
- 第18回 Ajaxの高度な使用例、Yahoo! pipes
- 第19回 Apollo参戦でウィジェット開発者の争奪戦が激化
- 第20回 Twitter登場で注目されるRTコミュニケーションツール
- 第21回 過熱するTwitterブームとMicrosoftのマッシュアップ
- 第22回 iPhoneのAjax戦略、そして今日もWeb APIは増加する
- 第23回 Ajax開発者がヒーローになるとき、それはいま!
- 第24回 携帯電話への拡張を進めるGoogleとWeb隠しコマンド
- 第25回 Ajaxで加速!? エンタープライズ2.0とWebOSの普及
- 第26回 「言葉」を超えた説得力を持つAjaxの存在感と広がり
- 第27回 ゲームから読み解く、俺スクリプト時代の知的な挑戦
- 第28回 マッシュアップ元年が終わり、2008年はどうなる?
- 第29回 Twitterやクラウドへも分岐するAjax/Web APIの道
- 第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript
- 第31回 新ブラウザ戦争はon fireだがJavaScriptはoffのナゾ
- 第32回 Google App EngineはAjaxへのハードルを下げるか?
- 最終回 Pure JavaScriptの動画再生やRPGも好きでした
ホワイトペーパー(TechTargetジャパン)
- いまさら聞けないTwitter超入門−@IT記事も対応なう (2010/2/4)
Twitterは最近話題のつぶやきツール。基本的な使い方から、iPhoneアプリの使い方、RTの解説、4人のご意見番の活用例や感想まで - HTML5は開発者側の都合。ユーザーには関係ない (2010/2/2)
3つのレンダリングエンジンを載せている“国産”ブラウザベンダは、HTML5やWeb/ブラウザの進化について何を語るのか - テキスト・フォント周りをキレイに見せるCSS、13選! (2010/1/29)
無数にあるCSSのプロパティを大まかに分類し、1つずつ紹介していく本連載。初回は、テキスト・フォント周りについて - OpenGL ESが大変な3Dアプリ開発を楽にするUnity (2010/1/27)
iPhoneゲーム開発に必須のOpenGL ES。そのコーディングに手こずっている方に有用なツールを紹介し簡単なサンプルを作成します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |






