SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

CurlデベロッパーセンターPick Up(AD)

クラウド時代のRIA構築入門(1)
~Google App Engine for JavaとCurlの連携~

CurlとGAEを使ったRIA構築

  • このエントリーをはてなブックマークに追加

クライアントサイドの実装

CurlからGoogle App Engine上のサービスへアクセス

 CurlからGoogle App Engine上のサービスにアクセスするには、Curl ORBのCurlコード生成ツールを利用して、サービススタブ・クラス(MemoService)とデータクラス(Memo)を生成します。その生成されたCurlのクラスを呼び出すことで、CurlからGoogle App Engine上のサービスクラスへアクセスできます。詳細なCurlコード生成ツールの利用方法はこちらを参照ください。

生成されたサービススタブ・クラス(MemoService.scurl)
|||
||| Curl ORB for java (version 0.6)
|||  This code was generated by the Curl code generator automatically.

|||  package name   : MEMO
|||  generated date : 2009-04-15 16:46:27.126000
|||

{import * from COM.CURLAP.ORB} 

{define-class public MemoService {inherits ApplicationContextClient}
 

  {constructor public {default server-url:#Url = null} 
    {construct-super.ApplicationContextClient "memoService", server-url = server-url} 
  } 

  {method public {async-get-memos ...:EventHandler}:AsyncWorker 
    {return {self.async-invoke "getMemos", {splice ...}} asa AsyncWorker} 
  } 

  {method public {get-memos}:#Array 
    {return {self.invoke "getMemos"} asa #Array} 
  } 

  {method public {async-register-memo v0:Memo, ...:EventHandler}:AsyncWorker 
    {return {self.async-invoke "registerMemo", arguments = {FastArray v0}, {splice ...}} asa AsyncWorker} 
  } 

  {method public {register-memo v0:Memo}:void 
    {self.invoke "registerMemo", arguments = {FastArray v0}} 
  } 

  {method public {async-remove-memo v0:int64, ...:EventHandler}:AsyncWorker 
    {return {self.async-invoke "removeMemo", arguments = {FastArray v0}, {splice ...}} asa AsyncWorker} 
  } 

  {method public {remove-memo v0:int64}:void 
    {self.invoke "removeMemo", arguments = {FastArray v0}} 
  } 
 
}
生成されたデータクラス(Memo.scurl)
|||
||| Curl ORB for java (version 0.6)
|||  This code was generated by the Curl code generator automatically.

|||  package name   : MEMO
|||  generated date : 2009-04-15 16:46:53.742000
|||

||--{import * from JAVAX.JDO} 
{import * from COM.CURLAP.ORB} 
||--{import * from JAVAX.JDO.SPI} 

{define-class public serializable Memo 
 
  field private _id:int64 
  field private _name:#String 
  field private _message:#String 
  field private _date:#Date 
||--  field protected transient _jdo-state-manager:#StateManager 
||--  field protected transient _jdo-flags:int8 

  {getter public {name}:#String 
    {return self._name asa #String} 
  } 

  {getter public {message}:#String 
    {return self._message asa #String} 
  } 

  {getter public {id}:int64 
    {return self._id asa int64} 
  } 

  {getter public {date}:#Date 
    {return self._date asa #Date} 
  } 

  {setter public {message v:String}:void 
    set self._message = v 
  } 

  {setter public {name v:String}:void 
    set self._name = v 
  } 

  {setter public {date v:Date}:void 
    set self._date = v 
  } 
 
}

 次のようにコードを記載することで、このサービススタブ・クラスやデータクラスを使ってGoogle App Engine上のサービスにアクセスできます。

 サンプルコードはこちらからダウンロードできます。memo.zipを展開し、memo-client/memo.dcurlを実行してください。

|| Google App EngineのURLを指定
{set-default-server-url {url http://localhost:8080}}
|| サービスクラスのインスタンス生成
def service = {MemoService}
|| メモの作成(データクラス作成と値セット)
def memo = {Memo}
set memo.name = “おかだ ひとし”
set memo.message = “あいうえお!”
set memo.date = {Date}
|| メモ登録(GAEのストレージに登録)
{service.register-memo memo}

デプロイ

 デプロイをする前に、WEB-INF/appengine-web.xmlにアプリケーションIDを追加します。アプリケーションIDはGoogleのサイトから取得します(「http://<アプリケーションID>.appspot.com」のような形になります)。

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
	<application>ここにアプリケーションIDを入力</application>
	<version>1</version>
	
	<!-- Configure java.util.logging -->
	<system-properties>
		<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
	</system-properties>
	
</appengine-web-app>

 デプロイは、ツールバーにある次のボタンを押下します。

 下記画面にて、対象のプロジェクト(ここではmemo_server)とEmail(Gmailのアカウント)、パスワードを入力して、Deployボタンを押下します。

 成功するとConsoleに次のように表示されます。

Deployment completed successfully

 先ほどのCurlのサンプルでは、ローカルの開発環境(http://localhost:8080)を向いていましたので、今度はデプロイしたGoogle App EngineサーバのURLを指定します。

|| Google App EngineのURLを指定
{set-default-server-url {url http://<アプリケーションID>.appspot.com”}}

 アプリケーションIDは以下のサイトから取得します。

 サンプル(memo.zip)を実行すると次の画面が起動します(memo-client/memo.dcurl)。

  • 画面起動時、MemoService.getMemosメソッドを呼び、DataStoreからデータを取得します。
  • メモ作成ボタン押下時、MemoService.registerMemoメソッドを呼び、DataStoreへデータを登録します。
  • 1行選択し、メモ削除ボタン押下時、MemoService.removeMemoを呼び、DataStoreからデータを削除します。

最後に

 このシリーズでは、今後もクラウド・コンピューティングにおけるRIAの可能性を追求していきたいと考えています。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
CurlデベロッパーセンターPick Up連載記事一覧

もっと読む

この記事の著者

岡田 一志(オカダ ヒトシ)

大企業向けSI開発、IT基盤設計/構築やiDC設立プロジェクトの企画/開発/運用など幅広く活躍し、2006年にCurlに参画する。米Curl社(マサチューセッツ)にてCurl Core RTEの設計・開発に従事した後、現在は株式会社カールにて、Innovation Centerのオペレーションおよび...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3878 2009/05/12 15:27

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング