Titanium Mobile で幸せになるための3つのポイント
1.ターゲットはiPhoneだけにする
javaScriptでiPhone/Android両対応できる、というところに惹かれてTitanium導入を考える人は多いとおもうけど、Android版はまだまだまともに動かないのでまだ使わないほうがいいです(※1)。
将来Android版が安定してきたときに動けばラッキー、位に考えておいたほうがいい。
また、Titaniumは Write once, run anywhere を目指しているわけではなく、UIの作法はあくまでプラットフォーム毎に分ける必要があるので、Androidが安定したとしてもiPhoneと同時開発、というのは難しい。iPadに関してはそもそもTitaniumのプロジェクトタイプが違うので同じプロジェクトには出来ません。
現時点でiPhoneはインタプリタなどの基本部分はほぼ完成していて、今後はモジュールを増やしていくだけという感じ。今後はAndroidの安定化に力を入れるようなので良くなっていくことを期待したいですね。
※1.なんて事を書いていたら正に今日、SDK 1.6 がリリースされてAndroid版の動作がだいぶ安定してきたようです。ただ、プロダクトとして使うのはもう少し様子を見たほうがいいでしょう。
2.得意、不得意を知る
iPhoneではかなり安定して動作をしているとはいえ、そうは言ってもネイティブでできることがなんでもできるわけじゃありません。現状ではOpenGLは使えないし、メモリ管理はTitanium任せになるのでチューニングは難しいです。
何が得意か、何が不得意かをちゃんと理解した上でTitanium Mobileを使いましょう。具体的には、web API でデータを取ってきてリスト表示するようなMushup系アプリはかなり有効です。処理速度はネイティブよりは遅く、メモリも食うので速度を要求される処理は苦手です。
でも、アプリつくってるうちにどうしても不得意な機能や足りない機能を追加したくなってしまったら、、、、独自モジュールを作ってしまえばOKです。
モジュールについては書くと長くなっちゃうのと、まずは標準機能で試してみるのが一番だと思うのでここで、詳しい説明は割愛します。
3.JavaScriptちゃんとやる
JavaScriptってWebのための言語で、そういう視点で書かれている本やウェブ上の情報が多いんですよね。DOMとかjQueryの話やクロスブラウザ問題とか、、、
それらは言語の本質ではないので、ちゃんと書くなら言語仕様をちゃんと理解して、JavaScriptの思想に則って設計をした方が良さそうです。
Titanium Mobile では JavaScript 1.6, CommonJS がサポートされているので、最新のJavaScriptの便利機能も使えます。Map, Iterator, Deferred なんかが便利らしい。
JavaScriptの特徴として、以下は押さえておきたい。
- Cの皮を被ったLisp
レキシカルスコープ、弱い型付けなど、Lispの特徴を持っている。
- プロトタイプベースのオブジェクト指向言語
C++,Javaなどはクラスベースのオブジェクト指向言語。クラスベースのオブジェクト指向言語の場合、
実体のない型=クラスを作り、あるクラスを継承したクラスをつくったりする。
プロトタイプベースの場合は、クラスというものが存在しない。
- 利点・欠点が激しい
どの言語にも利点・欠点はあると思いますが、JavaScriptはその良い所と悪いところの差が激しいので、いいものだけをつかうと幸せになれます。
と、その辺のことは全てこの本に書いてあります。C++やJavaがわかってる人にはオススメ。
Happy coding.