Titanium Desktop でデスクトップアプリを作る

@IT で始まった下記連載で、Titanium という開発ツールが紹介されている。

Web技術でネイティブアプリを作れるTitanium
http://www.atmarkit.co.jp/fwcr/design/index/index_titanium.html

連載のメインディッシュは Titanium Mobile を使った iPhone/Android アプリだが、Titanium Desktop というのを使うとデスクトップアプリも作れるらしい。以下、とりあえずインストールして、Hello World をビルドしてみたメモ。

インストール

開発元である Appcelerator のサイトから Titanium Developer をダウンロードする。この時点では、Titanium Desktop と Titanium Mobile の両方で同じ手順。

Appcelerator
http://www.appcelerator.com/

Mac の場合は、トップページの "DOWNLOAD TITANIUM" ってところをクリックするとディスクイメージが落ちてくるので、中に入っている "Titanium Developer" のアイコンを Applications にドラッグ&ドロップすればいい。

初回起動時に、必要なファイルのダウンロードが行われた後、アカウントの作成を求められる。メールアドレスなどを入力してその場でアカウントを作ることができる。Titanium Developer ではビルドしたアプリケーションがローカルではなく Appcelerator の Web サイト上にできあがるんだけど、その際に Appcelerator のサーバにアクセスするのにアカウントが必要、ということだと思われる。

アカウントの作成が終わるとそのままログインが行われて、プロジェクトの一覧などが表示される (この時点では当然空っぽ)。

アンインストール

Titanium Developer を使わなくなったり、インストールがうまくいかなかったのでやり直したい、という場合は、アンインストールすることになる。僕の場合、最初にインストールした時はうまくいっていなかったようで、アプリをビルドしようとするとエラーになってしまっていたので、一旦アンインストールして入れ直した。

Mac の場合、アプリケーションアイコンをゴミ箱に入れる以外に、いくつか削除すべきディレクトリがある。他の OS についてもだいたいそんな感じ。

手順については公式サイト (ドメインは異なるが Appcelerator が運営している) の下記ページに説明がある。注意点は、あるディレクトリの下に、Titanium Developer 自身の設定だけでなく、Titanium で作ったアプリの設定も含まれているということ。まだ一度も Titanium 製アプリを作っていない/使っていない場合は問題ないが、そうでない場合は、下記ページの説明 (とくに WARNING と書いてある箇所) を読んでから消す必要がある。

Completely uninstalling Titanium components from your system
http://www.codestrong.com/timobile/howto/remove/

新規プロジェクトの作成

先にディレクトリをひとつ作成しておく。今後作成するプロジェクトはその中に入れることになる。Eclipse でいうところの workspace ディレクトリに相当する。もちろん、複数にわけてもかまわない。

ツールバーから "Create Project" を選択して必要な情報を入力すると空のプロジェクトが作られる……んだけど、この時点で右上に「新しい SDK が出たよ〜!」的な英文メッセージが出ているので、リンクになっている部分をクリックすると、SDK のダウンロードとインストールが始まる。インストールが終わると、新規プロジェクト作成時の "Titanium SDK Version" のところが選択できるようになる。

"Directory" には、先ほど作ったディレクトリを選択。実際には、その下にプロジェクト名でサブディレクトリが作られ、中に必要なファイルが格納される。

プロジェクトを作成した時点では、空のウィンドウにメッセージが 1 行表示されるだけの、Hello World 的なアプリケーションが生成される。


プロジェクトの変更

プロジェクトに関する情報のうちいくつかは、新規作成した後に編集する。プロジェクトを選択した状態で上部の "Edit" を選択して出てくるのがそれ。

また、プロジェクトを作成した時に作られる LICENSE.txt や CHANGELOG.txt は、アプリケーションに同梱されて配布されることになるので、こちらも配布前には修正しておきたい。

アプリケーションの作成

Titanium Developer 自体には、ファイルを管理したりソースコードを編集したりする機能がない。プロジェクトディレクトリの下の Resources ディレクトリに index.html ができているはずなので、そこを基点にして、任意のエディタや IDE などを使って編集していくことになる。

ローカルで動かしてみるには、Titanium Developer でプロジェクトを選択した状態で "Test & Package"→"Launch" と進み、"Launch App" ボタンを押すとアプリが起動する。

アプリケーションのビルド

Titanium Developer でプロジェクトを選択した状態で "Test&Package"→"Package" と進み、リリース対象のプラットフォームを選んで "Package Project" ボタンを押すと、パッケージがビルドされる。このときプラットフォーム以外にもいくつか選択することができる。

"Installer Type" とあるのは、インストーラの種類。Titanium で作成したアプリは実行時にランタイムライブラリが必要で、ここで "Network" を選んでおくと、アプリの初回起動時にランタイムライブラリがインストール済みかどうかチェックして、自動的にダウンロードしてくれる。もうひとつの "Bundled" を選ぶと、アプリにランタイムライブラリを同梱する。ネットワークに接続していない環境でも起動できるようになる反面、すでにランタイムライブラリがインストールされていてもかまわずにアプリとセットでランタイムライブラリをインストールするので、その分ディスクは食う。

"Publish Privacy" を "Public" にすると、Titanium Developer を使っている他のユーザに、自分のアプリが紹介される。具体的には、Titanium Developer 左上の Perspective で真ん中のアイコンを選択した時の一覧に表示されるようになる。まだひっそり開発してたいから、紹介されるとはずかちい(///)という場合は、"Private" にしておけばいい。

"Release to Users" は、既存のユーザに更新を知らせるための設定、らしい。Titanium で用意されている API を使うと、よくある「新しいバージョンがリリースされています。今すぐアップデートしますか?」的な機能を実現することができるが、"Release to Users" を "No" にした場合は、更新があったものとして検出されない。開発途中のバージョンでは "No" にしておいて、リリースバージョンができたら "Yes" にしてビルド、という使い方になる……らしいけど、まだ試してない。

ビルドするとできるもの

"Package Project" を押して 1〜2 分程度待つと、URL が 2 種類できる。ひとつは、できあがったパッケージ (.dmg/.tgz/.msi) の URL で、もうひとつはそれらをまとめたダウンロードページの URL。

新規プロジェクトほぼそのままでビルドしてみたところ、後者の URL は、こんな感じのページになるようだ。Mac/Linux/Windows すべてを対象にしてビルドしたものだが、Linux については 32 ビット版と 64 ビット版ができている。

screenshot

ただ、今回は紹介のために URL を晒しちゃったけど、実際にこの URL を人に教えるべきかどうかは、ちょっと微妙。ビルド時の設定で "Release to Users" を "No" に設定していても、このページ内には常に最新のバージョンのファイルへのリンクが表示されてしまうからだ。開発途中のバージョンをユーザがダウンロードしちゃわないようにしたい、という場合は、ファイルの URL だけをコピーして自分のサイトで使うのがいいかもしれない。なお、ファイルの URL はビルドする度に新しいものが割り当てられるが、ダウンロードページの URL は最初にビルドして以降変わらない。バージョンごとに別のダウンロードページを……というような場合も、やはりこのダウンロードページをそのまま公開するのはやめた方がよさそう。逆に、開発途中だろうが別に使ってもらってかまわんよ、という場合は、このダウンロードページを教えてしまえば、自分でわざわざ別にページを作る必要がない。どちらにするかは、開発スタイルに応じて決めればよさそうか。