iOSアカデミアブログ

Unityによるクロスプラットフォーム開発とは?iOSとAndroidを同時開発

クロスプラットフォーム開発を利用すれば、iOSとAndroidの両方に対応するアプリを開発できます。そしてクロスプラットフォーム開発のツールとして有名なのがUnityです。では具体的にUnityがどのようなツールなのか、クロスプラットフォーム開発とはどのようなものなのか、解説していきます。

スマホアプリの種類

スマホアプリには以下の種類があります。

・WEBアプリ
・ネイティブアプリ
・ハイブリッドアプリ

それぞれがどのようなものか、解説していきます。

WEBアプリ

WEBアプリとは、WEBブラウザ上で動くアプリです。WEBブラウザ上で動くので基本的にオンライン環境で使用することを前提としています。一部オフラインでも利用できるアプリもありますが、機能の大部分はサーバー上に用意されています。

WEBブラウザの具体例としては、Google Chrome、Internet Explorer、Microsoft Edge、Firefoxが挙げられます。WEBアプリは特にGoogle Chromeで使えるものが有名なので例を挙げると、Google Map、Gmail、Google Driveなどが挙げられます。

これらのWEBアプリはすべてGoogle ChromeというWEBブラウザ上で動きます。ターゲットをパソコンにする場合、後述するネイティブアプリよりもWEBアプリの方が有効でしょう。

ネイティブアプリ

ネイティブアプリとは、各端末にインストールして使用するアプリケーションです。そのため、端末のOSに連動する形で動きます。WindowsやMac用のネイティブアプリもありますが、今の時代はスマホのネイティブアプリの方が有名で、またユーザー数も圧倒的に多いです。

スマホ用のネイティブアプリは、App Store、Google Playからインストールして使用します。iOSはApp Store、AndroidはGoogle Playです。普段スマホアプリを利用していれば、アプリをインストールした経験もあるでしょう。

スマホユーザーをターゲットにする場合、現状としてWEBアプリよりもネイティブアプリの方が有効です。

ハイブリッドアプリ

ハイブリッドアプリとは、WEBアプリとネイティブアプリを組み合わせたものです。ハイブリッドアプリの土台はネイティブアプリなのですが、そのネイティブアプリにWEBブラウザのウィンドウを組み込み、機能をオンライン化するという特徴があります。

ハイブリッドアプリはApp Store、もしくはGoogle Playにリリースしてユーザーに利用してもらいます。ハイブリッドアプリのリリース方法はネイティブアプリと同様ですが、開発方法はWEBアプリに近いです。

たとえばフロントエンドはHTML、CSS、JavaScriptで構築するケースが多いです。ハイブリッドアプリは、WEBアプリとネイティブアプリの良いとこ取りをしたアプリです。ただし、逆にネイティブアプリのようにOSの機能をフル活用できない、アプリストアにリリースする必要がある、といったデメリットもあります。

ネイティブアプリの種類

上でも少し触れましたが、ネイティブアプリにはパソコン用のものとスマホ用のものがあります。現状ネイティブアプリと言えばスマホ用のアプリが主流なので、スマホ用のネイティブアプリをご紹介します。

iOS

iOSはiPhoneやiPadに搭載されているOSです。iPhone用のアプリを作りたい場合、このiOSのアプリを作れば良いということです。iOSのアプリをインストールしてもらいたい場合、App Storeにリリースします。

iOSアプリの開発では一般的にSwiftという言語が使われるので、iOSのネイティブアプリを開発する場合はSwiftを使用します。

Android

Androidの場合、スマホのこともOSのこともAndroidと呼ぶ場合が多いです。もしくは、OSのことはAndroidOSと呼びます。Androidのアプリをインストールしてもらうためには、Google Playにアプリをリリースします。

Androidのアプリ開発ではKotlin、もしくはJavaが主に使用されます。最近はKotlinが使用されることが多いので、Kotlinを使用することになる可能性が高いでしょう。

クロスプラットフォーム

クロスプラットフォームは上でご紹介したハイブリッドに似ている概念なのですが、クロスプラットフォームはWEBアプリとネイティブアプリのハイブリッドではなく、ネイティブアプリ同士のハイブリッドという違いがあります。

たとえば、AndroidアプリとiOSアプリのクロスプラットフォーム開発というものがあり、これにより2つのOSに対応可能なアプリを開発することが可能です。上で説明したWEBアプリとネイティブアプリのハイブリッド型のことをクロスプラットフォームアプリと呼ぶ場合もあるのですが、ここではiOSとAndroidのハイブリッド型のことをクロスプラットフォームアプリと呼びます。

クロスプラットフォーム自体はプラットフォームをまたぐという考え方なのでいろいろなシチュエーションで使える用語なのですが、現状クロスプラットフォームアプリと言えば主にiOSとAndroidのネイティブアプリのクロスプラットフォームアプリを指します。

クロスプラットフォーム開発のメリット

クロスプラットフォーム開発のメリットは、一気に複数のOSに対応するアプリを開発できる、クロスプラットフォームツールごとにプログラミング言語を選択できる、などです。まず一気に複数のOSに対応できるアプリを開発できることは大きなメリットです。

スマホアプリの場合、iOS、Android両方に対応するアプリを開発できます。本来ならiOS、Android両方のアプリが必要な場合、それぞれ別に開発する必要があります。クロスプラットフォームを使えば別々に開発しなくて良いので、少ない労力で済みそうです。

また基本的にiOSの場合はSwift、Androidの場合はKotlinかJavaのスキルが必要になります。両方のアプリを開発したい場合、それぞれ別のプログラミング言語スキルが必要ということです。

言語だけでなく、ツールも別です。それぞれの開発用の言語、ツールに慣れるとなると時間がかかるので、それならクロスプラットフォームのスキルを身に付けた方が早いという考え方もあるでしょう。

クロスプラットフォーム開発のデメリット

一見するとクロスプラットフォーム開発はメリットがあり、むしろiOS、Androidそれぞれ開発を行う意味がないようにすら思えます。しかし、実際にはiOSとAndroidのアプリはそれぞれ別々に開発されるケースが多いです。

それは、クロスプラットフォーム開発のデメリットも大きいからです。具体的には、それぞれのOSを最大限生かした設計にしにくい、不具合が発生しやすい、といったことがあります。

どちらも非常に大きなデメリットで、可能なら別々に開発した方が良いと言えるでしょう。自作して自分で楽しむ分には問題ありませんが、リリースして使ってもらう場合、利便性は最大限高めたい、なるべく不具合は起こしたくないと考えるのが自然です。

優良なアプリにするためには、クロスプラットフォームよりもOSごとにアプリ開発した方が良いということです。ただし、アプリの種類によっては例外もあります。それはゲームです。

ゲームはUnityというクロスプラットフォームを使用して開発するのが一般的で、特定のOSに特化する場合にも使用されます。SwiftやKotlinでゼロからプログラミングする方が少数派なので、クロスプラットフォームが前提になっていると言っても過言ではありません。

Unityとは

Unityとは、ゲーム開発用のエンジンです。ゲーム開発用の機能がまとまっていて、これらの機能を使用することで便利にゲーム開発できるツールです。UnityはiOS、Androidなどのスマホアプリに限らず、幅広いゲーム開発で利用されています。

ゲーム開発と言えばUnityと言っても過言ではないほど使われていて、そのUnityがクロスプラットフォーム対応しているので、iOS、Android両方に対応するゲームが作れるということです。

またUnityで使用する言語はC#です。SwiftもKotlinも使用しません。スマホアプリでなくてもUnityの使用経験があれば、スマホ用のゲーム開発にも対応できます。

Unity以外のクロスプラットフォーム環境

ゲームの開発に使われるのはUnityですが、Unity以外にもクロスプラットフォームは存在します。具体的には、Monaca、Xamarin、cordova、Cocos2d-x、TitanumMobileなどがあります。

他にも、本来はWindows用のアプリ開発に使われるVisual Studioをスマホアプリ開発に利用することも可能です。それぞれのツールについて細かくは解説しませんが、いずれもSwiftやKotlinを使用しません。

プログラミング言語的にも、iOSやAndroidの開発とは異なるということです。クロスプラットフォーム開発は便利ですが、特にプログラミング初心者の方はiOSかAndroidに絞って開発する方がおすすめです。

開発のしやすさを考えると、iOSから始めるのがもっともおすすめです。

まとめ

クロスプラットフォーム開発によって、iOSとAndroidの両方に対応したアプリを開発することが可能です。しかしデメリットもあるため、多くのアプリはiOS、Androidそれぞれに対応する形で作られています。

ゲームは例外で、OS問わずUnityで開発されることが多いです。Unityはクロスプラットフォーム仕様になっているので、結果的にiOSとAndroidの両方に対応したゲームを開発できます。

ゲームの場合はUnityを使ったクロスプラットフォーム開発がおすすめですが、それ以外のアプリはiOSかAndroidに絞ることをおすすめします。開発のしやすさを考えると、最初はiOSから入るのが特におすすめです。

監修者

山田卓init株式会社代表取締役
エンジニア経験0の状態から1年間独学で勉強して独立
さまざまなiOSアプリの開発に携わる
2021年6月にiOS専門のオンラインプログラミングスクール「iOSアカデミア」を開校。iOSエンジニアを目指す人のサポートにも力を入れています
モバイルバージョンを終了