SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
apportable meeting
Keisuke Hata
SQUARE ENIX
Technical Director Mobile Business Division
13年7月2日火曜日
apportableとは?
ObjC, ObjC++などで記述されたiOSアプリケーションをクロスコンパイルし、
Android用のアプリケーションバイナリを生成するエンジンである。
iOSでリリースしたタイトルをAndroidに移植したいが、マルチプラットフォーム対応のフレームワークや
ゲームエンジンを利用していない場合(Unityやcocos2d-x、Corona、Adobe Air)、
通常であれば、iOSのソースコードをベースに開発をし直すことが多い。
しかし、apportableは、iOS専用に記述されたアプリケーションのソースコードをAndroid用に変換するエ
ンジンを持っているため、そのエンジンを用いて、ソースコードの修正は基本的に行わずにAndroidのアプ
リケーションを自動で生成することができる。
iOSで有名なスキタイのムスメやZenBound 2もこのエンジンを利用してリリースしている。
http://www.apportable.com/
13年7月2日火曜日
プランの違い
Free版は、Android 4.0以上のデバイスに対
してアプリを生成できるが、サポートが最も
少なくいわゆるお試し版である印象は強い。
企業としては、Android2.xがまだ主流であ
ることから、Proもしくは、Enterpriseのプ
ランの契約は必須になりそう。
13年7月2日火曜日
apportableアーキテクチャ
Clangコンパイラを用いており、ObjC( ObjC++ )のコードをクロ
スコンパイルして、ARMのネイティブコードをはき出し、apkとし
て書き出している。このネイティブコードがJava UIから呼び出し
される。
ARM native code
ObjC
cross-compile
.apk
13年7月2日火曜日
スキタイのムスメ、ZenBound 2
の開発秘話
Q:スキタイのムスメ、ZenBound 2をiOSからAndroidへ移植する際に
apportableを用いた開発を行った結果、どれくらいの時間を要したか?
apportableによる対応作業は、ゲームの複雑さに応じて、30分∼2週間程度でデモレベルまで持って行け
る。Google Playにロンチさせるなどの製品としてのチューニングや別途対応作業は、さらに時間を要す
るが内容次第(4∼6週間)。
ゲームプラットフォームごとの新しいAPIを利用している場合などは、apportable側でのコンバート対応
を行うために追加工数がかかる。物によるが数ヶ月見積もってもらいたい。
スキタイのムスメは、通常のゲームとは異なり、ゲームプレイ中に縦持ちと横持ちが切り替わる瞬間があ
る。そのため、その対応を行うためにAndroid側では、ホームボタン、バックボタンがデバイスの姿勢に
よって回転する仕組みを利用して、ゲームコード側の画面回転の対応を行った。
●依頼方法:
NDA締結後、プロジェクトのソースコードをapportable側に提供し、調査してもらうことを推奨している。特にパフォーマンスや新API対応作業が含ま
れるかどうかの見積もりなどを行う。その場合、サポート契約を締結する必要があり。
13年7月2日火曜日
独自プラットフォーム対応
iOSやAndroid、Kindleといった、プラットフォームごとに用意される
Game APIやStoreKitなどの課金処理の部分に関しては、すでに
apportable側で対応している。
iOS版さえ作成すれば、各プラットフォームごとに必要なコードをコンパ
イル時に生成してくれる。開発者はプラットフォームごとの対応に追われ
なくて済むようになっている。ただし、Pro版以上。
13年7月2日火曜日
SpriteKitへの対応
SpriteKitのサンプルをapportableが作ってリリースすることは可能であ
るが、できれば実際の利用例があると対応しやすい。
実例がある場合は、apportableにContactしてみると良い。
apportableのスタンスとして先に対応してリリースというよりは、
リクエストの多い内容から作り始めるスタンスであるという。
Q:SpriteKitを用いたコンテンツを今後サポートできるように検討されているかどうか?
13年7月2日火曜日
解像度の対応
UIScreenクラスを拡張して、解像度にあわせたスケーリングオプショ
ンが用意されている。
Androidビルドする際にそのコードが動作するようにプリプロセッサマ
クロで分岐しておけば、iOSではそのコードが実行されずに済む。
詳しくは、以下のURLを参照。
Q:Androidでは多くの解像度が存在しているが、apportableではどのような対応になっているか?
http://docs.apportable.com/sample-apps.html#cocos2dsimplegame
13年7月2日火曜日
デバッグ手法
apportableが用意するgdbを用いてデバッグするのが基本。ログやスタックトレースを
活用してデバッグする。あるいは、Objective-Cのメッセージを追ったり、オブジェクト
の状態を見る。
AndroidのデバイスログもObjC->Javaコールのデバッグにも役立つ。
Androidデバイスにありがちなグラフィックスチップ依存のバグは、トランスレーション
レイヤーで吸収させて修正するようにしている。また、デバッグに関して、apportable
には優秀なエンジニアがいるため、デバッグのサポートも行っている。
Q:apportableにおけるAndroidアプリケーションのデバッグはどのようにすればよいか?
13年7月2日火曜日
既存ミドルウェアを利用するには?
ミドルウェアやゲームエンジンを利用する場合、できればソースコードまで提供さ
れることが望ましい。
それが難しい時(例えばライブラリのみが提供される)は、apportableが用意す
るブリッジの仕組みを利用したりすることで、apportableが対応していないもの
も利用することは可能。
Q:既存のミドルウェアをapportableで利用する際のTipsは?
13年7月2日火曜日
apportableのバイナリサイズ
●ライブラリサイズ
利用するライブラリにもよるが、数MB程度( OpenGL, OpenAL, UIKitレベルなら )。これまで
の案件は、50MB以上のタイトルが多かったためこのサイズが問題になることは少なかった模
様。しかし、デバッグビルドは非常に大きくなりがちなので気をつけること。
●バイナリサイズが50MBを超える場合
androidのAPK Expansion Fileには対応しているため、詳しくは、Contact Usで問い合わせを
してくださいとのこと。
Q:apportableを適用した場合のバイナリサイズはどの程度になるか?日本のソーシャルゲームを代
表とするアプリケーションは、50MB以下でランチャーとして機能させ、アセットデータは、サーバ
ーからダウンロードしてくる仕組みを採用していることが多い。
13年7月2日火曜日
Androidにおけるオーディオレイテンシ
オーディオレイテンシは、ずっと頭を悩ませている内容である。apportableは、
OpenALプロジェクトに参加し、Androidデバイスにおけるオーディオのパフォーマンス
と改善に貢献している。
ソースコードは、OpenAL-softとして、LGPLv3として公開している。
Q:Androidでは、オーディオレイテンシがとかく問題になりやすいが、apportableではこの件に関
して取り組んでいることあるか?
http://www.apportable.com/open_source
13年7月2日火曜日
apportableベストプラクティス
●利用する言語
C, C++, Objective-C,C++などは問題なし。ただし、Rubyなどのスクリプト言語への対応はやや複雑
になりがちで推奨していない。
●利用するライブラリやフレームワーク
OpenGLやUIKitといったゲーム制作に最低限必要なものとベーシックなフレームワークは対応済み。
オープンソース系のライブラリにも各種対応。
Box2D, FMOD, CocosBuilder( ccbi ), cocos2d-x, cocos2d-iphone ...。
UIKitのベーシックなものには対応:UIScrollViewなど...。
cocos2d-xやcocos2d-iphoneで開発することはとても良い。
●サポート外の機能
カメラやマイクロフォンの機能
Q:apportableを利用する上でのベストプラクティスを教えてほしい。
13年7月2日火曜日
apportableのアドバンテージ
cocos2d-xは、マルチプラットフォームに対応したフレームワークであるが、課金処理やGame
API周りは、各プラットフォームごとにコードを用意する必要がある。
apportableは、これらStoreKitやGameKitの対応工数を吸収してくれる。プログラマーは、
iOS版のコードのみを記述するだけであとは、apportableがプラットフォームごとのコードを
生成してくれるため、ゲームのコーディングに集中することができる。
Q:cocos2d-xは、マルチプラットフォームに対応したゲームフレームワークであるが、apportable
を利用するメリットはどこにあるのか?
Kindle AndroidiOS
13年7月2日火曜日
cocos2d-x + apportable
Hero Academy
13年7月2日火曜日
Thank you for reading :)
Enjoy apportable !!
13年7月2日火曜日

Mais conteúdo relacionado

Semelhante a apportable meeting

クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOLクロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL友太 渡辺
 
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦Tetsuya Shiraishi
 
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!hmimura_embarcadero
 
実はかんたん!ゲームエンジンCocos2d-x入門
実はかんたん!ゲームエンジンCocos2d-x入門実はかんたん!ゲームエンジンCocos2d-x入門
実はかんたん!ゲームエンジンCocos2d-x入門Chukong Technologies Japan
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島Masahiko Tani
 
Cocos2d-xおよび関連サービスについて
Cocos2d-xおよび関連サービスについてCocos2d-xおよび関連サービスについて
Cocos2d-xおよび関連サービスについてChukong Technologies Japan
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Shin-ya Koga
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①Nagamine Hiromasa
 
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...友太 渡辺
 
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発Seunghun Lee
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4Dkmiyako
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on CloudShuto Suzuki
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発友太 渡辺
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識Yugo Yamamoto
 
Visual Studio Code あれこれ
Visual Studio Code あれこれVisual Studio Code あれこれ
Visual Studio Code あれこれShun Ishii
 
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Tomoaki Shimizu
 

Semelhante a apportable meeting (20)

クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOLクロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
クロスプラットフォーム開発概要@STARTUP HILLS SCHOOL
 
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
スマホキャンプサマー2012:ANEとアプリ内課金に挑戦
 
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
デブサミ2013 【15-B-2】iOS/Android向け開発をビジュアルに!
 
実はかんたん!ゲームエンジンCocos2d-x入門
実はかんたん!ゲームエンジンCocos2d-x入門実はかんたん!ゲームエンジンCocos2d-x入門
実はかんたん!ゲームエンジンCocos2d-x入門
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
 
Cocos2d-xおよび関連サービスについて
Cocos2d-xおよび関連サービスについてCocos2d-xおよび関連サービスについて
Cocos2d-xおよび関連サービスについて
 
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
Android が巨大すぎてお困りのあなたへ~組み込み Windows の今と、これから~
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
 
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
Xamarin と Visual Studio でまとめて作る iOS / Android / Windows アプリ ( Developers Summ...
 
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Build an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4DBuild an iOS app with Ionic and 4D
Build an iOS app with Ionic and 4D
 
デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方デバイス WebAPI設計の進め方
デバイス WebAPI設計の進め方
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on Cloud
 
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
はてなエンジニアブロガー祭りLT クロスプラットフォーム開発
 
LT発表資料
LT発表資料LT発表資料
LT発表資料
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
 
Visual Studio Code あれこれ
Visual Studio Code あれこれVisual Studio Code あれこれ
Visual Studio Code あれこれ
 
Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介Cocos2d-xのかんたんな紹介
Cocos2d-xのかんたんな紹介
 

Mais de Keisuke Hata

Gcs2014 0225 cocos2d-xjsb
Gcs2014 0225 cocos2d-xjsbGcs2014 0225 cocos2d-xjsb
Gcs2014 0225 cocos2d-xjsbKeisuke Hata
 
iOS app hacks all_map
iOS app hacks all_mapiOS app hacks all_map
iOS app hacks all_mapKeisuke Hata
 
CCSendMessages introduction
CCSendMessages introductionCCSendMessages introduction
CCSendMessages introductionKeisuke Hata
 
Cocos2d Performance Tips
Cocos2d Performance TipsCocos2d Performance Tips
Cocos2d Performance TipsKeisuke Hata
 
CCResourceAsyncLoader
CCResourceAsyncLoaderCCResourceAsyncLoader
CCResourceAsyncLoaderKeisuke Hata
 
Impact beginngers guide_1.19
Impact beginngers guide_1.19Impact beginngers guide_1.19
Impact beginngers guide_1.19Keisuke Hata
 
Introduction titanium
Introduction titaniumIntroduction titanium
Introduction titaniumKeisuke Hata
 
How To Build Last Fm For I Phone
How To Build Last Fm For I PhoneHow To Build Last Fm For I Phone
How To Build Last Fm For I PhoneKeisuke Hata
 
Mercurial&OnenoteServer
Mercurial&OnenoteServerMercurial&OnenoteServer
Mercurial&OnenoteServerKeisuke Hata
 

Mais de Keisuke Hata (20)

Gcs2014 0225 cocos2d-xjsb
Gcs2014 0225 cocos2d-xjsbGcs2014 0225 cocos2d-xjsb
Gcs2014 0225 cocos2d-xjsb
 
iOS app hacks all_map
iOS app hacks all_mapiOS app hacks all_map
iOS app hacks all_map
 
iOS app hacks
iOS app hacksiOS app hacks
iOS app hacks
 
Cocos2d platforms
Cocos2d platformsCocos2d platforms
Cocos2d platforms
 
Photobook
PhotobookPhotobook
Photobook
 
TiPhotobook_en
TiPhotobook_enTiPhotobook_en
TiPhotobook_en
 
CCSendMessages introduction
CCSendMessages introductionCCSendMessages introduction
CCSendMessages introduction
 
Cocos2d Performance Tips
Cocos2d Performance TipsCocos2d Performance Tips
Cocos2d Performance Tips
 
CCResourceAsyncLoader
CCResourceAsyncLoaderCCResourceAsyncLoader
CCResourceAsyncLoader
 
Impact beginngers guide_1.19
Impact beginngers guide_1.19Impact beginngers guide_1.19
Impact beginngers guide_1.19
 
Advanced cocos2d
Advanced cocos2dAdvanced cocos2d
Advanced cocos2d
 
Introduction titanium
Introduction titaniumIntroduction titanium
Introduction titanium
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
 
Hello cocos2d ios
Hello cocos2d iosHello cocos2d ios
Hello cocos2d ios
 
Google wave2010
Google wave2010Google wave2010
Google wave2010
 
How To Build Last Fm For I Phone
How To Build Last Fm For I PhoneHow To Build Last Fm For I Phone
How To Build Last Fm For I Phone
 
Mercurial&OnenoteServer
Mercurial&OnenoteServerMercurial&OnenoteServer
Mercurial&OnenoteServer
 
Math1 Vector
Math1 VectorMath1 Vector
Math1 Vector
 
Wiipen
WiipenWiipen
Wiipen
 
Gl Rotate
Gl RotateGl Rotate
Gl Rotate
 

apportable meeting