
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ジャパン)
- 現場の無駄な流血を止めるための「プロトタイプ」とは (2010/3/12)
サイトやWebアプリ/RIAの設計やデザインを効率良く進めるには、プロジェクト関係者の想定を一致させていくことが大事だが… - Flashを閃光のごとく高速化するための基礎知識 (2010/3/9)
Flash高速化のための基礎知識や実践的テクニックを紹介する連載。初回は“処理負荷”を調べる具体的な方法を解説します - Windows 7でどんだけ“おばか”なアプリが作れるの? (2010/3/4)
おばかの発想の源やアプリの作り方などについて、おばかアプリ選手権の歴戦の受賞者や、マイクロソフトの代表者に話を伺った。アイデアのご参考に - APIでGoogleスプレッドシートの追加/更新/削除 (2010/2/24)
ワークシートの追加・削除、メタ情報の更新、行単位でのデータの追加・更新・削除する方法を徹底解説します
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |






