すべて
500万人を超える規模の利用者を抱えるコミュニティサービス「アメーバピグ」は、仮想空間にてユーザーが自分そっくりなキャ ラクターであるピグを通して洋服のきせかえや、おでかけ、他のユーザーとのリアルタイムな会話を楽しむことができるサービスです。
今回はアメーバピグPC版からAIR for Androidへの移植の過程をお話します。
Android 2.2からFlash Player 10.1 が動くようになったので
Android端末にFlash Player 10.1 をインストールしてブラウザからアメーバピグPC版(pigg.ameba.jp)の動作を確認してみました。
Android上でもサクサク動いて驚きましたが
等・・。
動くには動きますが、実際に使ってみると操作が困難です。
原因は、もともとPC画面を想定してつくっているため、ピクセル密度の高いスマートフォンの画面だとボタン等が小さくなってしまうこと。それから、入力手段がマウスからタッチパネルにに変わったことで、操作方法が影響を受けたことでした。スマートフォンサイズの画面だとボタン類が小さいことや、マウスからタッチパネルに変ったことで指定したい箇所の範囲がマウスポインタから指にかわったことも原因でした。
そこで「Adobe AIR for Android 」で作り直すことにしました
はじめに結論からですが
機能面の移植は簡単にできました。
その理由は以下の2点です。
サーバーサイド(java)はそのまま
クライアントサイド(actionscript)の通信分もそのまま
表示する部分とそれに付随するロジックだけ作り直します。
ピグフレームワークは、アメーバピグの開発に使われているフレームワークです。多人数で同時に開発できるように、Viewモジュールプロジェクトと、各Viewモジュールのswfをロードしてサーバーとの通信を行うmainプロジェクトから構成されます。
各viewモジュールは、モックデータを作る事で、サーバー接続無しでも単体で表示確認が出来るようになっています。単体での動作確認後に、mainプロジェクトで各viewモジュールをロードしてサーバー接続を含めた全体のテストを行います。これで問題が出なければ完成です。
今回は、mainプロジェクトはほとんど改修せずに、各ViewモジュールのみAndroid用に作りなおしました。
PC版はブラウザ内で動くFlashアプリですが、Android版は直接OS上で動くAIRアプリです。
そのため、Flash BuilderのプロジェクトをAIR用に再作成します。
→actionscriptプロジェクトはFlexプロジェクト(Application type>Desktop application)で再作成
→ライブラリプロジェクトはFlex Library Complier > Include Adobe AIR libraries にチェックを入れます。
AIRだとデフォルトではloadBytes()を使ったswfの読み込みができない設定になっています。そのためallowCodeImportをtrueに設定して外部SWFロードをできるよう変更します。
if(Multitouch.supportsTouchEvents)
{
addEventListener (TouchEvent.TOUCH_BEGIN, onTouchBegin);
addEventListener (TouchEvent.TOUCH_MOVE, onTouchMove);
}
Multitouch.inputMode = MultitouchInputMode.GESTURE;
addEventListener( TransformGestureEvent.GESTURE_ZOOM, onGestureZoom);
private function onGestureZoom(e:TransformGestureEvent):void
{
_currentScale *= e.scaleX;
// 最小値、最大値の設定
if(_currentScale < 0.5) _currentScale = 0.5;
if(_currentScale > 3.0) _currentScale = 3.0;
// スケール変更
changeScale(_currentScale, true);
}
private function onKeyDown(event:KeyboardEvent):void
{
if(event.keyCode == Keyboard.BACK)
{
event.preventDefault();
}
}
stage.addEventListener(Event.DEACTIVATE , onDeactivateHandler);
private function onDeactivateHandler(event:Event):void
{
NativeApplication.nativeApplication.exit();
}
機能を絞って画面に配置します。
仮のボタン類を実機で確認しながら大きさや配置を決定
その中でいくつか気をつけた点をあげます。
配置と大きさを決定したものを、実機で確認します。
操作感に問題なくなった時点で実際のデザインを適用します。
この状態でユーザーテストを繰り返し
着せ替え、ヘルプを追加したり、デザインの修正を行い
完成です。
48px*48pxのpng
72px*72pxのpng
ピグはインターネット接続が必要なので
インターネット接続を許可します。
<uses-permission android:name="android.permission.INTERNET"/>
5 方向ナビゲーション制御の設定は削除します。
<uses-configuration android:reqFiveWayNav="true"/>
ギャラクシー端末からマーケット検索できない現象がありましたので5 方向ナビゲーション制御の設定は記述しませんでした。
証明書の有効期限は25年を指定
adt -certificate -cn pigg_android -c JP -validityPeriod 25 2048-RSA pigg_android.p12 xxxxxxxx
-validityPeriod
オプション追加されたのでこれで25を指定します(デフォルトは5年)
$AIR_SDK/bin/adt -package -target apk -storetype pkcs12 -keystore $KEY/pigg_android.p12 -storepass xxxxxxxx pigg_air.apk pigg_air-app.xml pigg_air.swf main.swf swf/* icons/* pigg/*
adb install -r pigg_air.apk
Android端末自体も今回初だったので移植は大変だろうと思っていたのですが、意外と時間も掛からずに移植できました。機能部分の移植に関しては本当にすぐにできた印象で、あとは端末画面サイズとタッチパネル用にどれだけ操作しやすくするかに時間をかけました。
課題はPC版とのソース差分が出てくるので、どのようにスムーズに運用していくかになります。
今後はまだ足りていない機能を追加したり、Androidだからできる機能も追加していきます。
Tutorials and samples |
AIR blogs |
More |
AIR Cookbooks |
More |