Adobe
製品
Acrobat
Creative Cloud
Creative Suite
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
その他の製品一覧
ソリューション
デジタルマーケティング
デジタルメディア
教育
金融機関
Web Experience Management
その他のソリューション
ラーニング サポート ダウンロード 会社情報
ご購入
アドビストア 安心のサポート& サービス
アカデミックストア 学生、教職員、個人向け
アドビライセンスストア 中小企業向け
ボリュームライセンスについて 企業、教育機関、官公庁向け
販売パートナー
キャンペーン情報
検索
 
情報 サインイン
ようこそ、 さん カート 注文状況 マイアカウント
マイアカウント
注文状況
アカウント情報の変更
コミュニケーションの設定を変更
サインアウト
サインインの目的 お客様のアカウントや体験版ダウンロード、製品の拡張機能、コミュニティエリアへのアクセスなどを管理するため
Adobe
製品 セクション ご購入   検索  
ソリューション 会社情報
サポート ラーニング
サインイン サインアウト 注文状況 マイアカウント
先行予約の提供開始予定日Date. 商品が発送されるまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。 先行予約の提供開始予定日Date. ダウンロードの準備が整うまで、クレジットカードには課金されません。提供開始の予定日は変更される場合があります。
個数:
ご購入には学生・教職員個人版の購入資格の確認が必要です。
小計
カートの中身を見る
Adobe Developer Connection / Adobe AIRデベロッパーセンター /

「アメーバピグ for Android」 開発事例

著者 切通 伸人氏

切通 伸人氏

Content

作成日

28 November 2010

ページ ツール

Facebookでシェア
Twitterでツイート
LinkedInでシェア
ブックマーク
印刷

タグ

開発環境

この記事に必要な予備知識

  • Adobe AIR 2.5 SDK
  • Flash Builder 4
  • Flash CS5
  • Nexus One

ユーザーレベル

すべて

必要な製品

500万人を超える規模の利用者を抱えるコミュニティサービス「アメーバピグ」は、仮想空間にてユーザーが自分そっくりなキャ ラクターであるピグを通して洋服のきせかえや、おでかけ、他のユーザーとのリアルタイムな会話を楽しむことができるサービスです。
今回はアメーバピグPC版からAIR for Androidへの移植の過程をお話します。

ぴぐともの部屋に訪問画面
ぴぐともの部屋に訪問画面
きせかえ画面
きせかえ画面

まずは検証から始めます

Android 2.2からFlash Player 10.1 が動くようになったので
Android端末にFlash Player 10.1 をインストールしてブラウザからアメーバピグPC版(pigg.ameba.jp)の動作を確認してみました。

PC版のアメーバピグをアンドロイド上で実行してみたところ
PC版のアメーバピグをアンドロイド上で実行してみたところ

Android上でもサクサク動いて驚きましたが

  • ボタンが小さすぎ
  • アドレスバーが画面の領域をとってしまう
  • チャット用のテキストフィールドにフォーカスがあたったままなのでキーボードが閉じない

等・・。

動くには動きますが、実際に使ってみると操作が困難です。
原因は、もともとPC画面を想定してつくっているため、ピクセル密度の高いスマートフォンの画面だとボタン等が小さくなってしまうこと。それから、入力手段がマウスからタッチパネルにに変わったことで、操作方法が影響を受けたことでした。スマートフォンサイズの画面だとボタン類が小さいことや、マウスからタッチパネルに変ったことで指定したい箇所の範囲がマウスポインタから指にかわったことも原因でした。

AIR for Android を使った開発

そこで「Adobe AIR for Android 」で作り直すことにしました
はじめに結論からですが
機能面の移植は簡単にできました。
その理由は以下の2点です。

  1. 元となったPC版のソースが粗結合な構造になっていたこと
    元々複数人で平行して作業できるよう設計されていたものが、必要な部分だけAndroid対応するのに役立ちました。
  2. AIR for Androidを使ったこと
    AIRアプリとしてデスクトップ上で動く機能はほぼそのまま使えます。
    なのでUI部分に時間をかけて操作性の向上に取り組むことが出来ました。

Viewモジュールの開発

サーバーサイド(java)はそのまま
クライアントサイド(actionscript)の通信分もそのまま
表示する部分とそれに付随するロジックだけ作り直します。

ピグフレームワークについて

ピグフレームワークは、アメーバピグの開発に使われているフレームワークです。多人数で同時に開発できるように、Viewモジュールプロジェクトと、各Viewモジュールのswfをロードしてサーバーとの通信を行うmainプロジェクトから構成されます。

各viewモジュールは、モックデータを作る事で、サーバー接続無しでも単体で表示確認が出来るようになっています。単体での動作確認後に、mainプロジェクトで各viewモジュールをロードしてサーバー接続を含めた全体のテストを行います。これで問題が出なければ完成です。

shot5

今回は、mainプロジェクトはほとんど改修せずに、各ViewモジュールのみAndroid用に作りなおしました。

shot7

Adobe AIR にコンバート

PC版はブラウザ内で動くFlashアプリですが、Android版は直接OS上で動くAIRアプリです。
そのため、Flash BuilderのプロジェクトをAIR用に再作成します。

プロジェクトの再作成

→actionscriptプロジェクトはFlexプロジェクト(Application type>Desktop application)で再作成
→ライブラリプロジェクトはFlex Library Complier > Include Adobe AIR libraries にチェックを入れます。

セキュリティ周りの対応

  1. Security.allowDomain()は削除します
    ピグは各モジュール画面ごとにサーバーからswfを読み込みんで読み込み元のswfから各モジュールのswfを操作しているためSecurity.allowDomain()を指定していますが、この方法はAIRだと使用できないので、各モジュールswfはapk作成時に一緒にパッケージしてセキュリティサンドボックス内に納めるように修正しました。
  2. loadBytes() の対応を行います
    各アイテム類は数が膨大なのと、追加や更新が頻繁に行われるため、アプリと一緒にパッケージして配布することが現実的ではありません。そのため、loadBytes()を使って、都度外部からswfを読み込むように変更しています。

AIRだとデフォルトではloadBytes()を使ったswfの読み込みができない設定になっています。そのためallowCodeImportをtrueに設定して外部SWFロードをできるよう変更します。

Android用の対応

  1. コンテキストメニュー
    Android上で起動時にエラーになるため、コンテキストメニューをカスタマイズしている場合は削除します。
  2. マウスホイールイベント(MouseEvent.MOUSE_WHEEL)
    タッチデバイスには無いので対応しました。
    PC上でのデバック用に残しますが
    別途タッチムーブイベントで対応します。タッチデバイスにはマウスホイールイベントが無いので、別途タッチムーブイベントを追加して対応しました。(PC上でのデバック用に、マウスホイールイベントは削除しませんでした)
if(Multitouch.supportsTouchEvents) { addEventListener (TouchEvent.TOUCH_BEGIN, onTouchBegin); addEventListener (TouchEvent.TOUCH_MOVE, onTouchMove); }
  1. マウスイベント
    マウスイベントはそのままタッチイベント用に使用しました。
    マウスオーバー、ロールオーバーもそのまま使用できました。
    ダブルクリックもダブルタップとして判定できました。
  2. ジェスチャーイベント
    エリアの拡大縮小のために、ジェスチャーイベントを追加しました。
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); }
  1. デバイスボタンの対応
    デバイスによってはbackボタンと画面の距離が近いものがあるため、backボタンを間違ってタッチしてアプリを終了させてしまうことがありました。そのため、今回はbackボタンを無効化しました。
private function onKeyDown(event:KeyboardEvent):void { if(event.keyCode == Keyboard.BACK) { event.preventDefault(); } }
  1. バックエンド処理
    バックエンドで起動状態にするかの可否ですが
    アプリの性質上バックエンドで起動し続けるのはユーザーにとってよろしくないので
    画面を閉じるとアプリを終了にしています。
stage.addEventListener(Event.DEACTIVATE , onDeactivateHandler); private function onDeactivateHandler(event:Event):void { NativeApplication.nativeApplication.exit(); }

UIの変更

機能を絞って画面に配置します。
仮のボタン類を実機で確認しながら大きさや配置を決定

その中でいくつか気をつけた点をあげます。

  1. ボタンは縦に並べない
    縦方向に指を置くことが多いので押し間違いの回避
  2. 画面角にボタン配置
    クォータービューなので主なタッチポイントの床が菱形で角が空くため各ボタンは角に配置しました。
CAP
  1. 触れる回数の多いボタンは画面下に配置
    指で画面を隠さないように頻繁に押すアクション、チャットは下におでかけ、ぴぐともは上部に配置しました。
  2. オーバー、ダウンの挙動は音と見た目で補完
    タッチパネルだと実際の押した感がないため、見た目と音で補完します。
  3. 文字、ボタンは大きく
    文字は実機で可読性の確認を行いながら決定
    ボタンも実機で操作を行い大きさを決定します。

配置と大きさを決定したものを、実機で確認します。

shot2

操作感に問題なくなった時点で実際のデザインを適用します。

shot3

この状態でユーザーテストを繰り返し
着せ替え、ヘルプを追加したり、デザインの修正を行い
完成です。

apk作成して実機にインストールします

アイコンを作成します

48px*48pxのpng
72px*72pxのpng

shot4

アプリケーション設定XMLの記述

ピグはインターネット接続が必要なので
インターネット接続を許可します。

<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年)

apk作成

$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

実機で確認

marketにアップします

おわりに

Android端末自体も今回初だったので移植は大変だろうと思っていたのですが、意外と時間も掛からずに移植できました。機能部分の移植に関しては本当にすぐにできた印象で、あとは端末画面サイズとタッチパネル用にどれだけ操作しやすくするかに時間をかけました。
課題はPC版とのソース差分が出てくるので、どのようにスムーズに運用していくかになります。
今後はまだ足りていない機能を追加したり、Androidだからできる機能も追加していきます。

Tutorials and samples

Tutorials

  • Using the GameCenter Adobe AIR native extension for iOS
  • Using the iAd Adobe AIR native extension for iOS
  • Easy Library
  • Introducing Adobe AIR Launchpad

Samples

  • Licensing Adobe AIR applications on Android
  • Using web fonts with Adobe AIR 2.5
  • Using Badger for Adobe AIR applications

AIR blogs

More
05/15/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2 Slides and...
05/14/2012 Adobe Flash Platform Runtime and SDK Archives
05/14/2012 Monster’s Socks on the iPad with Adobe AIR
05/10/2012 What’s New in Flash Player 11.2 and Adobe AIR 3.2

AIR Cookbooks

More
02/09/2012 Using Camera with a MediaContainer instead of VideoDisplay
01/20/2012 Skinnable Transform Tool
01/18/2012 Recording webcam video & audio in a flv file on local drive
12/12/2011 Date calculations using 'out-of-the-box' functions

製品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • モバイルアプリ
  • Photoshop
  • Touch Apps

ソリューション

  • デジタルマーケティング
  • コンテンツオーサリング
  • Web Experience Management

業種別ソリューション

  • 教育
  • 金融機関

サポート

  • ヘルプ&サポート
  • 注文と返品
  • ダウンロードに関するヘルプ
  • ユーザー登録に関するヘルプ

ラーニング

  • ADC: Adobe Developer Center
  • Adobe TV
  • Design Magazine
  • Photoshop Magazine
  • Focus In

ご購入方法

  • アドビストア
  • アカデミックストア
  • アドビライセンスストア
  • ボリュームライセンスについて
  • 販売パートナー
  • キャンペーン情報

ダウンロード

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

会社情報

  • プレスルーム
  • パートナープログラム
  • 企業の社会的責任(英語)
  • 採用情報
  • 投資家の皆様へ(英語)
  • イベント&セミナー
  • Legal(英語)
  • セキュリティ
  • お問い合わせ
国・地域および言語の選択 日本(変更)
国・地域および言語の選択 閉じる

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

利用条件 | プライバシーポリシーとCookie (更新)

Reviewed by TRUSTe: site privacy statement