PoiはTitaniumで作りました
タイトル通りなんですが、
自分はめんどくさがりなのでPoiに限らず作るアプリは
ほぼ全部Titaniumで作っています。
理由は簡単で1コードで(ほぼ)済むからです。
内部的に条件分岐をあまり使わない書き方には ちょっとコツがあって
Titaniumの良い所を消したりしながらの開発になるので
万人にお勧めするわけではないですが、
ツール系のアプリを作るのであればTitaniumは強力な武器だと感じています。
今回はそこらへんのコツの一部を書いてみたいと思います。
オレオレフレームワークでやっています
アイタタと言われる事も多いオレオレフレームワークですが、
自分の場合alloy等が出るまえから触っていた事もあって、
せめてMVCで分けるくらいしないと並列にjsファイルが並んでしまって
大変カオスになっていました。
そんなわけで、当時オレオレフレームワークを作ったわけですが、
コンセプトはこんな感じです。
・Android(Phone) / Android(Tablet) / Iphone / Ipad の条件分岐を出来るだけ書かない
・MVCっぽくわかりやすいフォルダ構成
・CSSのようにVIEWの設定ファイルは専用ファイルで書き出し
この3つを行うためにこんなフォルダ構成になっています。
Resources /
android/(既定の画像フォルダ)
iphone/(既定の画像フォルダ)
settings/
model/
controller/
ipad/
style/
ipad/
こんなフォルダ構成で、
MVCっぽく(Vないですが)書いていきます。
Titaniumのクセでiphoneがなんでもうまくいきやすいので、
デフォルトの処理を全てiphoneフォルダにファイルを置いてそこに書きます。
その上でメソッドごとにandroidは専用の書き方が必要な物などは
androidフォルダにファイルを作ってあげるとそれで自動で上書きする仕組みです。
またstyleフォルダも同様で、
デフォルトをiphoneに書いておいて、
書く端末ごとに必要な処理(ipadだともっと広くするとか)
そういうのは対象のフォルダにファイルを作れば自動で上書きします。
こんな感じで、条件分岐は使わず、os判定だけ一番最初にして
それに合わせてrequireしていくフレームワークを作って開発しています。
なるべく専用メソッドを使わない
Titaniumにはたくさん Ti.UI.iPhone.*** みたいに端末専用のメソッドがあって、
それらはもちろん専用なのでandroidではクラッシュ!みたいなことになります。
そのため、これらをなるべく使わないようにするのが一番楽になります。
ちょっとめんどくさいですが、
・ヘッダーとかフッターのメニューは自作する(最前面にViewを張り付けるだけ)
・AndroidのToastとかも自作する(単にViewをフェードアウトさせるだけですが)
等は自分は必ずやっています。
なるべくアニメーションは使わない
Titaniumはどうしてもandroidでの動作がイマイチです。
その中でもアニメーションは本当にめんどくさく、
ちょっと古いですが、
Titanium Androidのアニメーションについて(3.1.3以前) - Umi Uyuraのブログ
こんな感じで一昔前まではandroidでアニメーションしようとすると
アニメーション専用のViewを一枚かましてそこにメインのデータを入れていく等
工夫が随所に必要でした。
幸いなことに自分はあまりアニメーションを必要としていないので
そこまでがっつりハマった事はないですが、
下手にiphoneでは動いてしまうため原因も分かりづらく、
なるべく使わないに越した事は有りません。
最後に
Titaniumでなるべくソースコードを共有してIphone Android の両方で動く
アプリの開発方法の注意点でした。
ここまで気にしないといけないならいっそ・・・と思いがちなんですが、
少なくともツール系に限って言えば上記のようなものを
うまく肌感覚で会得すれば一発で両方同時リリースが可能なのは大きいです。
皆さんも是非チャレンジしてみてください。