スマートフォンアプリ用の開発環境「Titanium Mobile」について学びましょう。Titanium(タイタニウムと読みます)は、米Appceleratorが提供する開発環境です。その大きな特徴はスマートフォンのアプリケーションやパソコンで動くアプリケーションをJavaScriptのみで開発でき、一つのコードでマルチプラットフォームに対応できる点です。

 このTitaniumには、iPhoneやiPad、Android端末のアプリケーションを開発できるTitanium Mobileと、WindowsやMac OS X、Linuxといったパソコン用のアプリケーションを開発できる「Titanium Desktop」があります。ここではスマートフォンのアプリ開発の手助けになるTitanium Mobileを取り上げます*1

 スマートフォンアプリの開発には、iPhoneアプリならObjective-CやiOSのAPI(Application Programming Interface)の知識、AndroidアプリならJavaやAndroidのAPIの知識が必要です。Objective-CやJavaは、すぐにマスターするには難しく、初学者にはハードルが高いと言わざるを得ません。

 ところが、Titanium Mobileを利用すれば、JavaScriptのみでスマートフォンアプリを開発できるため、小難しいObjective-CやJavaを知らなくても開発に着手できます。Objective-CやJavaに比べて覚えることも少ないので、開発のハードルはぐっと低くなるでしょう。HTMLやCSSを使わないことも特徴です。さらに、作成するアプリケーションによっては、記述するコード量を大幅に削減可能です。大量のコードを書かなくても実装できるのは、初学者にとってうれしいことではないでしょうか。

Titanium Mobileでアプリが開発できる仕組み

図1●JavaScriptのプログラムは、Titanium Developerに含まれるインタプリタにより、Objective-CやJavaのプロジェクトに変換される。プロジェクトは、iOS SDKやAndroid SDKによってネイティブのバイナリコードに変換される
図1●JavaScriptのプログラムは、Titanium Developerに含まれるインタプリタにより、Objective-CやJavaのプロジェクトに変換される。プロジェクトは、iOS SDKやAndroid SDKによってネイティブのバイナリコードに変換される
[画像のクリックで拡大表示]

 Titanium Mobileは、図1のような仕組みでスマートフォンアプリを実装します。アプリケーションを作成するには、Objective-CやJavaによるソースコードの代わりに、JavaScriptとTitanium MobileのAPI群を使ってコードを記述します。Objective-CやJavaのコードからiOSやAndroidのAPIを呼び出す代わりに、JavaScriptからTitanium MobileのAPIを呼び出すわけです*2

 JavaScriptによるコードは、Titanium Mobile SDKによって解析されます。そして後述するTitanium Developerが、JavaScriptによるコードからObjective-CやJavaのプロジェクトを生成します。その際、コード内で呼び出しているAPIを検出し、そのAPIを含むライブラリをObjective-CやJavaのプロジェクトに加えます。こうして生成されたプロジェクトは、iOS SDKやAndroid SDKによってネイティブのバイナリコードに変換されてから、エミュレータや実機で動作するわけです。

 テーブルやボタンなどのUI(ユーザーインタフェース)やファイルシステムへのアクセス、画像や動画などの利用、GPS(全地球測位システム)による位置情報の取得、HTTPといったネットワークAPIの利用など、スマートフォンが備える大半の機能は、Titanium Mobileで用意されたAPIから使えると考えてよいでしょう。もし、既存のAPIに目的の機能がなければ、自らObjective-CやJavaでモジュールを作成して、新たな機能を実装することもできます。さらに、作成したアプリケーションはApp StoreやAndroid Marketで公開することも可能です。

 JavaScriptとTitanium Mobileで作成したアプリケーションは、iPhone/Android端末の両プラットフォームで似たような機能を実現できます。ただし、Titanium Mobileで同じAPIを利用しているからといって、iPhoneとAndroid端末で全く同じ挙動や同じ画面を実装できるとは限りません。iOS/AndroidにおけるOS固有の解釈によって挙動が異なることがあるので注意が必要です。