Titanium News

Appcelerator Titanium Mobileに関するニュースなどを淡々とお伝えしていきます。

Titanium Mobile 2.0ローンチイベントレポート

2012年4月20日(金)に東京・五反田のDNP五反田ビルで行われたTitanium Mobile 2.0のローンチイベントについてのレポートをいたします。

http://atnd.org/events/27686

f:id:donayama:20120420210805j:plain

ほかの方によるレポート記事

とはいえ、すでにいくつかのレポート記事が出ていますので、まずはそちらもご紹介

大体の内容が上記記事に収まっている感じがするのですが、メモも取っていたので、ざっくりまとめます。

Appcelerator プラットフォームエヴァジェリスト 増井雄一郎さん(@masuidrive)によるTitanium Mobile 2.0/Titanium Studio 2.0のアップデートの紹介

f:id:donayama:20120420193948j:plain

まずは増井さんによるアップデートの紹介。会場内の状態では2.0.1をインストールされた方は半分ぐらいでしたね。ちなみにあとで登場するACSを触った事があるのは私ぐらいしかいませんでした(^^;

Titanium Mobile 2.0のアップデートはメジャーバージョンアップではあるものの、ドラスティックなバージョンアップというよりも**「堅実なバージョンアップ」である**とのこと。

そのなかでも大きな二つの変化として「レイアウトエンジンの変更」と「Appcelerator Cloud Servicesへの対応」が挙げられています。

レイアウトエンジンの変更

まずViewの自動サイズ調整の精度が向上されました。

これまで'auto'で自動的に割り当てられていたサイズ指定に対して、新たに Ti.UI.FILL と Ti.UI.SIZE の定数が用意され、その挙動を細かく指定できるようになっています。

たとえば次のような形で定数でheightやwidthに対して指定します。

{
	// ...
	height: Ti.UI.FILL,
	width:  Ti.UI.FILL,
	// ...
}

定数の挙動

これらの定数の挙動は対象となるViewやControlによって異なります。

Auto Size Views(Ti.UI.SIZE)

指定された領域に対して「なるべく小さく配置」しようとします。

  • Button
  • Label
  • ImageView
  • ProgressBar
  • Switch
  • TextArea
  • TextField
  • Picker
  • ButtonBar
  • TableViewSection
Auto Fill Views(Ti.UI.FILL)

親となるコンテナに対して「できるだけ大きく配置」しようとします。

  • View
  • TabGroup
  • VideoPlayer
  • TableView
  • WebView
  • ScrollView
  • ScrollableView
Auto Fill Width Views

水平方向には広く、垂直方向には小さく配置しようとします。

  • Slider
  • TableViewRow
  • Toolbar
  • SearchBar

バッチレイアウト

また、これまでViewやControlの位置を変更する場合、topやleftといった位置関係のプロパティをセットするごとに描画されていましたが、これを一気に実行しパフォーマンスを改善する仕掛けが用意されました。

その手法として二つ用意されています。

  • View.startLayout()…View.finishLayout()で処理を括る
  • View.updateLayout({…})で複数の位置プロパティを一気に指定する。
myView.startLayout();
myView.top = 50;
myView.left = 50;
myView.width = 200;
myView.finishLayout();
myView.updateLayout({
  top: 50,
  left: 50,
  width: 200 
});
レイアウト変更完了イベント(`View.postLayout`)

これまで位置変更後のタイミングでイベント発行しづらく、setTimeoutでdelayをかける必要性がありましたが、それに代わるpostLayoutイベントが発行されるようになりました。

var postLayoutCallback  = function(e){
  Ti.API.info(String.format("Layout done, left: %f, width: %f", myView.rect.x, myView.rect.width));
  myView.removeEventListener('postlayout', postLayoutCallback);
};
myView.addEventListener('postlayout', postLayoutCallback);
myView.updateLayout({
  left: '25%',
  width: '25%'
});
詳細について

その他、dipなどの単位の共通利用化などもありますが、詳細はこちらのドキュメントをご覧下さい。

http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Transitioning_to_the_New_UI_Layout_System

Appcelerator Cloud Servicesの紹介

先般、買収したCocoafishのサービスをTitanium Mobileと連携しやすくして提供を開始されています。

Cocoafish・ACSの概要については下記の記事と大きく変わらないので、引用しておきます。

さて、このACS関連はTitanium Mobileとしては(現時点では)コアモジュールという扱いではないようで、使用するには以下のようにrequireをしてモジュールを組み込む必要があります。

require('ti.cloud')

Titanum Studioからクラウド利用をONにするだけ(既存プロジェクトであっても)でOAuthのキーなどの生成なども可能となっています。
アプリケーションの認証方式として、APIキーとOAuthの2種類が用意されていますが、OAuthのほうが優先されます。ただし、たとえばクライアントはOAuth、サーバサイドからはAPIキーベースといったような共用も可能だそうです。

KitchenSinkに相当するデモアプリは後日githubに切りだされるようですが、いまはSDKの奥底にあるようです。

(参考) http://d.hatena.ne.jp/kaz_konno/20120419/1334858439

Facebook連携ToDoアプリ

SamplesのTodoListからインポートし、db.jsのなかでSQLiteDBのかわりにACSを使うようにようにしたサンプルの紹介。もとのソースから10行ほどしか変えていないようです。

https://github.com/appcelerator-titans/ACSTodo

Mobile Web RC1

Titanium MobileのソースからHTML5アプリケーションを生成するMobile Webについて初めてリリース候補版が発行されました。

一般的に使われるAPIは大抵実装されたようですが、そもそもプラットフォーム固有の動作をするもの(カメラ、3DMatrix、通知機能、アドレス帳など)や動作制限や環境での動作差異はあるようです。

なお、DB、音楽、ネットワーク(Socket)などは今後の対応予定として挙げられていました。

Module APIの公開

これまでソースを手探りで読み解くしか無かったハッカー以外お断り感の強かったモジュール開発ですが、対象となるAPIのドキュメント化されました。

そのほかの修正点と機能拡張

TiStudio2.0のアップデート紹介

Titanium StudioもVersionが2.0になっており、400カ所ぐらいの修正がされたようです。
特にiOS/Android SDKの認識がかなり改善され、最初の躓きがかなり軽減されるのではないかとのことです。

ACS対応

新規プロジェクト作成時にクライド対応チェックボックスするだけではなく、Cloud Service EnabledボタンをONすれば既存のプロジェクトでもACS対応がすぐできるようになっています。

開発版と製品版のアプリケーション空間の切り替えをエミュレータと実機で自動的に適用されるようになっているようです。

モジュールマネージャ

tiapp.xmlGUI編集でインストールされているモジュールを選択できるようになり、tiapp.xmlを直接いじらないといけないところがかなり減ってきました。

Kevin Whinneryさん(Director of Developer Relations)への質問タイム

AppcHQのある西海岸時間は深夜4時という遅い時間だったにもかかわらず待機していたKevin Whinneryさんへの質問タイムに。ちなみに通訳は@goandoさんでした。お疲れさまでした。

f:id:donayama:20120420203725j:plain

内容の大半はACSに集中しましたが、質問の回答はもちろん英語。
聞き取れないところ多数かつ、Appc本体としても正式立ち上げというよりも様子見の段階っぽい回答だったように思えます。

簡単にまとめると次のような感じでした。

  • ACS
    • 詳細は6月1日を待て
    • SLAは99%
    • バックエンドはAmazon EC2(regionはus-westのみ、他リージョンは検討段階にもなさそう)+PHP+MongoDB
    • ACS自体のステータス表示も今のところ無い(というかマルチに動いてなさそう?)
  • その他
    • BlackBerryについては古いバージョンはネイティブサポート可能だけど、新しいのはMobile Webを使ってねという方向らしい。

LTコーナー

LTについてはスライドが出そろったら追記します(^^;

@sngmrさん

@ryugoo_さん

@donayama

@tomomoto_LV3さん

@daoki2さん