Android T2 on cloud

3,088 views

Published on

Java Cloud Meeting Tokyo 2010 x Seasar Conference 2010

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,088
On SlideShare
0
From Embeds
0
Number of Embeds
387
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Android T2 on cloud

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

×