android t2 on cloud
DESCRIPTION
Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010TRANSCRIPT
![Page 1: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/1.jpg)
AndroidからT2 on Cloud
Team T2Framework2010/06/13
![Page 2: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/2.jpg)
Agenda
自己紹介T2 on Cloud
T2Frameworkとは
GAEとEC2GAE用Eclipse Plugin Vili
AMF3 vs JSONAndroidからの
AndroidでのJSON処理
DEMO
![Page 3: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/3.jpg)
自己紹介
![Page 4: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/4.jpg)
自己紹介
名前
米林 正明
IDyone098(はてな,Twitter,mixi,…)
所属
株式会社Abby 代表取締役社長社員募集中 ⼀緒に働きませんか?
T2 Project
![Page 5: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/5.jpg)
自己紹介
名前
片山 暁雄
IDc9katayama (はてな,Twitter)
所属
株式会社キャピタル・アセット・プランニング
T2 Project
![Page 6: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/6.jpg)
T2 on Cloud
![Page 7: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/7.jpg)
T2Frameworkとは
![Page 8: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/8.jpg)
T2 on CloudT2とはシンプルなWebフレームワークフィルタ指向アノテーションベース⾊々なリクエストに対応
テーマ「つなぐ・つながる」ユーザと開発者を案件と楽しさをあらゆるクライアントとサーバアプリを
クライアントとユーザーコードの仲介役仲介役に徹します!
![Page 9: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/9.jpg)
T2 on Cloud
サーバ
クライアント
Ajax
XML
Flex3HTML
ParamAMF3
T2!
![Page 10: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/10.jpg)
ところで、GAEとかAndroidとか、最近のトレンドとかに対応し
てんの?
T2 on Cloud
![Page 11: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/11.jpg)
T2 on Cloud
GAEうごきます!
EC2うごきます!
Android通信できます!
![Page 12: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/12.jpg)
GAEとEC2
![Page 13: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/13.jpg)
T2 on Cloud
GAEGoogle先生提供のクラウド環境
JavaとPythonが動く環境を提供
JettyベースのJavaEE環境 EJBないよ
制約厳しめEC2
Amazon先生提供のクラウド環境
OSも選べる root権もある
TomcatでもWebSphereでもなんでもござれ
![Page 14: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/14.jpg)
Project生成Plugin Vili
![Page 15: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/15.jpg)
Vili
Vili汎用のプロジェクト生成支援Eclipseプラグイン
Eclipse3.3以上で動作
http://code.google.com/p/t‐2/wiki/Vili読み方は「ヴィリ」
北欧神話の神様の名前。オーディンの兄弟
プロジェクトの雛形(スケルトン)を用意することで様々なプロジェクトを生成可能
T2プロジェクト、Ymirプロジェクト、Cubbyプロジェクト、…
プログラム部品(フラグメント)を用意することでプロジェクトに簡単に機能を追加可能
データベースアクセス機能、メール送信機能、統合テスト環境、ログイン機能、…
![Page 16: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/16.jpg)
Vili
T2用のスケルトン
T2+Seasar2+S2Daoプロジェクト
T2プロジェクト for GAE/J
スケルトン、フラグメントは今後増やしていく予定です
Slim3 いきます
![Page 17: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/17.jpg)
setup
![Page 18: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/18.jpg)
Vili
Eclipse3.5.1の場合Help → Install New Software…Addボタンを押してhttp://eclipse.t2framework.org/updates/3.3/を追加
![Page 19: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/19.jpg)
![Page 20: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/20.jpg)
使い方
![Page 21: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/21.jpg)
![Page 22: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/22.jpg)
![Page 23: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/23.jpg)
![Page 24: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/24.jpg)
![Page 25: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/25.jpg)
Vili
ドキュメントがほとんどないので今後公開していく予定です
T2用のスケルトン、フラグメントも今後増やし
ていく予定です
Viliを使えば5分あればT2をGAE上で動かす
アプリが作れ公開出来ます
![Page 26: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/26.jpg)
AMF3 vs JSON
![Page 27: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/27.jpg)
AMF
![Page 28: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/28.jpg)
AMFとは
AMFActionMessageFormatFlash/FlexのObject Serialize方法
通信フォーマットに利用可能
バイナリ形式で小さい!
JSONの1/4、XMLの1/10
![Page 29: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/32.jpg)
クライアント
ASオブジェクト
AMF3でシリアライズ
HTTP/HTTPSで転送
AMF3でJavaオブジェクトに
デシリアライズ
AMF利用イメージサーバ
AMFとは
![Page 33: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/33.jpg)
JSON
![Page 34: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/34.jpg)
JSONとは
JSONJavaScript Object Notationテキストベースのデータフォーマット2006年に RFC4627 として公開XMLより簡潔記述が容易、理解し易い
![Page 35: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/35.jpg)
JSONとは
JSONが利⽤できる型の⼀覧
数値⽂字列真偽値(true, false)配列オブジェクトnull
![Page 36: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/36.jpg)
JSONとは
JSON記法{
"employeeId":"0001","department":"⼈事部","name":"⼭⽥ 太郎"
}
[ “りんご”, “みかん”, “桃” ]
{ “お菓⼦” : [ “チョコレート”, “ビスケット” ] }オブジェクトと配列のネスト
配列
![Page 37: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/37.jpg)
クライアント
JSオブジェクト
JSONでシリアライズ
HTTP/HTTPSで転送
JSONでJavaオブジェクトに
デシリアライズ
JSON利用イメージサーバ
AMFとは
![Page 38: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/38.jpg)
JSONとは
AMF3 vs JSONAMF3はFlash,Flex JSONはJavaScriptオブジェクトを送受信する機能は似た感じどちらもフォーマットはオープン
![Page 39: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/39.jpg)
JSONとは
昨年まではFlexが流行ってたので、T2はAMF3対応してました!
![Page 40: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/40.jpg)
JSONとは
でも最近Androidとか
流行ってるやん!
![Page 41: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/41.jpg)
Androidからの
![Page 42: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/42.jpg)
AndroidからCloudへAndroidからCloud通信通常のHTTP GET/POSTJSONデフォルトでAPI提供されてる(org.json)
AMF3T2のクライアント⽤AMF(API1.6対応)
SOAPデフォルトで利⽤不可kSOAPのようなライブラリもあるがまだ微妙
標準ライブラリHttpClientは遅い
![Page 43: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/43.jpg)
AndroidでのJSON処理
![Page 44: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/44.jpg)
AndroidでのJSON
AndroidでのJSON処理オリジナルパッケージorg.json
google‐gsonこれいいよJar1つのみでサイズも⼩さい•Google同⼠で相性も良い
![Page 45: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/45.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/46.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/47.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/48.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/49.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/50.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/51.jpg)
Demo
![Page 52: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/52.jpg)
![Page 53: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/53.jpg)
⾊T2witter
![Page 54: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/54.jpg)
DEMO
JSON
AMF3
JSON
MQ MQ
AMF3
Google App Engine Amazon EC2
⾊でつぶやく タッチすると、つぶやきがサーバに保存される
![Page 55: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/55.jpg)
DEMO
![Page 56: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/56.jpg)
DEMO
JSON
MQ MQ
Google App Engine Amazon EC2
つぶやきを⾒る
JSON+HTMLなのでiPadでもOK!
![Page 57: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/57.jpg)
DEMO
![Page 58: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/58.jpg)
AndroidでのJSON
コードの説明Eclipseで!
![Page 59: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/59.jpg)
Demo
伝えたかったこといろいろなクライアントからサーバへ新クライアントから構築済みのサービスへ
Android to FlexServer
サーバからサーバへOAuth
JavaからJavaへWeb to Android
![Page 60: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/60.jpg)
まとめ
![Page 61: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/61.jpg)
まとめ
クラウド化でさまざまな環境が登場何がどこで動くかの把握重要
クライアントもさまざまプロトコルを押さえればつながる
Java書けるならAndroidやってみようT2とつないでみよう
![Page 62: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/62.jpg)
まとめ
より⼩さくしていこう=Micro webframework現在のコアも、さらに分割していくコアは、各機能をフックするポイントを提供する
次世代デバイス、RIA対応HTML5クライアント側のつなぎポイントの強化
AMF3、JSON
Scalaベースのt2を出したい(shot6)
T2のロードマップ
![Page 63: Android T2 on cloud](https://reader034.vdocuments.site/reader034/viewer/2022051515/556a5f9ad8b42a7a138b52fe/html5/thumbnails/63.jpg)
ご成⻑ありがとうございました