HTML5とPhoneGapで作る、iPhone/Androidアプリ開発TIPS

第2回エミュレータ/実機なしで動作確認─Ripple Emulatorを使ったPhoneGapアプリ開発

通常PhoneGapを使ったアプリ開発では、iOSシミュレータやAndroidエミュレータ、実機を使った動作確認をすることになります。各エミュレータの起動や実機へのインストールは、それなりの時間が発生します。今回は、機能実装・修正→確認のサイクルを効率良く回すためのモバイルエミュレータ「Ripple Emulator」をご紹介します。

Ripple Emulatorとは

Ripple Emulatorは、Google Chromeベースのモバイルエミュレータです。各モバイルの画面サイズや、GPS、コンパス、モーションセンサを再現し、モバイルアプリの動作テストを行うことができます。

通常PhoneGapアプリを開発する場合、devicereadyイベントが発火した後でネイティブの機能を呼び出すことになります。このdevicereadyイベントはPhoneGap(Cordova)特有のイベントであり、一般的なWebブラウザではサポートされていません。

Ripple Emulatorではdevicereadyイベントがサポートされています。PhoneGapアプリをRipple Emulatorで開くだけで、特別な設定をすることなく、PhoneGapアプリの動作確認が可能になります。

Ripple Emulator
Ripple Emulator

RippleはChromeの拡張としてインストールします。Chrome ウェブストアよりインストールを行います。

対応しているCordova APIは次のとおりですDeveloping on the PhoneGap platform with Rippleより引用⁠⁠。

Accelerometer(モーションセンサ)

種類名前内容
メソッドgetCurrentAcceleration現在のX/Y/Z軸の傾きを取得
メソッドwatchAcceleration継続的にX/Y/Z軸の加速度を取得
メソッドclearWatchwatchAccelerationで指定した加速度情報の監視を中止

Compass(コンパス)

種類名前内容
メソッドgetCurrentHeading現在のコンパスの向きを取得
メソッドwatchHeading継続的にコンパスの向きを取得
メソッドclearWatchwatchHeadingで指定したコンパス向きの監視を中止

Contacts(連絡先)

種類名前内容
メソッドcreate連絡先を作成
メソッドfind連絡先を検索
オブジェクトContact連絡先のオブジェクト
オブジェクトContactName連絡先の氏名に関するオブジェクト
オブジェクトContactField連絡先の汎用項目に関するオブジェクト
オブジェクトContactAddress連絡先の住所に関するオブジェクト
オブジェクトContactOrganization連絡先の所属に関するオブジェクト
オブジェクトContactFindOptions連絡先の検索時に使用するオプションをまとめたオブジェクト
オブジェクトContactError連絡先データベースの操作時に発生したエラーをまとめたオブジェクト

Device(デバイス)

種類名前内容
プロパティdevice.nameデバイスモデル名
プロパティdevice.phonegapPhoneGapのバージョン
プロパティdevice.platformデバイスのOS名
プロパティdevice.uuidUniversally unique identifier(UUID)
プロパティdevice.versionOSのバージョン

Events(イベントハンドラ)

種類名前内容
イベントdevicereadyPhoneGapライブラリのロードが完了し、Cordova APIの機能にアクセスできるようになったタイミングで発火

Geolocation(GPS)

種類名前内容
メソッドgetCurrentPosition現在の位置を取得
メソッドwatchPosition継続的に現在の位置を取得
メソッドclearWatchwatchPositionで指定した位置の監視を中止

Network(ネットワーク)

種類名前内容
プロパティisReachable指定したホスト名に対して、接続が可能かどうかを確認(PhoneGap 0.9.1まで。PhoneGap最新版ではこの機能はサポートされていません)

Notification(通知)

種類名前内容
メソッドalertアラート表示。執筆時点で、ダイアログのタイトルとボタンラベルの変更は不可
メソッドbeepビープを使った通知
メソッドvibrateバイブレーションを使った通知

執筆時の最新バージョンは、9月25日(米国時間)に公開された 0.9.9 です。現在はβ版として提供されています。本稿では、このRipple Emulatorの使い方をご紹介します。

ここでの動作環境は次のとおりです。

  • OS: Mac OS X 10.8.2(Mountain Lion)
  • Google Chrome: 22.0.1229.79
  • PhoneGap: 2.1.0

Ripple Emulatorの使い方

PhoneGapで開発されたアプリケーションを、RippleがインストールされているChromeで開きます。Webサーバに配置する必要があるので注意してください。

  • ×: file:///Users/hiroaki//HelloRipple/www/index.html
  • ○: http://localhost/HelloRipple/www/index.html

PhoneGapで作成されているアプリケーションを開き、Rippleのアイコン画像をクリックします。[Enable]ボタンをクリックして、Rippleを有効にします。

[Enable]ボタンをクリックし、Rippleを有効に
[Enable]ボタンをクリックし、Rippleを有効に

Rippleを起動すると、画面中央に作成したアプリケーションの画面が表示されます。画面左右には、OSや加速度を示す情報や、GPS位置情報を操作できるパネルが表示されます。

Ripple動作全体図
Ripple動作全体図

それぞれのパネルは、右上のアイコンをドラッグすることで、左右どちらか好きなように配置することができます。必要のないパネルは、閉じておくことも可能です。

Devicesパネル

それでは各操作パネルについて見ていきましょう。Devicesパネルでは、デバイスやデバイスの向きを変更することが可能です。

Devicesパネル
Devicesパネル

デバイスはプルダウンで変更します。デバイスを変更すると、画面中央に表示されている画面デザインの縦幅・横幅が変化し、後述のInfomationパネルのOS情報などが更新されます。用意されているデバイスは次のとおりです。

デバイス名機種・種類
BlackBerry10 Dev Alpha, Bold 9700, Bold 9900, Curve 9300, Curve 9350/9360/9370, Pearl 9100,Playbook, Style 9670, Torch 9800, Torch 9810, Torch 9860/9850
Generic
(汎用デバイス)
FWVGA(480x854), HVGA(320x480), QVGA(240X320), WQVGA(240x480), WVGA(480x800)
HPPre 3, Veer
HTCG1, Legend, Tattoo
Nexus(Galaxy), 7(Tablet), One, S
NokiaN8, N97/5800
PalmPre, Pre2
iPadiPad, iPad3
iPhone3G/3GS, 4/4S
Devicesパネルで選択できるデバイス一覧
Devicesパネルで選択できるデバイス一覧

Orientationではデバイスの縦・横を切り替えることができます。

Platformsパネル

Platformsパネルでは、各種プラットフォームを変更することができます。

Platform
Platform

プラットフォームを切り替えると、対応しているDevices/Platform Versionのみが選択できるようになります。用意されているプラットフォームは次のとおりです。

プラットフォームバージョン
Apache Cordova / PhoneGap1.0.0, 2.0.0
BlackBerry 10 WebWorks1.0.0
WebWorks2.0.0
WebWorks-TabletOS2.0.0
Mobile Webdefault
Platformパネルで選択できるプラットフォーム一覧
Platformパネルで選択できるプラットフォーム一覧

Apache Cordova / PhoneGapでは、バージョン1.0.0と2.0.0を切り替えることが可能です。

Infomationパネル

Infomationパネルでは、現在のプラットフォームや選択しているデバイス、OS名、画面サイズ、ユーザエージェント名などが確認できます。

Infomationパネル
Infomationパネル

Accelerometerパネル

Accelerometerパネルでは、加速度の確認と操作が行えます。

Accelerometerパネル
Accelerometerパネル

X方向、Y方向、Z方向の加速度が表示されます。画面に表示されている3Dの端末オブジェクトをドラッグで操作すると、加速度が生じます。パネル下部の[Shake]ボタンをクリックすると、シェイクの動作が行われます。

Device & Network Settingsパネル

Device & Network Settingsでは、通信回線の変更ができます。

Device & Network Settingsパネル
Devic

Connection Typeで用意されている通信回線は次のとおりです。

  • UNKNOWN
  • ETHERNET
  • WIFI
  • CELL_2G
  • CELL_3G
  • CELL_4G
  • none
Connection Typeで選択できる通信回線一覧
Connection Typeで選択できる通信回線一覧

Geo Locationパネル

Geo Locationでは、GPS座標の確認と変更が行えます。

Geo Locationパネル
Geo Locationパネル

項目名の意味は次のとおりです。

ラベル内容
Latitude緯度を示します
Longitude経度を示します
Altitude高度を示します
Accuracy緯度・経度の誤差を示します
Altitude Accuracy高度の誤差を示します
Heading方角を示します。スライドを操作すると、0から359.5までの値が格納されます。最小単位は0.5です
Speed速度を示します
GPS Delay(seconds)GPSのディレイを秒単位で指定します。スライドを操作すると、0から30までの値が格納されます
Simulate GPS Timeoutチェックすると、GPS取得のタイムアウトを再現します
Navigation SimulatorGPXファイルを選択し、移動中のGPS座標の動きを再現します

座標はLatitude/Longitudeの数値を直接変更するほか、パネル下部に表示されている地図の位置を変更することでも操作可能です。

Headingスライダではコンパスの向きを再現します。たとえばCordova APIのCompass API/compass.watchHeadingメソッドとHTML5/Canvasを使用してコンパスを実装します。iOSシミュレータではコンパスの向きをエミュレートすることができませんが、RippleではHeadingスライドを左右に動かすことで、コンパスが向いている方向を自在に調整・再現が可能です。

RippleのGeo location/Headingスライダを操作して、コンパスの向きを調整・再現する

Configパネル

Configパネルでは、ルートディレクトリに配置されているconfig.xmlの内容を表示します。config.xmlは、Configuration Documentに則り記述します。

Configパネル
Configパネル

Eventsパネル

Eventsパネルでは、特定のイベントを発火させることができます。

Eventsパネル
Eventsパネル

選択できるイベントの種類は次のとおりです。

イベント内容
devicereadyPhoneGapライブラリのロードが完了し、Cordova APIの機能にアクセスできるようになったタイミング
backbutton戻るボタンが押されたとき
menubuttonメニューボタンが押されたとき
pauseアプリケーションがバックグラウンド動作になったとき
resumeアプリケーションがバックグランドから復帰したとき
searchbutton検索ボタンを押したとき
onlineオンラインになったとき
offlineオフラインになったとき
Eventsパネルで選択できるイベント一覧
Eventsパネルで選択できるイベント一覧

なお、PhoneGapで対応しているイベントはdevicereadyの1種類のみです。ほかのイベントを選択して[Fire Event]をクリックしても、各イベントハンドラで捕捉することはできません。

Settingsパネル

Settingsパネルでは、Rippleの設定を変更します。

Settingパネル
Settingパネル

Rippleカスタマイズの実際

カスタマイズ例は次のとおりです。SettingsパネルでThemesを[light]に変更し、パネルの位置を調整しました。画面右側には、Chromeのデベロッパーツールを表示しています。

Rippleカスタマイズ例。Chromeで動作しているので、デベロッパーツールがそのまま利用可能
Rippleカスタマイズ例。Chromeで動作しているので、デベロッパーツールがそのまま利用可能

イベントの発火をはじめ、Cordova APIの機能を完全に再現できない箇所もありますが、画面デザインやGPS、加速度、コンパスを直感的に操作できるのは大きな魅力でしょう。また、Webサーバのエイリアスが設定されているパスにPhoneGapプロジェクトを作成するようにすれば、iOSシミュレータやAndroidエミュレータ、実機へのインストールの時間コストも少なくてすみます。

最終的にはすべて実機でテストしたいところですが、それまでのモック作成や画面デザイン調整はRipple Emulator。JavaScriptの機能テストはiOSシミュレータ/Androidエミュレータ + weinre。最終テストは各実機でといったように、使い分けができるようになっておくと効率の良い開発が可能になります。

HTML5でモバイル向けのアプリを開発する場合、各デバイスやベンダごとに方言が存在し、微調整に大変な労力が発生します。決定打といえる解決手段ではありませんが、Ripple Emulatorやweinreといった開発ツールなどを駆使して、機能実装・修正→確認のサイクルを少しでも短くし、開発を進めていきたいところです。

なお、weinreのインストール・操作方法についてはもっと使おうPhoneGap/Cordova 2.0.0 第3回 weinreを使ったiOS/Androidアプリの動作検証をご参照ください。

おすすめ記事

記事・ニュース一覧