gwt+objectifyでラクラクgaeアプリ開発
TRANSCRIPT
GWT+Objectifyで ラクラクGAEアプリ開発
越智 洋司@おちラボ
2011.12.18 京都GTUG年忘れ勉強会資料
自己紹介
• とりあえず京都GTUGスタッフ (あんまり手伝えてませんが)
• 本業:近畿大学理工学部教員 (「おちラボ」で検索してください)
• 特技:GWT(正式には「グィット」と読むらしい) 2010年5月の京都GTUG勉強会にてお話
2011.12.18 京都GTUG年忘れ勉強会資料
今日のお話
○GWTについてのちょっとした話 ・GWT再入門 ・ラボでの利用小話 ○Objectifyの紹介
2011.12.18 京都GTUG年忘れ勉強会資料
GWTとは • Google Web ToolKitの略
• JavaScriptアプリケーションをJavaで記述 → JavaコードをJavaScriptへ変換 (JavaScriptが嫌いな紳士・淑女の皆様にオススメ)
• UI周りの記述はXMLにより表現可能 (UiBinderという機能)
• サーバとのAjaxなやり取りがRPCの感覚でできる (GWT-RPCという機能)
2011.12.18 京都GTUG年忘れ勉強会資料
Javaで記述
EclipseやNetbeansなどのJavaIDEで書ける 2011.12.18 京都GTUG年忘れ勉強会資料
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年忘れ勉強会資料
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年忘れ勉強会資料
おちラボでの利用実績・小話(1)
• 2009年夏からGWT採用 (前年度までJSF)
• JavaScriptベースのAjaxアプリに 手をつけたことが1度だけあり。 → いいものはできた、、、、 が、スパゲティソースコードだったという悲劇
• GWTを導入することで → Javaだけ教えればいい! (多言語を習得する時間がない)
2011.12.18 京都GTUG年忘れ勉強会資料
おちラボでの利用実績・小話(2)
学生のウケはどうか? →ネットでの情報、書籍不足に若干の不満がある
私自身の個人的な印象 → 学生が作ったアプリの再利用性が高まった
国内ではいまいち流行ってない?!
2011.12.18 京都GTUG年忘れ勉強会資料
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
Google IO 2011 でもGWTは積極的に紹介されている
他、多数、、、 2011.12.18 京都GTUG年忘れ勉強会資料
そしてGAE
クライアントをGWTしたのならサーバも、、、
・今年からGAEでの運用を想定した開発方針へ ・データベースもDatastoreに
昨年度までは Tomcat, Glassfish MySQL+ Hibernate
Objectify の採用 2011.12.18 京都GTUG年忘れ勉強会資料
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年忘れ勉強会資料
GWTとの親和性の良さとは? (GWT-RPCの制約に対応)
DataStore
GWT-RPC Client
Entity
Server Objectify
・Client側でObjectifyのEntity定義が可能 ・DTOなしにClient-DataStore間の授受
2011.12.18 京都GTUG年忘れ勉強会資料
記述が簡単 ~EntityはPOJOで~
class Car implements IsSerializable { @Id private String vin; private String color; // アクセッサメソッドは必要 }
たったこれだけでいい! 2011.12.18 京都GTUG年忘れ勉強会資料
シンプルなメソッド
• 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年忘れ勉強会資料
軽量かつ強力 (以下抜粋)
• 設定ファイルなし(configファイルなど不要) (jarファイルを放り込むだけで動く)
• 軽量かつ高速(らしい)
• memcacheとの自動連携機能がある(らしい)
• EntityGroupの操作も容易
• Indexの制御も容易
その他できることが豊富 2011.12.18 京都GTUG年忘れ勉強会資料
おちラボでの利用実績・小話
まだ1年経ってませんので判断は時期尚早かと。。
□学生のウケはどうか? → ネットでの情報が少なすぎる。。。 という不満の声がチラホラと
□現状、学生には教え始めたところ (私自身も勉強中)
2011.12.18 京都GTUG年忘れ勉強会資料
GWT+GAE with Objectifyを勧める理由(1/2)
□GAEが正式版としてリリース (無料枠で使える枠が少なくなった?)
Googleの狙い(意図)は何か?
神は言っている、、、 ここ(GAEのサーバ)で処理をするんじゃないと、、、
2011.12.18 京都GTUG年忘れ勉強会資料
GWT+GAE with Objectifyを勧める理由(2/2)
そもそものDataStore(KVS)の思想 → 従来のRDBの思想とは違う (非正規化の形で格納)
つまり、、、
「クライアント側にデータを渡してそこで処理しろ」 →今までサーバ側(Java)でやってたことを クライアント側でやれ!
2011.12.18 京都GTUG年忘れ勉強会資料
そこでGWT+Objectifyの出番ですよ
クライアント側の処理の増加 = JavaScriptでの処理の増加 (><)
◎GWTを利用すれば、、、 複雑なコードの記述、オブジェクティブな構成
Javaの記述のしやすさがカバー
◎Objectifyを利用すれば → 速やかにデータを授受できる
2011.12.18 京都GTUG年忘れ勉強会資料
今日のまとめ
Objectify + GAEで2012年こそ GWTの爆発的な普及が来る!
よいお年を! 2011.12.18 京都GTUG年忘れ勉強会資料