アルバイトのtake(たけ)です。MobileでAndroidアプリを作らせていただきました。勉強会カレンダーのAndroid用ビューアです。ilnt/IT-study-calendarで公開しています。勉強会カレンダーから1ヶ月毎にデータを取得し、リスト表示します。地域(都道府県)でフィルタを掛けて、全国の勉強会を絞り込むことができます。MobileとはAppcelerator社がリリースしているJavaScriptを用いてAndroidやiOSのアプリを開発するためのプラットフォームです。Javaを使ったことが無い私でもJavaScriptでAndroidアプリが作れる!ということで、開発中にハマったポイントをいくつかご紹介させていただきます。Mobileの基本的なことについて知りたい方は、下記の記事が参考になります。Studioと呼ばれる開発環境を導入します。Studioを元にしたIDEです。Tools)と競合するなど開発環境を汚してしまうため、既存のEclipseとは別にスタンドアロンでインストールすることをお勧めします。Studioでパスの設定をします。Mobileでは、UI部分も全てJavaScriptなので、WebであればHTMLやCSSで記述する部分もJavaScriptで書きます。(JSSというCSSのようなものは使えるようです)つまり、意識してUIとロジックを分離するようにしなければ、すぐにコードが煩雑になります。Mobileには癖がありますが、うまく使うことができれば、JavaとObjective-Cを習得する学習コストを考えると比較的簡単にアプリを作ることができます。Mobileでハマったポイントと解決策を5つほど紹介します。2.1以下、Androidの場合1.WindowやViewのサイズをautoにしていると、サイズが取得できないWindowやViewのサイズが指定されていない場合やautoにしていされている場合は、その要素のサイズを取得すると0が返ります。解決案:端末のディスプレイサイズ(Ti.Platform.displayCaps)を分割して要素を配置します。*/2.ステータスバーの高さを取得する術が無いディスプレイのサイズを元に、画面を分割して要素を配置します。縦方向に30pxほどズレが生じます。さきほど取得したディスプレイサイズにはステータスバーが含まれているからです。→ステータスバーの高さを知る術はない解決案:ステータスバーの高さは定数で指定し、ディスプレイの高さから引いておきます。~というエラーを吐くTi.APIを用いて出力させると文字化けしませんが、UIに描画すると文字化けを起こす場合があります。解決案:String()を使い、Stringオブジェクトに変換してからUIへ描画させます。Mobileで想定されているエラーの場合は、端末側にデバッグメッセージがアラートされますが、予期せぬ例外が生じるといきなり落ちます。StudioにJavaのエラーが吐かれますが、JavaScriptしか書いていないのにJavaのエラーを見せられても対処に困ります。解決案:Tiオブジェクトのメソッドに渡す引数の型や、メソッドの使い方を間違えていませんか。Tiが無言で落ちる場合は、Tiネイティブに近い部分のコードを疑うと良いです。5.その他、注意する点Viewのオブジェクトに任意のデータを持たせることはできない→無視されるWindowには可能です。別のコンテクストにデータを渡したい場合はWindowオブジェクト経由で渡します。ViewがWindowに対して絶対的に配置されるViewはデフォルトでWindowに対して絶対的な配置です。horizontalに指定することで、垂直・水平方向へ相対的に配置させることができます。文字の量が可変になるLabelをViewの入れ子にすると、Viewのサイズに困る例えば、LabelがViewの入れ子になっているものを縦に複数並べたい場合、Viewのサイズを可変にできないため、Labelのまま並べます。Mobileでは一度忘れることをお勧めします。MobileにはIEもDOMもありません。あるのはTiオブジェクトとブラウザの数より多いAndroid端末だけです。MobileでDOMの感覚のまま複雑で非同期な描画処理をさせると重すぎて動かなくなるため、できるだけTiネイティブで用意されている要素をそのまま使うと軽快に動作します。※上記のコードはこの記事を書いた当時のもの(v0.1.1)です。Mobileは、Titaniumで用意されている部品をそのまま使用して実装できるシンプルなアプリの開発には向いていますが、複雑な描画や速度を求められる処理には向かないように感じました。AndroidとiOSのアプリを同じ言語で開発することができますが、それは同じコードが動くという意味ではなく、UIなどの実装の差は開発者が埋めなくてはいけません。学習コストが少なくなることは事実です。iOSの簡単なアプリを作ろうと考えた際に、使い勝手を覚えておくと便利なプラットフォームになると思います。最後に、今回アプリを作るにあたって参考にさせていただいた資料を紹介します。Mobileでアプリ開発を考えている方は、ぜひ目を通してみてください。Mobileの暗黒ノウハウを公開します。このブログは証明できない。»ブログ記事検索このブログについてこのブログは、札幌市・仙台市の「株式会社インフィニットループ」が運営する技術ブログです。開催されます!【1月25日放送】テレビ北海道(TVh)「けいナビ~応援!どさんこ経済~」に取材いただきました!【中途採用向け】1月21日(火)札幌本社で会社説明会を開催いたします!あけましておめでとうございます!2020年もよろしくお願いいたします。