android t2 on cloud

Post on 31-May-2015

2.706 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

TRANSCRIPT

AndroidからT2 on Cloud

Team T2Framework2010/06/13

Agenda

自己紹介T2 on Cloud

T2Frameworkとは

GAEとEC2GAE用Eclipse Plugin Vili

AMF3 vs JSONAndroidからの

AndroidでのJSON処理

DEMO

自己紹介

自己紹介

名前

米林 正明

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

所属

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

T2 Project

自己紹介

名前

片山 暁雄

IDc9katayama (はてな,Twitter)

所属

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

T2 Project

T2 on Cloud

T2Frameworkとは

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

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

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

T2 on Cloud

サーバ

クライアント

Ajax

XML

Flex3HTML

ParamAMF3

T2!

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

てんの?

T2 on Cloud

T2 on Cloud

GAEうごきます!

EC2うごきます!

Android通信できます!

GAEとEC2

T2 on Cloud

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

JavaとPythonが動く環境を提供

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

制約厳しめEC2

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

OSも選べる root権もある

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

Project生成Plugin Vili

Vili

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

Eclipse3.3以上で動作

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

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

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

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

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

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

Vili

T2用のスケルトン

T2+Seasar2+S2Daoプロジェクト

T2プロジェクト for GAE/J

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

Slim3 いきます

setup

Vili

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

使い方

Vili

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

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

ていく予定です

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

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

AMF3 vs JSON

AMF

AMFとは

AMFActionMessageFormatFlash/FlexのObject Serialize方法

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

バイナリ形式で小さい!

JSONの1/4、XMLの1/10

AMFとは

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

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

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

AMFとは

AMFが利用できる型の一覧

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

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

Flex2/3ではAMF3を利用

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

AMFとは

クライアント

ASオブジェクト

AMF3でシリアライズ

HTTP/HTTPSで転送

AMF3でJavaオブジェクトに

デシリアライズ

AMF利用イメージサーバ

AMFとは

JSON

JSONとは

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

JSONとは

JSONが利⽤できる型の⼀覧

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

JSONとは

JSON記法{

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

}

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

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

配列

クライアント

JSオブジェクト

JSONでシリアライズ

HTTP/HTTPSで転送

JSONでJavaオブジェクトに

デシリアライズ

JSON利用イメージサーバ

AMFとは

JSONとは

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

JSONとは

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

JSONとは

でも最近Androidとか

流行ってるやん!

Androidからの

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

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

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

標準ライブラリHttpClientは遅い

AndroidでのJSON処理

AndroidでのJSON

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

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

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;}}

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);

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 + "]");

AndroidでのJSON

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

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

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

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);

AndroidでのJSON

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

Demo

Twitter

⾊T2witter

DEMO

JSON

AMF3

JSON

MQ MQ

AMF3

Google App Engine Amazon EC2

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

DEMO

DEMO

JSON

MQ MQ

Google App Engine Amazon EC2

つぶやきを⾒る

JSON+HTMLなのでiPadでもOK!

DEMO

AndroidでのJSON

コードの説明Eclipseで!

Demo

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

Android to FlexServer

サーバからサーバへOAuth

JavaからJavaへWeb to Android

まとめ

まとめ

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

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

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

まとめ

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

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

AMF3、JSON

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

T2のロードマップ

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

top related