31
Sencha Touch working with AWS 株式会社ゼノフィ 中村久司 1339日土曜日

Sencha Touch working with AWS

Embed Size (px)

DESCRIPTION

JAWS-UG三都物語2013にて発表したときの資料です。AWSのS3を使ってSencha Touchアプリを動かしてみるという取り組みです。Sencha Touch的にはJSONP Proxyの使い方みたいな感じになってしまいました。

Citation preview

Page 1: Sencha Touch working with AWS

Sencha Touch working with AWS

株式会社ゼノフィ 中村久司

13年3月9日土曜日

Page 2: Sencha Touch working with AWS

Sencha Touchとは

Sencha Touch 2 は、HTML5 を使用したモバイルアプリケーション開発用の高性能フレームワークであり、 Sencha

HTML5 プラットフォームの土台となるものです。

13年3月9日土曜日

Page 3: Sencha Touch working with AWS

そもそもSenchaとはカリフォルニア州レッドウッドにあるJavaScriptによるフレームワーク/開発ツールを作っている会社

Sencha Ext JS / Sencha GXT / Sencha Touch/ Sencha Architect / Sencha Animator /Sencha Desktop Packager など

13年3月9日土曜日

Page 4: Sencha Touch working with AWS

Sencha Ext JS

YUIのエクステンションから始まったRIAフレームワーク

現在のバージョンは4.1

フルJavaScriptでRIAを構築できる

デスクトップ向け

13年3月9日土曜日

Page 5: Sencha Touch working with AWS

Sencha Touchの特徴

13年3月9日土曜日

Page 6: Sencha Touch working with AWS

独自のクラスシステム

JavaScriptにクラスはない(プロトタイプ型のオブジェクト指向)

そこにクラスの概念を持ち込む。

クラスを継承を利用して、既存コンポーネントから独自のコンポーネントを簡単に作成できる。

13年3月9日土曜日

Page 7: Sencha Touch working with AWS

動的ローディングシステム

1ファイル = 1クラスでクラス定義

requiresで依存関係指定。

Ext.Loaderが依存関係を解決ロードしてくれる。

Require.jsはいらない。

13年3月9日土曜日

Page 8: Sencha Touch working with AWS

クライアントサイドMVC

Ext.Loaderの機能を使い。クライアントサイドアプリケ

ーションでのMVCアーキテクチャーを実現。

Backborn.jsはいらない。

13年3月9日土曜日

Page 9: Sencha Touch working with AWS

データハンドリング

モデルとストアが担当する。

サーバー/クライアントから取得したデータを格納する。

ビューとバインドすれば自動更新。

複数のビューにバインドしていたら、それらすべてを更新。

13年3月9日土曜日

Page 10: Sencha Touch working with AWS

デバイスプロファイル

ユーザーが使うデバイスによって処理を切り替える。

スマホ?タブレット?

それぞれに最適な画面を設計。

共通部分のコードは共用。

13年3月9日土曜日

Page 11: Sencha Touch working with AWS

クロスブラウザ対応

Webkitだけでいいじゃん。は、終わりました。Forefox Tizen Ubuntu....Windows8!

デスクトップブラウザでのJS開発と同じように、互換性地

獄が.....

Sencha Touchなら大丈夫。

13年3月9日土曜日

Page 12: Sencha Touch working with AWS

クロスブラウザ対応

Blackbellyは元々対応済み。

Windows8に対応を表明。

最新ベータ版でFirefoxに対応。

ひょっとしたら、TizenやUbuntuにも?

13年3月9日土曜日

Page 13: Sencha Touch working with AWS

ネイティブ対応

Sencha内部のIONというプロジェクトによって、Sencha

Touchで書いたプログラムをネイティブにパッケージングできます。

ネィティブ化にはSencha Cmdというツールを使います。

13年3月9日土曜日

Page 14: Sencha Touch working with AWS

では、本題へ

13年3月9日土曜日

Page 15: Sencha Touch working with AWS

AWSでの利用

Sencha TouchはWebアプリケーションなので、AWSと組み合わせるのは簡単

EC2にデプロイすれば、どんなものでも動かせます。

今回は、S3で使ってみる。

13年3月9日土曜日

Page 16: Sencha Touch working with AWS

今回はS3

S3にアップロードしたファイルは、そのままWebサイトとして公開できる。

Route53を使うと独自ドメインでの公開も。

13年3月9日土曜日

Page 17: Sencha Touch working with AWS

S3は静的コンテンツのみ

サーバーサイドでスクリプトを動かせない。

では、他人のふんどしで相撲を取ります。

13年3月9日土曜日

Page 18: Sencha Touch working with AWS

JSONPの利用

JSONPを使ったサービスが沢山あります。

今回はその中からサントリーさんのAPIを利用します。

http://webapi.suntory.co.jp/barnavidocs/api.html

13年3月9日土曜日

Page 19: Sencha Touch working with AWS

アプリの仕様

サントリーのAPIに県番号/最寄り駅/予算などの条件を入れて検索。

合致したバーがリスト表示。

リストを選択すると詳細表示。

地図ボタンで地図表示

13年3月9日土曜日

Page 20: Sencha Touch working with AWS

Form

条件を入力するフォーム

Ext.form.Panelクラス。

入力フィールドを追加できる。

多彩な入力フィールド

13年3月9日土曜日

Page 21: Sencha Touch working with AWS

ModelとProxy

Sencha Touchではデータを格納するレコードをExt.data.Modelクラスのインスタンスとして生成します。

その集合がExt.data.Storeです。

どこからデータを取ってくるのかを知っているのがExt.data.Proxyです。

13年3月9日土曜日

Page 22: Sencha Touch working with AWS

JSONP

ProxyにExt.data.proxy.JsonPを使う。

APIの仕様に合わせてコンフィグを書いてやる

loadメソッドでデータをロードすると目的のデータをストア

に格納してくれる

13年3月9日土曜日

Page 23: Sencha Touch working with AWS

List

Ext.dataview.Listコンポーネント

ストアの一覧を表示

ページングにも簡単に対応

13年3月9日土曜日

Page 24: Sencha Touch working with AWS

XTemplate

テンプレートを使ってデータを表示。

{name}のようにプレースホルダを指定

Sencha Touchの関数や独自関数も利用可能。

setDataメソッドでデータをセット

13年3月9日土曜日

Page 25: Sencha Touch working with AWS

テーマ

アプリケーションのテーマを変更可能

SASS/Compassを使っている

基準色($BaseColor)などの変数を変えるだけでも大きく変わ

13年3月9日土曜日

Page 26: Sencha Touch working with AWS

Map

標準でExt.Mapコンポーネントがある。

必要なコンフィグをセットして

コールするだけ。

13年3月9日土曜日

Page 27: Sencha Touch working with AWS

S3にアップロード

出来上がったアプリをSencha CmdでミニファイしてS3にアップロードします。

(今回はちょっとした修正をしましたが)

静的データしか置けないところでもアプリとして機能してます(よね?)

13年3月9日土曜日

Page 29: Sencha Touch working with AWS

結論

HTML5は時期尚早なわけじゃない。

適したところに使えばそれで充分役に立つ。

Sencha Touchを使えば互換性への配慮が最小限で済む。

学習コストが高いと言われるが、JQuery Backborn.js

Requre.js and more.... を覚えるよりも...

13年3月9日土曜日

Page 30: Sencha Touch working with AWS

Sencha Touch 2実践開発ガイド

13年3月9日土曜日

Page 31: Sencha Touch working with AWS

Sencha UG

Japan Sencha User Grouphttp://www.meetup.com/Japan-Sencha-User-Group/

4月12日に大阪で勉強会を開催します。

13年3月9日土曜日