Titanium™ Advent Calendar 2013 5日目です。
Titaniumを2010年12月から利用し始めて気づいたら3年弱位のお付き合いになります。
趣味と実益を兼ねて、これまではiPhone向けアプリのみに注力し、おかげさまで今年は以下2本アプリをリリースできました。
- Qiitaというサイトの閲覧に特化したiPhoneアプリのTiQiita
- クラフトビールが飲める・買えるお店が検索できるiPhoneアプリのCraftBeerFan
CraftBeerFanの方は、リリースした勢いがあるうちに、Android版もリリースしました。
ちょっと話題が変わりますが、AWS 専業のSIとして有名なサーバーワークスの方々がはじめてのAWS、“つまずきポイント”はココだという記事の中で
本稿では、これからAWSを使い始めようとしているエンジニアを対象に、“つまずきポイント”を明らかにし、その活用を手助けすることを目指している。
ということを書かれていました。
Android向け開発については、取り組み始めて3ヶ月程度と大した経験は無いのですが、iPhone→Androidという流れで大小含めて色々つまづいた部分があります。
私のように、これまでiPhone向けアプリに取り組み、Android向けアプリに取り組もうという人がおそらく「つまづく」であろうポイントについて触れておくことで、無駄なことに時間を取られることなくスムーズに開発に取り組んでもらえればと考えてこのエントリを書くことにしました。
UI関係でのつまづきを振り返る
iPhone版の場合には
# CoffeeScriptのサンプルソース mainLabel = Ti.UI.createLabel width:240 height:30 left:5 top:5 color:"#222" text:"test" font: fontSize:24
のように、幅、高さなどの値をそのまま数値でかけますが、Androidの場合には、そのままにすると、とても小さく表示されてしまいます。
これが最初何故かわからなかったのですが、Androidの場合にはsngmrさんがti.ui.defaultunitをdipにした場合の取得サイズというQiitaの記事でまとめてるように、単位系の指定というのが必要というのを知らずにつまづきました。
この事に気づかずに、地味に無駄な時間を費やした気がします
# CoffeeScriptのサンプルソース # Androidの場合 mainLabel = Ti.UI.createLabel width:"240dp" height:"30dp" left:"5dp" top:"5dp" color:"#222" text:"test" font: fontSize:"24dp"
UI関係だと TitaniumのClassicな開発スタイルでActionBarの設定方法に意外とハマったというのもあったので興味ある方はこちらもご覧ください
地図機能はモジュールを利用することを知らなかったことでつまづく
前述したCraftBeerFanは、GPSで現在位置を取得して、周囲のお店情報を検索する機能を実装してます。地図機能をiPhoneの時と同様に使えるのかと思い込み、iPhone版で作っていたコードをそのまま流用してました。
実際そのコードでも起動はするし同じように画面スクロールして検索は出来ます。・・・がスクロールを数回繰り返しえると、アプリが落ちるという謎の現象に悩まされました。
公式ドキュメントを改めて眺めていたら、Android版の場合には、MapModuleというものがあることに、気付き、それを使うことで無事解決・・と思ったのですがその後またドツボにはまりました。
TitaniumでAndroid向けのMapModule動作させるのにとても苦労したのでその振り返りというエントリで詳しく書いてるので似たような経験をしてる人の参考になればと思ってます
他のつまづきポイント
- Google Playへの公開で必要となるアプリケーションへの署名の手順方法
- 前述のCraftBeerFanでregionChangedイベントが頻発するので、それを回避するために、ryugoo さんが作ったTiGeoHashを活用方法
など、いくつもあった気がしたのですが、正直思い出せません・・・
ただ、以前Android向け開発での気付きについて今後書いていきますと書いたように今後ブログでまとめたり、Titanium+Windows環境+Androidアプリ開発やりたいという人もそこそこいると思うのでそういう人向けにこのあたりで情報まとめつつ、ストリートアカデミーで不定期ですがワークショップやっていこうと思ってます。
最後に
現在のもくもく会の前身のTitanium MeetUpに参加してた頃に、経験豊富な方の自己紹介などで
「TitaniumでAndroidやってます〜」
というと、他の経験豊富な人が
「あぁー(遠い目)」
みたいな感じのやりとりをよく目にしてましたが、あの当時は正直どう大変だったのか肌感覚が無いのでいまいち、ピンと来ませんでした。
わずかな期間とはいえ、自分がこうやって経験すると、あの時の経験豊富な人たちが発する
「あぁー」
の意味する所が今では実感できるようになり、大人の階段を1つ登れた今年1年だったかなと思います。
さて、明日は名古屋のTitaniumユーザ会の中心メンバーのsngmrさんです