連載
» 2011年05月26日 00時00分 公開

iOSアプリのAndroid移植も簡単なUnityの基礎知識Unityで楽々スマホ用3Dアプリ開発入門(1)(2/3 ページ)

[佐藤大介,グリー株式会社 メディア開発本部]

iOS用UnityアプリをAndroidに移植してみよう

 サンプルプロジェクト「Batching」を開いて移植作業を行います。

iOS用Unityプロジェクトを開く

 まず、Unityを起動し、ダウンロードしたUnityプロジェクトを開きます。[File]→[Open Project...]から[Project Wizard]を開き、[Open Other...]ボタンを押して先ほどダウンロードした[Batch]のルートディレクトリを指定して[Open]をクリックします。この状態で[Play]ボタンを押せば、PC上で「Batching」サンプルをプレビュー可能です。

図3 「Batching」サンプルをUnityで開いたところ(画像をクリックすると、拡大します) 図3 「Batching」サンプルをUnityで開いたところ(画像をクリックすると、拡大します)

ビルド先のプラットフォームをAndroidに設定

 次に、メニューから[File]→[Build Settings...]を開きます。[Build Settings]ウィンドウで、ビルド先のプラットフォームを指定して必要な設定が行えます。もともと、この[Batching]プロジェクトはiOS用のサンプルアプリケーションなため、[Platform]には「iOS」が指定されているかと思います。

 [Platform]を「Android」に変更し、[Switch Platform]ボタンを押します。すると、プログレスバーが一瞬表示され、[Platform]内のUnityロゴが「Android」の部分に表示されます。実は、これでほぼ移植作業は終わりです。

図4 [Build Settings]ウィンドウ 図4 [Build Settings]ウィンドウ

Android実機で動かすようにビルド

 [Build Settings]ウィンドウから次に[Player Settings...]ボタンをクリックし、[Inspector]ウィンドウにプレイヤー設定画面を表示します。ここで細かいビルド設定を行えます。何も設定を変えなくてもビルドは可能です。このウィンドウでAndroidアプリ開発時に必要な設定項目であるパッケージ名やSDカード利用・インターネット利用のパーミッション設定、サポートAPIレベルなどが設定できます。

図5 [Inspector]ウィンドウ 図5 [Inspector]ウィンドウ

 Android実機をUSBでPC本体と接続します。このとき、Android端末側は[USBデバッグ]を[On]にしておいてください(ほとんどのAndroid端末では、[設定]→[アプリケーション]→[開発]→[USBデバッグ]で変更できます)。

Android実機上で実行

 [Build & Run]ボタンをクリックします。すると、ビルド時に作成するAPKファイル(Androidのアプリケーションパッケージファイル)名を求められるので、適当なファイル名を指定して[Save]ボタンを押します。ここでは。「BatchingAndroid」というファイル名を指定しました。

 すると、プログレスバーが出てAndroid用のビルドが開始します。そして、自動的に端末へのデプロイ(配置)が行われます。

図6 デプロイ中のプログレスバー 図6 デプロイ中のプログレスバー

 デプロイが終わると、自動的にAndroid端末上でアプリが開始されます。これでもう実機への移植が完了してしまいました。

図7 Android端末上で動く「Batching」サンプル 図7 Android端末上で動く「Batching」サンプル

 このように、Unityを使うと、いかに簡単にAndroid端末用のビルドが完了してしまうか、実感いただけたかと思います。

UnityによるAndroid端末への移植効果

 上記のように、数ステップでiOSからAndroidへの移植とデバッグ環境構築が完了してしまいました。移植に必要だったコストは「Android AddOn」の購入400ドルと、数分の設定変更の作業だけです。

 コスト削減の実例としては、これまでiOS用に開発したアプリをAndroidに移植する際、iOS版開発コストの7〜8割のコストを必要としてたという例があります。同じ動作を、全く違うプラットフォーム・言語で再現しなければならないため、かなりの部分のコードがスクラッチで書き直しとなり、一から開発する場合に近いコストを必要としていたためです。

 しかし、Unityを導入することで利用することで50?70%ほどのコスト削減が可能となりました。削減てきたコストでもっと企画を練ったり、別の製品開発に投資したりできます。さらに新しい製品の投入サイクルを早めることが可能になります。

何故、こんなに簡単にiOS→Androidへ移植できるのか

 当然このような疑問が起こるかと思います。

Unityは仮想マシン上で動く“アプリ”

 これは、「そもそも何故同じプロジェクトがWindowsやMac OS Xなどでも動作するのか」という疑問ともつながるのですが、Unityは各OSごとにチューニングされたネイティブコードベースのエンジンと、Unityスクリプトを実行するための仮想マシン(VM)から構成されています。アプリをビルドした際には、これらがプログラムのパッケージ内に含まれます。

 描画はOSごとにチューニングされたネイティブライブラリが行い、高速なスクリプト実行環境としてVMを利用することで、「高速な処理」「マルチOS対応」を実現しています。つまり、「フルチューンしたアプリ」「仮想マシン」のイイトコどりを実現している形です。

 従って、「仮想マシン上で動作するんだから、ネイティブコードより速いはずがない」という指摘は、Unityには当てはまらないといえるでしょう。

仮想マシンは「Mono」の技術が使われている

 そしてVMには、マイクロソフトの.NET Framework互換のオープンソースVMである「Mono」を利用しています。そして、この「Mono」がWindowsはもちろん、Mac OS X、iOS、Android OSをサポートしているため、Javaのようにその上で動作するUnityスクリプトに「Write Once, Run Everywhere」を提供しているのです。

 これはUnityがスクリプト言語としてC#をサポートする理由にもなっています。この辺りについては、@IT記事「iPhoneでC#アプリが審査に通るワケ」にも詳しく記載されているので、「何故ではiOSの規約に違反しないのか」など、興味ある方はご覧になってください。

 次ページでは、デバッグに便利な、Unity 3.2の「Android Remote」機能や、Unityの機能を拡張できるプラグインを紹介します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。