Xtity Blog

techieなこと、書いてます

【tiTokyo】Appcelerator Deep Dive

f:id:matekiki:20130216140021j:plain

 

■Speaker

Ricardo Alcocer

Appcelerator Technical Evangelist

 

■自己紹介

・プラットフォームエバンジェリスト

・2009年からTitaniumを使ってアプリ開発

・いい意味でのハッカーです

 

 

■2種類のTitanium

・Titanium Classic

→ 多くのファイルが必要

MVCパターン

→ Appcelerator Alloy

 

 

■何故MVCフレームワークを作ったのか?

・大規模アプリ開発に有効

・必要なファイル数、コードの大幅な減少

・AlloyはJSからXMLを利用して高度なインタラクティブ性を提供

ex. FacebookアプリのメニューのようなUI

f:id:matekiki:20130216140918j:plain

 

■UI定義

XMLで記述

・かなりHTMLライクなコードスタイル

・class、onclick属性など

・コントローラの記述

 

■Themes

・見た目を変える。CSSのよう

・Themesという名前のディレクトリを作るだけ

・その下にそれぞれのテーマごとのスタイルを保存

・それらのテーマ設定をconfig.jsonファイルにjson形式で定義

 

Widget作成によるコードの再利用

・違うアプリに再利用できる。特にエンタープライズに重要

ex. Login機能

・感覚的にはミニアプリケーション

・アプリと同様のフォルダー構造

メタデータを、widget.jsonに記述

ex. バージョン

 

Widgetの使い方

・config.jsonファイルのdependencies項目にWidgetを定義する

xmlファイルに"Require"を定義して読み込む

・スニペット的に読み込む

→ xml中の定義がrequireの1行になる

→ イベントリスナーで登録するfunctionもWidgetのを使う

 

■アプリへのデータ追加

・Alloy → Backbone.jsの利用が可能

・Alloy Model

→ データベースを作成

SQL、プロパティを使うことも可能

 

■Modelファイル

・json形式

xmlファイルのdataCollection属性等でTableViewにバインドすることが可能

 

■TableRowを作る二つのやり方

①Alloy.createController("xmlファイル名", jsonObj)

xmlファイルにTableRowだけ定義

・tssファイルでデザインを別にすることもできる

→ デザインの変更をtssだけで行える

→ tssにプラットフォームごとに分けた定義もできる

 

②データバインディング

・dataCollectionでmodelを指定

・mustacheっぽいテンプレートを用意

・fetch({query: "select…"})もできる

・データを持ってくるときに毎回行う関数を指定することもできる

 

■Alloy More

・Sync Adapters

・Migrations

・Underscore.js対応

・CLI、ACS

 

■今日Alloy 1.0リリース!

f:id:matekiki:20130216143836j:plain

・Ti 3.0以降で対応

Android fastdev

・最新のadapter modelに対応した新たなSQL Adapter

・Ti のコンテンツアシストは3.1.0で正式対応

 

■Alloyの今後

・3.1でAlloyアプリのデバッグ機能

→ デバッグ行ずれ解消

・アプリの動的スタイリング

→ web上からテーマを取り込むことも今後可能になる

・全てのオブジェクトにデータバインディングを可能にしていきたい

 

■下記で公開しているよb

https://github.com/ricardoalcocer

 

twitter

@ricardoalcocer