最近のTitanium前回の連載からの間に,Appcelerator社の開発者Blogでいくつか大きな発表がありました。SDKの次期バージョン1.7.0がRCになったりしているようです。1.7.0はAndroid開発での機能が強化されており,すでにほとんど問題なく使用できるので興味のある方は最新版をダウンロードして使ってみると面白いかもしれません(SDKのインストール方法についてはこの記事の最後に記載しています⁠)⁠。Androidでの開発での注意点さて前回の記事でAndroidでの開発環境構築ができたので,今回からAndroidでの開発について説明していきます。TitaniumはiPhoneアプリ開発にもAndroidアプリ開発にも対応しており,ほとんど同じようなコードでアプリを作成することができます。言っても,まったく同じコードでiPhoneとAndroidのアプリが同時に作成できるということではありません。今回はどのような点がAndroidアプリ作成の問題になるのかを先に解説していきます。tabGroup.open();というようなコードをapp.jsに書き,TabGroupは作成するがTabBarを表示しない,という実装をしてきました。トリッキーな実装ですが,これはTabGroupが存在しないと正しく動かなかったり実装が難しくなる機能を使うための処置でした。現在のことろこの方法はAndroidでは利用できません。windowオブジェクトのhideTabBarが機能せず,タブバーが常時表示されるようになります。backgroundColor:'#fff'});win1.open();というように,直接windowをopenしてしまえば,当然タブバーが表示されなくなります。TabGroupを必要とする機能は使えなくなります。iPhoneでTabGroupを使う大きな理由は,画面上部のNavigationBarを表示したまま画面遷移を行いたいということですが,AndroidにはそもそもNavigationBarに当たるものがなく,画面遷移は本体側のボタンを利用することが多くなります。よって必要とする画面構成によってはTabGroupの利用をやめることも考えましょう(一部機能がTabGroupが無いと機能しないことがありますので注意してください⁠)⁠。Touchであっても画面解像度は縦480×横320であると考えて,UIの位置を決めることができました。Android端末にはいわゆるスマートフォン型の物から,スレートと呼ばれる大型のものまでさまざまな端末が存在し,画面解像度もまちまちです。そのため多端末に対応するためにはUIの位置を画面解像度から計算して決定するか,画面解像度ごとにデザインを設定することのできるJSSという機能の利用を考えるかのどちらかが必要です。この二つの方法については次回以降解説します。エミュレータが遅いAndroidエミュレータは,iPhoneのそれと比較すると非常に速度が遅く使い勝手の悪いものです。起動が遅く,開発中にコードを書きなおすたびに起動していると開発サイクルが非常に悪くなります。回避する方法は2つあって,ひとつはエミュレータを終了させないことです。トリッキーな使い方になりますが,以下の方法で終了させずに新しいコードを反映させることができます。DeveloperのLaunchボタンを押すすると,アプリが起動中の場合は一旦終了してもう一度立ち上がるようになります。DeveloperのStopをクリックしてエミュレータを終了してください。普段のエミュレータ動作も相当に遅いので,なるべくエミュレータの画面解像を低くしておくことでいくらか動作をまともにすることができます。Developerの表示するログレベルをDebugにしておくと便利です。一つの方法は,エミュレータの使用をやめて実機で開発を行うことです。iPhoneよりも実機への転送が簡単なので,遅いエミュレータよりは快適なことが多いです。実機に転送してしまうと,コンソールを使ったデバッグができなくなるのでこれはこれで難しいところです。実機へ転送するのには,USBケーブルでPCとAndroidを繋ぐのとあわせてAndroid側の設定も必要です。Androidの設定画面から,「⁠アプリケーション」>「開発」>「USBデバッグ」と遷移してこのUSBデバッグの項目をONにしてください。OAuthがなかなか上手く動かない本来,今回の記事では今までのTwitterサンプルアプリを,Androidでも動くようにしてどちらでも開発が簡単ですね。いうような事を書くながれにしたいところなのですが,OAuthに関してはなかなか一筋縄にいきませんでした。昨年から多くの人がこの問題にチャレンジしていて,Appcelerator社のQ&Aにも,http://developer.appcelerator.com/question/117053/oauth-adapter-for-androidという記事があります(残念ながらQ&Aにある,birdhouseというライブラリは筆者の環境では動作しませんでしたが⁠)⁠。本連載でも利用している,mogyaさんのtwitter_apiについてのパッチも試行されています。http://d.hatena.ne.jp/donayama/20110404/twitter_api_js_with_android筆者も実験を繰り返しており,もう少し検証した上でこの連載で利用しようと考えていますのでもうしばらくお待ちください。まとめ今回は,Androidでの開発について問題となる点のエミュレータの動作と,Androidの実機に転送するさいの注意についてまとめました。物足りない内容であったかもしれませんが,iPhoneに比較するとAndroidでの開発は問題が多いので開発に入る前に先に解説させて頂きました。1.7.0もまもなくリリースされ,Android向けの開発も日々改善されていますし,OAuthを利用するような複雑なアプリでなければ十分に利用価値のあるものです。いうことで,次回から実際の開発例に入りますので,Android開発の難しい点に諦めずに次の連載も楽しみにしていただけたらと思います。SDKのインストール方法http://builds.appcelerator.com.s3.amazonaws.com/index.htmlから最新のSDKをダウンロードします。左側カラムの最上部,OSX用のパッケージをダウンロードしてください。branchが1_7_Xになっているか確認してください。ダウンロードしたzipアーカイブを解凍します。Support/Titanium/mobilesdk/osx⁠”に移動します。これでインストールは完了です。Developerを起動すると,プロジェクトのEdit画面からSDKのバージョンを変更できるようになっているはずです。アプリケーションエンジニア。スマートフォンアプリからSQLチューニングまで幅広く格闘中。好きな言語はRuby。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。