Javascript

Titanium最前線

カテゴリ
ブックマーク数
このエントリーを含むはてなブックマーク はてなブックマーク - Titanium最前線
このエントリーをはてなブックマークに追加
こんにちは!こんにちは!もしかしてこんばんは!
開発部のあぶいです。

今回は、Appcelerator社が提供しているTitanium Mobileについて最近の事情も踏まえてお話させていただきます。

Titanium Mobileとは

Titanium MobileとはJavascriptによってiOSもしくはAndroidのアプリを作ることができる開発環境のことです。触れ込みとしては一つのソースでiOS・Androidの両方で動かすことができるとありますが、実際は片方でしか使えないメソッドがあったりするので内部で分岐させながらクロスプラットフォーム対応させているのが現実のようです。

よく比較される製品としてPhoneGapがありますが、見た目に関わる部分をHTML5+CSS3で作ることを前提にしているPhoneGapと比べてTitanium Mobileではレイアウト・ロジックを含め全てJavascriptで記述します。UI部品に関してもネイティブと同様のものを使うのでよりネイティブに近いアプリを作ることができる環境といえるでしょう。



コスプレサイトCureの画像閲覧アプリ「Cure Viewer」

弊社でもいくつかアプリをリリースしていますが、今年(2011年)の9月初頭にリリースしたコスプレサイトCureの画像閲覧アプリはTitanium Mobileによって作られています(現在iPhone版のみです)。
コスプレイヤーな人もそうでない人も使えるアプリなのでこの機会に是非ダウンロードしてみてください!

Cure Viewer (Appstoreで「cure」と検索してください)
http://itunes.apple.com/jp/app/cure-viewer/id460332254?mt=8

さて、このCure Viewerですが、私にとっては突然ふってきた案件でした。まったくアプリの開発経験がない私に

「最近Titanium Mobileっていうのがあるじゃない。
  こういう案件があるんだけど、あぶい君Javascript得意だよね。じゃよろしく。」


と確かこんな感じでふられた記憶があります。大分ざっくりいうとですが。

そんなTitanium Mobile初心者が開発時に参考にしてたサイトは以下の二つです。

Titanium Mobileの公式APIドキュメント
http://developer.appcelerator.com/apidoc/mobile/latest
※更新が遅れている為、たまにドキュメントにのってなくても使えるプロパティーがあるので要注意です。

KitchenSink
https://github.com/appcelerator/KitchenSink
※Titanium Mobileのサンプル集。できるできないで困ったときはまずここをチェックする。

どちらともメジャーではありますが、Javascriptについてある程度精通している場合はこの二つで充分間に合います。
むしろAppstoreにあげるまでの手順の方が難しくて挫折しそうでした。



Titanium Developerの行方

Cure ViewerはEmacsとTitanium Developerで開発しました。

Titaniumアプリの統合開発環境としてTitaniumStudioというものもありますが、エミュの立ち上げとアプリのビルドという必要最低限の機能しか有していないTitanium Developerの方がシンプルで使い勝手がよかったからです。
このTitanium Developerですが現在ではAppcelerator社によるオフィシャルな開発はストップしています。実際githubにあがっているTitanium DeveloperのレポジトリにあるREADMEには以下のように記載されています。

https://github.com/appcelerator/titanium_developer/blob/master/README
Titanium Developer has been replaced by Titanium Studio. Although the source code remains open source, we will no longer be maintaining this code or releasing any new versions.

Appcelerator社としてはTitaniumStudioの方に全面移行したがっているようですね!

しかしTitanium Developerの方も需要があるのか有志の人がTitanium Developerをforkして新しいバージョンとして開発しているようです。
TiDEV Communityというそうです。

TiDEV Communityのスレッド
http://developer.appcelerator.com/question/121270/titanium-developer-130

TiDEV CommunityをDownload
http://api.appcelerator.net/p/pages/app_page?token=m4rZLSv6

TiDEV CommunityではTitanium Developerにはなかった「Launch with Full Compile」ボタンやビルドするSDKのバージョンを選択できたりと、さらにかゆいところに手が届くようになっているのでTitanium Developerを使っていた人におすすめです。

さて、『アプリの開発』〜『リリース』までをネイティブと同様にとどこおりなくできることは分かったとして、ではコミュニティの方はどうなのでしょうか。



Titanium meetup Tokyo #14

28
日本におけるTitaniumのコミュニティとして@masuidriveさんが定期的に主催されているTitanium Meetupが有名です。

この集まり普段はもくもくとコードを書いたりゆるく喋ったりするいわゆるHackathon的な集まりなのですが、先日に開催されたTitanium meetup Tokyo #14ではAppceleratorのCEOであるJeff Haynie氏が来日して発表するということで、普段の雰囲気とは違い大分盛り上がっていました。

JeffからはTitanium(会社、ソフトウェア、コミュニティ含め)の現在と未来のあり方についてと、11月に正式にリリースされるであろうTitanium SDK 1.8betaの具体的なアップデートの内容について発表がありました。

発表の内容はUstreamのRecordedより見ることができます。

Titanium Meetup Tokyo #14 Vol.1
Jeffによるプレゼンと質疑応答

Video streaming by Ustream

Titanium Meetup Tokyo #14 Vol.2
日本のTitaniumerがTitanium Mobileで開発したアプリをプレゼン

Video streaming by Ustream



Titanium Mobile SDK 1.8.0について

私たち開発者にとってもっとも関係のあるSDK 1.8betaの公式リリースですが、Jeffの発表があった翌日に公式ブログにてSDK1.8についてのさらに技術的な詳細が発表されました。

http://developer.appcelerator.com/blog/2011/10/platform-engineering-sneak-peek-at-1-8-0.html

内容を要約してリストアップすると以下のようです。

  • 1.8.0からはtiapp.xmlに設定をすることによりAndroidのJavascript RuntimeをRhinoからV8へと変更することができる(まだいくつか大きな不具合が残っているが、年末までにはいいものをリリースすることができる)
  • Rhinoと比較するとV8の方がJSONのパース、TableViewへのRowのインサート、TableViewのスクロール、アプリケーションの立ち上げにおいてよりいいパフォーマンスがでている
  • View(Ti.UI.Viewなど)にconvertPointToViewという指定したView(Ti.UI.Windowなど)からの相対的な位置を取得するメソッドを追加する(参考)
  • TableViewのappendRowの引数に配列を受け取れることができるようになる
  • [Android] スクリーンの自動OFFを止められるようになる
  • [iOS, Android] longpressというイベントを追加
  • [iOS] ScrollViewにdragStartとdragEndというイベントを追加
  • [iOS] Ti.Media.takeScreenshotからとれるスクリーンショットのサイズがRetinaディスプレイの場合640x960になる
  • [iOS] HXRから取得するコンテンツにディスクキャッシュを用いれるようになる
  • 長らく更新していなかったAPI Documentationが新しくなる
  • MobileWebを作るためのSDKのbetaバージョンも同時にバンドルされる
2011/11/02現在、公式にはリリースされていませんが、手動でSDKの1.8betaをいれることができます。

  1. http://builds.appcelerator.com.s3.amazonaws.com/index.htmlへアクセス
  2. branch: 1_7_Xとなっているプルダウンをmasterに切り替える
  3. OSX, Linux, Windowsそれぞれ必要なリンクをコピー
  4. TitaniumStudioの「Help」->「Install Titanium SDK from URL」へペーストしてインストール [OR] ローカルにダウンロードして該当のフォルダへ解凍してコピー(Macの場合/Library/Application Support/Titanium/mobilesdk/osx/)
SDK1.8対応済みのKitchenSinkは公式のTitaniumMobileのレポジトリをローカルに落とした後の/demos/KitchenSink/にあります

実際に1.8SDK betaでコンパイルしたKitchenSinkを手持ちのiPhone3GS+iOS5にいれてみましたが、Ti.UI.tableViewにRowを2000回インサートしたときのパフォーマンスが1000ms(3100ms->2100ms)ほど短くなっていました(比較したのはSDK1.7.1でコンパイルしたものです)。

より詳細なパフォーマンスチェックをするには時間が必要ですが、確実にパフォーマンスは上がっているようなので正式なリリースが楽しみですね。



終わりに

Javascriptによってアプリを開発するというTitanium Mobileのアプローチは既存のWeb開発者が馴染みのある言語で開発をはじめることができるという点で学習コストを抑えることができ、そして開発スピードを向上できるという利点があります。
また、本業ではない方が実際に動かせるアプリのプロトタイプを手軽に素早く作れるという点でも有用であると思います。

これからの日本におけるTitaniumの発展はまず第一にTitanium自体の高速化と機能の充実が必要なのはいうまでもありませんが、コミュニティの発展とりわけTitanium開発者個々人のアウトプットが重要になると思います。
その意味で先日行われたTitanium Meetup Tokyo #14は日本におけるTitanium発展のターニングポイントの一つであると感じました。

次回は技術寄りのディープな話題を提供できればと思います。それでは!