iOS/Android/Windows――すべてに対応するアプリを開発するには

多様化するプラットフォームとデバイス、そして頻繁なOSのアップデートや製品リリースに対応するため、クロスプラットフォーム開発の必要性はますます高まってきています。iOS、Androidの両方で動作するアプリを、できるかぎり共通のコードで開発するためのライブラリやフレームワーク、サービスを探した経験のある方も多いのではないでしょうか?

そんな中、2012年秋のWindows 8のリリースにより、タブレットを含むノートPCやデスクトップPCの世界にも、アプリストアができました。ますます多岐にわたるプラットフォームに対応すべく、この記事ではiOS/Android/Windows、すべてに対応するアプリを作る方法についてご紹介します。

Webの技術を使う

まず1つ目は、Webの技術を用いる方法です。各OSには、Web技術を利用したコンテンツを表示するためのWebViewコントロールが用意されています。はじめにWebViewコントロールを使ったアプリを作ります。 次に、各OS用のアプリ共通のWebコンテンツを表示します。そうすると1つのWebコンテンツで、クロスプラットフォーム対応することができます。

jQuery Mobileをはじめ、HTML、CSS、JavaScriptを用いてスマートデバイス向けのUIを作成するライブラリも充実していますので、最も簡単なクロスプラットフォーム開発の手法の1つと言えます。

Web技術を利用したクロスプラットフォーム開発
Web技術を利用したクロスプラットフォーム開発

また、単に Web コンテンツを表示するだけでなく、Apache CordovaPhoneGapなどのフレームワークを使うと、JavaScriptからカメラやGPSといったOSの機能を呼び出すアプリを開発できます。最近ではコンテンツ部分をWebViewで表示しながら、ユーザエクスペリエンスを高めるために画面遷移やスクロール、ボタンなどについては、各OSの言語(Objective-C、Java、C#)で開発する、ハイブリッドアプリと呼ばれる形も広がってきています。

ネイティブ機能を利用できる JavaScript の SDKを使う

次に2つ目は、各OS上で動作するアプリをJavaScriptで開発できるSDKを利用する方法です。Titanium Mobileがその代表例で、JavaScriptで書いた1つのソースコードで複数のOS向けにアプリを開発することができます。残念ながら現在Titanium MobileはWindowsのアプリには対応していません。しかし、Windowsストア アプリはそもそもJavaScriptでネイティブアプリを開発できます。そのため、Titanium Mobile 、Windows のSDKに依存しない部分についてはコードの共通化、再利用ができるでしょう。WebView アプリと比較して使える API が増えますし、WebView の中でUI構築するよりも、ユーザエクスペリエンスが高まります。

コンパイルしてネイティブアプリを作る

最後に3つ目は、コンパイルしてネイティブ アプリを作る方法です。C#を用いてアプリ開発ができるXamarinを使うと、ビジネスロジック部分をC#のコードで共通化し、UIについては各OSネイティブのコントロールを使うことができます。

Xamarin。C#を中心にクロスプラットフォーム開発を実現
Xamarin。C#を中心にクロスプラットフォーム開発を実現

アプリのパッケージはコンパイルして生成されるため、Web の技術や JavaScript のSDK を使った場合より、高いパフォーマンスを出すことができます。 何よりすべてのネイティブ機能を利用することが出来る点が大きな特徴です。各 OS 向けそれぞれの言語でアプリを開発するのに限りなく近く、クロスプラットフォームアプリ開発を行うことができるでしょう。

その他、Xamarinは開発環境も充実しています。開発にVisual Studioを使い、.NETの既存資産を活用することもできます。また、開発の過程で必要となる素材や機能、コンポーネントなどを入手、購入できるコンポーネントストアが提供されているので、すべてをゼロから自分で作り上げる必要はありません。

Xamarin for Visual Studio

Xamarin for Visual Studio

クラウド側も共通化

ここまで、クライアント側のアプリをクロスプラットフォーム開発する方法をご紹介してきましたが、最後に補足としてクラウド側のサービスも共通化する方法をご紹介します。近ごろ、プラットフォームをまたがって、クラウド側のサービスを共通化するBaaS(Backend as a Service)が注目され始めています。これらのサービスでは、データベースの機能に加え、ユーザ認証やプッシュ通知の送信といったスマートデバイスでよく使われる機能を簡単に利用・実装する仕組みが提供されています。

たとえば、Windows Azure Mobile Servicesでは、iOS/Android/Windowsの各OS向けのSDKを提供しているのはもちろんのこと、プッシュ通知はApple Push Notification Services(APNS⁠⁠、Google Cloud Messaging(GCM⁠⁠、Windows Notification Service(WNS)それぞれに対応しています。 また、FacebookやTwitterアカウントを用いた認証機能も管理画面から設定できます。

Windows Azure Mobile Services

Windows Azure Mobile Services

クライアント側をクロスプラットフォーム開発し、クラウド側については Windows Azure Mobile Servicesを用いると、短期間でクラウドにつながっている複数のOS向けのアプリを開発し、展開できます。

このあとは

以上、簡単にはなりましたが、iOS/Android/Windowsすべてに対応したアプリの開発する方法をご紹介しました。ぜひお試しください。

また、2013年11月21日、22日に開催されるThe Microsoft Conference 2013では、⁠iOS、Android、Windows すべてに対応するアプリケーションを作るには?」を筆者が担当します。この他、Windows 8向けアプリ開発やマイクロソフトの最新タブレットSurfaceに関連したセッション、開発ハンズオン、最新デバイスの展示などが行われる予定です。ぜひ、こちらにもお越しいただき、今後のアプリ開発にお役立てください。

おすすめ記事

記事・ニュース一覧