Upload
masaaki-yonebayashi
View
2.705
Download
3
Embed Size (px)
DESCRIPTION
Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010
Citation preview
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
⾊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のロードマップ
ご成⻑ありがとうございました