読者です 読者をやめる 読者になる 読者になる

TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

TitaniumでのAndroid開発3ヶ月経験者が過去のつまづきを振り返る

Advent Calendar 2013 Titanium Mobile

Titanium™ Advent Calendar 2013 5日目です。

Titaniumを2010年12月から利用し始めて気づいたら3年弱位のお付き合いになります。

趣味と実益を兼ねて、これまではiPhone向けアプリのみに注力し、おかげさまで今年は以下2本アプリをリリースできました。

CraftBeerFanの方は、リリースした勢いがあるうちに、Android版もリリースしました。

ちょっと話題が変わりますが、AWS 専業のSIとして有名なサーバーワークスの方々がはじめてのAWS、“つまずきポイント”はココだという記事の中で

本稿では、これからAWSを使い始めようとしているエンジニアを対象に、“つまずきポイント”を明らかにし、その活用を手助けすることを目指している。

ということを書かれていました。

Android向け開発については、取り組み始めて3ヶ月程度と大した経験は無いのですが、iPhoneAndroidという流れで大小含めて色々つまづいた部分があります。

私のように、これまで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さんです