More Related Content Similar to Gwt+objectifyでラクラクGAEアプリ開発 Similar to Gwt+objectifyでラクラクGAEアプリ開発 (20) Gwt+objectifyでラクラクGAEアプリ開発2. 自己紹介
• とりあえず京都GTUGスタッフ
(あんまり手伝えてませんが)
• 本業:近畿大学理工学部教員
(「おちラボ」で検索してください)
• 特技:GWT(正式には「グィット」と読むらしい)
2010年5月の京都GTUG勉強会にてお話
2011.12.18 京都GTUG年忘れ勉強会資料
4. GWTとは
• Google Web ToolKitの略
• JavaScriptアプリケーションをJavaで記述
→ JavaコードをJavaScriptへ変換
(JavaScriptが嫌いな紳士・淑女の皆様にオススメ)
• UI周りの記述はXMLにより表現可能
(UiBinderという機能)
• サーバとのAjaxなやり取りがRPCの感覚でできる
(GWT-RPCという機能)
2011.12.18 京都GTUG年忘れ勉強会資料
6. UI周りはXMLで
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:style>
.important {
font-weight: bold;
}
</ui:style>
<g:HTMLPanel>
Hello,
<g:TextBox></g:TextBox>
<g:Button styleName="{style.important}" ui:field="button" >OK</g:Button>
<g:Button>Cancel</g:Button>
</g:HTMLPanel>
</ui:UiBinder>
Javaコードを一切書くことなくUI実装が可能
(デザインとロジックが完全に区別) 2011.12.18 京都GTUG年忘れ勉強会資料
7. Ajaxな通信がRPC感覚で
〜GWT-RPC〜
サーバ側
public Car getCar(Person user) throws IllegalArgumentException {
:
:
:
}
クライアント側
RemoteService.getCar(user, new AsyncCallback<Car>() {
public void onFailure(Throwable caught) {
}
public void onSuccess(Car result) {
}
});
2011.12.18 京都GTUG年忘れ勉強会資料
10. GWTは熱い!(海外では)
Google IO 2011 でもGWTは積極的に紹介されている
– GWT + HTML5: A web developers dream!
– HTML5 Showcase for Web Developers: The Wow and the How
– GWT + UI Designer: Enterprise Web UIs Made Easy!
– Using GWT and Eclipse to Build Great Mobile Web Apps
– High-performance GWT: best practices for writing smaller, faster
apps
– Highly Productive GWT: Rapid Development with App Engine,
Objectify, RequestFactory, and gwt-platform
– Kick-Ass Game Programming with Google Web Toolkit
– Building Game Development Tools with App Engine, GWT, and
WebGL
– Fireside Chat with the GWT and Cloud Tooling Team
– GWT's UI overhaul
他、多数、、、
2011.12.18 京都GTUG年忘れ勉強会資料
11. そしてGAE
クライアントをGWTしたのならサーバも、、、
昨年度までは
Tomcat, Glassfish
MySQL+ Hibernate
・今年からGAEでの運用を想定した開発方針へ
・データベースもDatastoreに
Objectify の採用
2011.12.18 京都GTUG年忘れ勉強会資料
12. Objectifyとは
(objectify-appengineが正式名称)
• GAEのDatastoreにアクセスするためのAPI
• GWT-RPCとの親和性も良い
• 記述が簡単、シンプルなメソッド
• 高機能、高速処理
• GoogleIO2011でも紹介
Highly Productive GWT: Rapid Development with App Engine,
Objectify, RequestFactory, and gwt-platform
2011.12.18 京都GTUG年忘れ勉強会資料
13. GWTとの親和性の良さとは?
(GWT-RPCの制約に対応)
Entity
DataStore
GWT-RPC Objectify
Client Server
・Client側でObjectifyのEntity定義が可能
・DTOなしにClient-DataStore間の授受
2011.12.18 京都GTUG年忘れ勉強会資料
14. 記述が簡単
~EntityはPOJOで~
class Car implements IsSerializable {
@Id private String vin;
private String color;
// アクセッサメソッドは必要
}
たったこれだけでいい!
2011.12.18 京都GTUG年忘れ勉強会資料
15. シンプルなメソッド
• get() ・・・IDによる検索
• put() ・・・追加、修正
• delete() ・・・削除
• query() ・・・検索
Objectify ofy = ObjectifyService.begin();
ofy.put(new Car("123123", "red"));
Car c = ofy.get(Car.class, "123123");
ofy.delete(c);
2011.12.18 京都GTUG年忘れ勉強会資料
16. 軽量かつ強力
(以下抜粋)
• 設定ファイルなし(configファイルなど不要)
(jarファイルを放り込むだけで動く)
• 軽量かつ高速(らしい)
• memcacheとの自動連携機能がある(らしい)
• EntityGroupの操作も容易
• Indexの制御も容易
その他できることが豊富
2011.12.18 京都GTUG年忘れ勉強会資料
19. GWT+GAE with Objectifyを勧める理由(2/2)
そもそものDataStore(KVS)の思想
→ 従来のRDBの思想とは違う
(非正規化の形で格納)
つまり、、、
「クライアント側にデータを渡してそこで処理しろ」
→今までサーバ側(Java)でやってたことを
クライアント側でやれ!
2011.12.18 京都GTUG年忘れ勉強会資料