2012年4月20日(金)に東京・五反田のDNP五反田ビルで行われたTitanium Mobile 2.0のローンチイベントについてのレポートをいたします。
ほかの方によるレポート記事
とはいえ、すでにいくつかのレポート記事が出ていますので、まずはそちらもご紹介
- Titanium Mobile 2.0 ローンチ記念イベント in Tokyo!! #TiLE20 - Togetter
- Titanium Mobile 2.0 ローンチ記念イベントに行ってきた « kwLog
- Titanium 2.0 ローンチイベントに参加して LT もしてきました | imthinker.net
大体の内容が上記記事に収まっている感じがするのですが、メモも取っていたので、ざっくりまとめます。
Appcelerator プラットフォームエヴァジェリスト 増井雄一郎さん(@masuidrive)によるTitanium Mobile 2.0/Titanium Studio 2.0のアップデートの紹介
まずは増井さんによるアップデートの紹介。会場内の状態では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などの単位の共通利用化などもありますが、詳細はこちらのドキュメントをご覧下さい。
Appcelerator Cloud Servicesの紹介
先般、買収したCocoafishのサービスをTitanium Mobileと連携しやすくして提供を開始されています。
Cocoafish・ACSの概要については下記の記事と大きく変わらないので、引用しておきます。
- http://d.hatena.ne.jp/donayama/20120212/cocoafish
- http://d.hatena.ne.jp/donayama/20120418/ACS_tutorial
さて、この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行ほどしか変えていないようです。
TiStudio2.0のアップデート紹介
Titanium StudioもVersionが2.0になっており、400カ所ぐらいの修正がされたようです。
特にiOS/Android SDKの認識がかなり改善され、最初の躓きがかなり軽減されるのではないかとのことです。
Kevin Whinneryさん(Director of Developer Relations)への質問タイム
AppcHQのある西海岸時間は深夜4時という遅い時間だったにもかかわらず待機していたKevin Whinneryさんへの質問タイムに。ちなみに通訳は@goandoさんでした。お疲れさまでした。
内容の大半はACSに集中しましたが、質問の回答はもちろん英語。
聞き取れないところ多数かつ、Appc本体としても正式立ち上げというよりも様子見の段階っぽい回答だったように思えます。
簡単にまとめると次のような感じでした。
- ACS
- 詳細は6月1日を待て
- SLAは99%
- バックエンドはAmazon EC2(regionはus-westのみ、他リージョンは検討段階にもなさそう)+PHP+MongoDB
- ACS自体のステータス表示も今のところ無い(というかマルチに動いてなさそう?)
- その他
- BlackBerryについては古いバージョンはネイティブサポート可能だけど、新しいのはMobile Webを使ってねという方向らしい。
LTコーナー
LTについてはスライドが出そろったら追記します(^^;