gwt+objectifyでラクラクgaeアプリ開発

21
GWTObjectifyラクラクGAEアプリ開発 越智 洋司@おちラボ 2011.12.18 京都GTUG年忘れ勉強会資料

Upload: y-ochi

Post on 12-Jun-2015

599 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Gwt+objectifyでラクラクGAEアプリ開発

GWT+Objectifyで ラクラクGAEアプリ開発

越智 洋司@おちラボ

2011.12.18 京都GTUG年忘れ勉強会資料

Page 2: Gwt+objectifyでラクラクGAEアプリ開発

自己紹介

• とりあえず京都GTUGスタッフ (あんまり手伝えてませんが)

• 本業:近畿大学理工学部教員 (「おちラボ」で検索してください)

• 特技:GWT(正式には「グィット」と読むらしい) 2010年5月の京都GTUG勉強会にてお話

2011.12.18 京都GTUG年忘れ勉強会資料

Page 3: Gwt+objectifyでラクラクGAEアプリ開発

今日のお話

○GWTについてのちょっとした話 ・GWT再入門 ・ラボでの利用小話 ○Objectifyの紹介

2011.12.18 京都GTUG年忘れ勉強会資料

Page 4: Gwt+objectifyでラクラクGAEアプリ開発

GWTとは • Google Web ToolKitの略

• JavaScriptアプリケーションをJavaで記述 → JavaコードをJavaScriptへ変換 (JavaScriptが嫌いな紳士・淑女の皆様にオススメ)

• UI周りの記述はXMLにより表現可能 (UiBinderという機能)

• サーバとのAjaxなやり取りがRPCの感覚でできる (GWT-RPCという機能)

2011.12.18 京都GTUG年忘れ勉強会資料

Page 5: Gwt+objectifyでラクラクGAEアプリ開発

Javaで記述

EclipseやNetbeansなどのJavaIDEで書ける 2011.12.18 京都GTUG年忘れ勉強会資料

Page 6: Gwt+objectifyでラクラクGAEアプリ開発

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年忘れ勉強会資料

Page 7: Gwt+objectifyでラクラクGAEアプリ開発

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年忘れ勉強会資料

Page 8: Gwt+objectifyでラクラクGAEアプリ開発

おちラボでの利用実績・小話(1)

• 2009年夏からGWT採用 (前年度までJSF)

• JavaScriptベースのAjaxアプリに 手をつけたことが1度だけあり。 → いいものはできた、、、、 が、スパゲティソースコードだったという悲劇

• GWTを導入することで → Javaだけ教えればいい! (多言語を習得する時間がない)

2011.12.18 京都GTUG年忘れ勉強会資料

Page 9: Gwt+objectifyでラクラクGAEアプリ開発

おちラボでの利用実績・小話(2)

学生のウケはどうか? →ネットでの情報、書籍不足に若干の不満がある

私自身の個人的な印象 → 学生が作ったアプリの再利用性が高まった

国内ではいまいち流行ってない?!

2011.12.18 京都GTUG年忘れ勉強会資料

Page 10: Gwt+objectifyでラクラクGAEアプリ開発

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年忘れ勉強会資料

Page 11: Gwt+objectifyでラクラクGAEアプリ開発

そしてGAE

クライアントをGWTしたのならサーバも、、、

・今年からGAEでの運用を想定した開発方針へ ・データベースもDatastoreに

昨年度までは Tomcat, Glassfish MySQL+ Hibernate

Objectify の採用 2011.12.18 京都GTUG年忘れ勉強会資料

Page 12: Gwt+objectifyでラクラクGAEアプリ開発

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年忘れ勉強会資料

Page 13: Gwt+objectifyでラクラクGAEアプリ開発

GWTとの親和性の良さとは? (GWT-RPCの制約に対応)

DataStore

GWT-RPC Client

Entity

Server Objectify

・Client側でObjectifyのEntity定義が可能 ・DTOなしにClient-DataStore間の授受

2011.12.18 京都GTUG年忘れ勉強会資料

Page 14: Gwt+objectifyでラクラクGAEアプリ開発

記述が簡単 ~EntityはPOJOで~

class Car implements IsSerializable { @Id private String vin; private String color; // アクセッサメソッドは必要 }

たったこれだけでいい! 2011.12.18 京都GTUG年忘れ勉強会資料

Page 15: Gwt+objectifyでラクラクGAEアプリ開発

シンプルなメソッド

• 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年忘れ勉強会資料

Page 16: Gwt+objectifyでラクラクGAEアプリ開発

軽量かつ強力 (以下抜粋)

• 設定ファイルなし(configファイルなど不要) (jarファイルを放り込むだけで動く)

• 軽量かつ高速(らしい)

• memcacheとの自動連携機能がある(らしい)

• EntityGroupの操作も容易

• Indexの制御も容易

その他できることが豊富 2011.12.18 京都GTUG年忘れ勉強会資料

Page 17: Gwt+objectifyでラクラクGAEアプリ開発

おちラボでの利用実績・小話

まだ1年経ってませんので判断は時期尚早かと。。

□学生のウケはどうか? → ネットでの情報が少なすぎる。。。 という不満の声がチラホラと

□現状、学生には教え始めたところ (私自身も勉強中)

2011.12.18 京都GTUG年忘れ勉強会資料

Page 18: Gwt+objectifyでラクラクGAEアプリ開発

GWT+GAE with Objectifyを勧める理由(1/2)

□GAEが正式版としてリリース (無料枠で使える枠が少なくなった?)

Googleの狙い(意図)は何か?

神は言っている、、、 ここ(GAEのサーバ)で処理をするんじゃないと、、、

2011.12.18 京都GTUG年忘れ勉強会資料

Page 19: Gwt+objectifyでラクラクGAEアプリ開発

GWT+GAE with Objectifyを勧める理由(2/2)

そもそものDataStore(KVS)の思想 → 従来のRDBの思想とは違う (非正規化の形で格納)

つまり、、、

「クライアント側にデータを渡してそこで処理しろ」 →今までサーバ側(Java)でやってたことを クライアント側でやれ!

2011.12.18 京都GTUG年忘れ勉強会資料

Page 20: Gwt+objectifyでラクラクGAEアプリ開発

そこでGWT+Objectifyの出番ですよ

クライアント側の処理の増加 = JavaScriptでの処理の増加 (><)

◎GWTを利用すれば、、、 複雑なコードの記述、オブジェクティブな構成

Javaの記述のしやすさがカバー

◎Objectifyを利用すれば → 速やかにデータを授受できる

2011.12.18 京都GTUG年忘れ勉強会資料

Page 21: Gwt+objectifyでラクラクGAEアプリ開発

今日のまとめ

Objectify + GAEで2012年こそ GWTの爆発的な普及が来る!

よいお年を! 2011.12.18 京都GTUG年忘れ勉強会資料