Android T2 on cloud

63
Androidから T2 on Cloud Team T2Framework 2010/06/13

description

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Transcript of Android T2 on cloud

Page 1: Android T2 on cloud

AndroidからT2 on Cloud

Team T2Framework2010/06/13

Page 2: Android T2 on cloud

Agenda

自己紹介T2 on Cloud

T2Frameworkとは

GAEとEC2GAE用Eclipse Plugin Vili

AMF3 vs JSONAndroidからの

AndroidでのJSON処理

DEMO

Page 3: Android T2 on cloud

自己紹介

Page 4: Android T2 on cloud

自己紹介

名前

米林 正明

IDyone098(はてな,Twitter,mixi,…)

所属

株式会社Abby 代表取締役社長社員募集中 ⼀緒に働きませんか?

T2 Project

Page 5: Android T2 on cloud

自己紹介

名前

片山 暁雄

IDc9katayama (はてな,Twitter)

所属

株式会社キャピタル・アセット・プランニング

T2 Project

Page 6: Android T2 on cloud

T2 on Cloud

Page 7: Android T2 on cloud

T2Frameworkとは

Page 8: Android T2 on cloud

T2 on CloudT2とはシンプルなWebフレームワークフィルタ指向アノテーションベース⾊々なリクエストに対応

テーマ「つなぐ・つながる」ユーザと開発者を案件と楽しさをあらゆるクライアントとサーバアプリを

クライアントとユーザーコードの仲介役仲介役に徹します!

Page 9: Android T2 on cloud

T2 on Cloud

サーバ

クライアント

Ajax

XML

Flex3HTML

ParamAMF3

T2!

Page 10: Android T2 on cloud

ところで、GAEとかAndroidとか、最近のトレンドとかに対応し

てんの?

T2 on Cloud

Page 11: Android T2 on cloud

T2 on Cloud

GAEうごきます!

EC2うごきます!

Android通信できます!

Page 12: Android T2 on cloud

GAEとEC2

Page 13: Android T2 on cloud

T2 on Cloud

GAEGoogle先生提供のクラウド環境

JavaとPythonが動く環境を提供

JettyベースのJavaEE環境 EJBないよ

制約厳しめEC2

Amazon先生提供のクラウド環境

OSも選べる root権もある

TomcatでもWebSphereでもなんでもござれ

Page 14: Android T2 on cloud

Project生成Plugin Vili

Page 15: Android T2 on cloud

Vili

Vili汎用のプロジェクト生成支援Eclipseプラグイン

Eclipse3.3以上で動作

http://code.google.com/p/t‐2/wiki/Vili読み方は「ヴィリ」

北欧神話の神様の名前。オーディンの兄弟

プロジェクトの雛形(スケルトン)を用意することで様々なプロジェクトを生成可能

T2プロジェクト、Ymirプロジェクト、Cubbyプロジェクト、…

プログラム部品(フラグメント)を用意することでプロジェクトに簡単に機能を追加可能

データベースアクセス機能、メール送信機能、統合テスト環境、ログイン機能、…

Page 16: Android T2 on cloud

Vili

T2用のスケルトン

T2+Seasar2+S2Daoプロジェクト

T2プロジェクト for GAE/J

スケルトン、フラグメントは今後増やしていく予定です

Slim3 いきます

Page 17: Android T2 on cloud

setup

Page 18: Android T2 on cloud

Vili

Eclipse3.5.1の場合Help → Install New Software…Addボタンを押してhttp://eclipse.t2framework.org/updates/3.3/を追加

Page 19: Android T2 on cloud
Page 20: Android T2 on cloud

使い方

Page 21: Android T2 on cloud
Page 22: Android T2 on cloud
Page 23: Android T2 on cloud
Page 24: Android T2 on cloud
Page 25: Android T2 on cloud

Vili

ドキュメントがほとんどないので今後公開していく予定です

T2用のスケルトン、フラグメントも今後増やし

ていく予定です

Viliを使えば5分あればT2をGAE上で動かす

アプリが作れ公開出来ます

Page 26: Android T2 on cloud

AMF3 vs JSON

Page 27: Android T2 on cloud

AMF

Page 28: Android T2 on cloud

AMFとは

AMFActionMessageFormatFlash/FlexのObject Serialize方法

通信フォーマットに利用可能

バイナリ形式で小さい!

JSONの1/4、XMLの1/10

Page 29: Android T2 on cloud

AMFとは

例えば整数(数値hex)               :(binary)0x00000000 ‐ 0x0000007F : 0xxxxxxx0x00000080 ‐ 0x00003FFF : 1xxxxxxx 0xxxxxxx0x00004000 ‐ 0x001FFFFF : 1xxxxxxx 1xxxxxxx 0xxxxxxx0x00200000 ‐ 0x3FFFFFFF : 1xxxxxxx 1xxxxxxx 1xxxxxxx xxxxxxxx0x40000000 ‐ 0xFFFFFFFF : レンジ例外が発⽣

0‐127までの値なら、1byteに変換!例えば文字列

⽂字列の参照テーブルがあるので、同じ⽂字列なら参照で済ます→サイズを⼩さくする仕掛けがされてます

Page 30: Android T2 on cloud

AMFとは

AMFが利用できる型の一覧

undefined Type         null Typefalse Type             true Typeinteger Type           double TypeString Type            XMLDocument TypeDate Type              Array TypeXML Type               ByteArray TypeObject Type(型ありObject,形無しObject)

Page 31: Android T2 on cloud

AMF0とAMF3AMF3:ActionScript3から利用可能(FlashPlayer9以降)

Flex2/3ではAMF3を利用

format仕様はOpenhttp://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf

AMFとは

Page 32: Android T2 on cloud

クライアント

ASオブジェクト

AMF3でシリアライズ

HTTP/HTTPSで転送

AMF3でJavaオブジェクトに

デシリアライズ

AMF利用イメージサーバ

AMFとは

Page 33: Android T2 on cloud

JSON

Page 34: Android T2 on cloud

JSONとは

JSONJavaScript Object Notationテキストベースのデータフォーマット2006年に RFC4627 として公開XMLより簡潔記述が容易、理解し易い

Page 35: Android T2 on cloud

JSONとは

JSONが利⽤できる型の⼀覧

数値⽂字列真偽値(true, false)配列オブジェクトnull

Page 36: Android T2 on cloud

JSONとは

JSON記法{

"employeeId":"0001","department":"⼈事部","name":"⼭⽥ 太郎"

}

[ “りんご”, “みかん”, “桃” ]

{ “お菓⼦” : [ “チョコレート”, “ビスケット” ] }オブジェクトと配列のネスト

配列

Page 37: Android T2 on cloud

クライアント

JSオブジェクト

JSONでシリアライズ

HTTP/HTTPSで転送

JSONでJavaオブジェクトに

デシリアライズ

JSON利用イメージサーバ

AMFとは

Page 38: Android T2 on cloud

JSONとは

AMF3 vs JSONAMF3はFlash,Flex JSONはJavaScriptオブジェクトを送受信する機能は似た感じどちらもフォーマットはオープン

Page 39: Android T2 on cloud

JSONとは

昨年まではFlexが流行ってたので、T2はAMF3対応してました!

Page 40: Android T2 on cloud

JSONとは

でも最近Androidとか

流行ってるやん!

Page 41: Android T2 on cloud

Androidからの

Page 42: Android T2 on cloud

AndroidからCloudへAndroidからCloud通信通常のHTTP GET/POSTJSONデフォルトでAPI提供されてる(org.json)

AMF3T2のクライアント⽤AMF(API1.6対応)

SOAPデフォルトで利⽤不可kSOAPのようなライブラリもあるがまだ微妙

標準ライブラリHttpClientは遅い

Page 43: Android T2 on cloud

AndroidでのJSON処理

Page 44: Android T2 on cloud

AndroidでのJSON

AndroidでのJSON処理オリジナルパッケージorg.json

google‐gsonこれいいよJar1つのみでサイズも⼩さい•Google同⼠で相性も良い

Page 45: Android T2 on cloud

AndroidでのJSON

org.jsonの使い⽅public class Sample {private List<String> test;private int num;public List<String> getTest() {return test;}public void setTest(List<String> test) {this.test = test;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}}

Page 46: Android T2 on cloud

AndroidでのJSON

org.jsonの使い⽅String json = "{" +

"¥"test¥" : [ ¥"aa¥", ¥"bb¥" ]," +"¥"num¥" : 1000" +"}";

JSONObject jsonObj = new JSONObject(json);JSONArray test = jsonObj.getJSONArray("test");String aa = test.getString(0);String bb = test.getString(1);     int num = jsonObj.getInt("num");

// Sampleクラスに変換Sample sample = new Sample();List<String> tmpList = new ArrayList<String>();tmpList.add(aa);tmpList.add(bb);sample.setNum(num);sample.setTest(tmpList);

Page 47: Android T2 on cloud

AndroidでのJSON

org.jsonの使い⽅// SampleクラスからJSON文字列作成JSONObject jsonObj2 = new JSONObject();

JSONArray array = new JSONArray();array.put("aa");array.put("bb");

jsonObj2.put("test", array);jsonObj2.put("num", 100);

String jsonStr = jsonObj2.toString();Log.i(“Log", "jsonStr[" + jsonStr + "]");

Page 48: Android T2 on cloud

AndroidでのJSON

google‐gson使い⽅String json = "{" +

"¥"test¥" : [ ¥"aa¥", ¥"bb¥" ]," +"¥"num¥" : 1000" +"}";

Sample sample1 = new Gson().fromJson(json, Sample.class);

Page 49: Android T2 on cloud

AndroidでのJSON

google‐gson使い⽅String json = "{" +

"¥"test¥" : [ ¥"aa¥", ¥"bb¥" ]," +"¥"num¥" : 1000" +"}";

Sample sample1 = new Gson().fromJson(json, Sample.class);

String sampleJson = new Gson().toJson(sample1);

Page 50: Android T2 on cloud

AndroidでのJSON

google‐gson使い⽅Type listType = new TypeToken<List<Tweet>>() {}.getType();List<Tweet> items = new Gson().fromJson(timelineJson, listType);

Page 51: Android T2 on cloud

Demo

Page 52: Android T2 on cloud

Twitter

Page 53: Android T2 on cloud

⾊T2witter

Page 54: Android T2 on cloud

DEMO

JSON

AMF3

JSON

MQ MQ

AMF3

Google App Engine Amazon EC2

⾊でつぶやく タッチすると、つぶやきがサーバに保存される

Page 55: Android T2 on cloud

DEMO

Page 56: Android T2 on cloud

DEMO

JSON

MQ MQ

Google App Engine Amazon EC2

つぶやきを⾒る

JSON+HTMLなのでiPadでもOK!

Page 57: Android T2 on cloud

DEMO

Page 58: Android T2 on cloud

AndroidでのJSON

コードの説明Eclipseで!

Page 59: Android T2 on cloud

Demo

伝えたかったこといろいろなクライアントからサーバへ新クライアントから構築済みのサービスへ

Android to FlexServer

サーバからサーバへOAuth

JavaからJavaへWeb to Android

Page 60: Android T2 on cloud

まとめ

Page 61: Android T2 on cloud

まとめ

クラウド化でさまざまな環境が登場何がどこで動くかの把握重要

クライアントもさまざまプロトコルを押さえればつながる

Java書けるならAndroidやってみようT2とつないでみよう

Page 62: Android T2 on cloud

まとめ

より⼩さくしていこう=Micro webframework現在のコアも、さらに分割していくコアは、各機能をフックするポイントを提供する

次世代デバイス、RIA対応HTML5クライアント側のつなぎポイントの強化

AMF3、JSON

Scalaベースのt2を出したい(shot6)

T2のロードマップ

Page 63: Android T2 on cloud

ご成⻑ありがとうございました