SlideShare a Scribd company logo
Androidから
      T2 on Cloud

          Team T2Framework
                 2010/06/13
Agenda
自己紹介
T2 on Cloud
 T2Frameworkとは
 GAEとEC2
   GAE用Eclipse Plugin Vili
AMF3 vs JSON
 Androidからの
 AndroidでのJSON処理
DEMO
自己紹介
自己紹介
名前
   米林 正明
ID
   yone098(はてな,Twitter,mixi,…)
所属
 株式会社Abby 代表取締役社長
   社員募集中       ⼀緒に働きませんか?
  T2 Project
自己紹介
名前
   片山 暁雄
ID
   c9katayama (はてな,Twitter)
所属
 株式会社キャピタル・アセット・プランニング
 T2 Project
T2 on Cloud
T2Frameworkとは
T2 on Cloud
T2とは
  シンプルなWebフレームワーク
    フィルタ指向
    アノテーションベース
    ⾊々なリクエストに対応
  テーマ「つなぐ・つながる」
    ユーザと開発者を
    案件と楽しさを
    あらゆるクライアントとサーバアプリを
クライアントとユーザーコードの仲介役
  仲介役に徹します!
T2 on Cloud
クライアント
            HTML   Ajax         Flex3


         Param      XML           AMF3


                          T2!
サーバ
T2 on Cloud

 ところで、GAEとか
Androidとか、最近の
トレンドとかに対応し
     てんの?
T2 on Cloud
GAE
  うごきます!
EC2
  うごきます!
Android
  通信できます!
GAEとEC2
T2 on Cloud
GAE
  Google先生提供のクラウド環境
  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/
 を追加
Android T2 on cloud
使い方
Android T2 on cloud
Android T2 on cloud
Android T2 on cloud
Android T2 on cloud
Vili
ドキュメントがほとんどないので今後公開して
いく予定です
T2用のスケルトン、フラグメントも今後増やし
ていく予定です
Viliを使えば5分あればT2をGAE上で動かす
アプリが作れ公開出来ます
AMF3 vs JSON
AMF
AMFとは

AMF
 ActionMessageFormat
 Flash/FlexのObject Serialize方法
 通信フォーマットに利用可能
 バイナリ形式で小さい!
      JSONの1/4、XMLの1/10
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に変換!
  例えば文字列
⽂字列の参照テーブルがあるので、同じ⽂字列なら
参照で済ます
 →サイズを⼩さくする仕掛けがされてます
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)
AMFとは

AMF0とAMF3
  AMF3:ActionScript3から利用可能
 (FlashPlayer9以降)
 Flex2/3ではAMF3を利用
format仕様はOpen
 http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf
AMFとは

 AMF利用イメージ
                                           サーバ
クライアント




           HTTP/HTTPS
             で転送
ASオブジェクト



                        AMF3でJavaオブジェクトに
                            デシリアライズ
    AMF3でシリアライズ
JSON
JSONとは

JSON
 JavaScript Object Notation
 テキストベースのデータフォーマット
 2006年に RFC4627 として公開
 XMLより簡潔
   記述が容易、理解し易い
JSONとは
JSONが利⽤できる型の⼀覧

数値
⽂字列
真偽値(true, false)
配列
オブジェクト
null
JSONとは
JSON記法
{
    "employeeId":"0001",
    "department":"⼈事部",
    "name":"⼭⽥ 太郎"
}

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

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

JSON利用イメージ
                                           サーバ
クライアント




           HTTP/HTTPS
             で転送
JSオブジェクト



                        JSONでJavaオブジェクトに
                            デシリアライズ
   JSONでシリアライズ
JSONとは

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


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


でも最近Androidとか
 流行ってるやん!
Androidからの
AndroidからCloudへ
AndroidからCloud通信
  通常のHTTP GET/POST
  JSON
    デフォルトでAPI提供されてる(org.json)
  AMF3
    T2のクライアント⽤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
 Google App Engine                   Amazon EC2


              MQ                                  MQ




                     JSON   JSON
           AMF3                    AMF3
                                          タッチすると、つぶやき
⾊でつぶやく                                    がサーバに保存される
DEMO
DEMO
  Google App Engine   Amazon EC2


                MQ                 MQ




                          JSON+HTMLなので
      JSON                 iPadでもOK!



つぶやきを⾒る
DEMO
AndroidでのJSON

コードの説明
 Eclipseで!
Demo

伝えたかったこと
 いろいろなクライアントからサーバへ
 新クライアントから構築済みのサービスへ
  Android to FlexServer
 サーバからサーバへ
  OAuth
 JavaからJavaへ
  Web to Android
まとめ
まとめ

クラウド化でさまざまな環境が登場
 何がどこで動くかの把握重要
クライアントもさまざま
 プロトコルを押さえればつながる
Java書けるならAndroidやってみよう
T2とつないでみよう
まとめ

T2のロードマップ
 より⼩さくしていこう=Micro webframework
  現在のコアも、さらに分割していく
    コアは、各機能をフックするポイントを提供する
 次世代デバイス、RIA対応
  HTML5
  クライアント側のつなぎポイントの強化
    AMF3、JSON
 Scalaベースのt2を出したい(shot6)
ご成⻑ありがとうございました

More Related Content

PPT
第10回Mozilla拡張機能勉強会-FireMobileSimulatorについて
PDF
AWS Simple Email Service詳細 -ほぼ週刊AWSマイスターシリーズ第11回-
PPTX
やや関数型を意識した風Elixir/Phoenixご紹介
PPT
mSpoke Overview
PDF
T2 in Action
PDF
guice-servlet
PDF
Five Misunderstandings about MVPs
PDF
Minimally Awesome Products - Lean Entrepreneurship Carnegie Mellon
第10回Mozilla拡張機能勉強会-FireMobileSimulatorについて
AWS Simple Email Service詳細 -ほぼ週刊AWSマイスターシリーズ第11回-
やや関数型を意識した風Elixir/Phoenixご紹介
mSpoke Overview
T2 in Action
guice-servlet
Five Misunderstandings about MVPs
Minimally Awesome Products - Lean Entrepreneurship Carnegie Mellon

Similar to Android T2 on cloud (20)

PDF
Programming AWS with Perl at YAPC::Asia 2013
PDF
JavaScript.Next Returns
ODP
ホット・トピック・セミナー「Metro」
PDF
20120303 jaws summit-meister-04_cloud_formation
PDF
Aws meister-cloud formation-summit2012
PPTX
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
PPTX
PHP on Cloud
PDF
JavaScript.Next
PDF
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
PPT
アマゾンクラウドの真価
PDF
Google App Engine Java 入門
PDF
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
PDF
AWSマイスターシリーズReloaded(AWS Beanstalk)
PDF
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
ODP
Node handson
PPTX
13016 n分で作るtype scriptでnodejs
ODP
WowzaMediaServer for EC2 導入編
PDF
CloudFormation/SAMのススメ
PDF
Seasarプロジェクト徹底攻略
PDF
モバイル開発を支えるAWS Mobile Services
Programming AWS with Perl at YAPC::Asia 2013
JavaScript.Next Returns
ホット・トピック・セミナー「Metro」
20120303 jaws summit-meister-04_cloud_formation
Aws meister-cloud formation-summit2012
[CB16] Electron - Build cross platform desktop XSS, it’s easier than you thin...
PHP on Cloud
JavaScript.Next
AWS Black Belt Online Seminar 2017 AWS体験ハンズオン~Deploy with EB CLI編~
アマゾンクラウドの真価
Google App Engine Java 入門
Running Java Apps with Amazon EC2, AWS Elastic Beanstalk or Serverless
AWSマイスターシリーズReloaded(AWS Beanstalk)
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
Node handson
13016 n分で作るtype scriptでnodejs
WowzaMediaServer for EC2 導入編
CloudFormation/SAMのススメ
Seasarプロジェクト徹底攻略
モバイル開発を支えるAWS Mobile Services
Ad

More from Masaaki Yonebayashi (13)

PPTX
Go guide for Java programmer
PDF
PDF
JavaFX-with-Adobe
PDF
PDF
Flex's DI Container
PDF
T2@java-ja#toyama
PDF
Merapi -Adobe Air<=>Java-
PDF
sc2009white_T2
PDF
sc2009white_Teeda
PDF
Wankumatoyama#01
Go guide for Java programmer
JavaFX-with-Adobe
Flex's DI Container
T2@java-ja#toyama
Merapi -Adobe Air<=>Java-
sc2009white_T2
sc2009white_Teeda
Wankumatoyama#01
Ad

Android T2 on cloud