ほんの数年前まで、アプリやゲームの開発と言えばWindowsやMacといったパソコン向けでしたが、2010年頃からiPhoneやAndroidなどのスマートフォンユーザーが急激に増え、2013年現在、アプリやゲームのプログラミングで生計を立てるにはこれらスマートフォン向けに作るしか道がなくなっています。しかし、スマートフォンのシェアはiPhone(開発言語はObjective-C)とAndoroid(開発言語はJava)という2種類のプラットフォームが仲良く分け合っており、すべてのスマートフォンユーザーにアプリを提供するには、iPhone用とAndroid用の2種類のアプリを作る必要があります。
そこで、開発者の負担を軽減すべく提供されているのが、“クロスプラットフォーム開発環境”と呼ばれるソフトウェアです。これを利用すると、たった1つのプログラムを作るだけで、iPhoneとAndroidの両方にアプリやゲームを提供することができます。
表に挙げたのは、代表的なクロスプラットフォーム開発環境ですが、これらの他にも、Monoから派生した「Xamarin」、Delphi言語で開発できる「Delphi XE5」、国産の「Herlock」など、用途や言語に合わせて新しい開発環境が続々と登場しています。
表 主なスマートフォン向けクロスプラットフォーム開発環境
名称 | 使用言語 | 主な用途 | ネイティブ |
PhoneGap | HTML5+JavaScript | Webアプリの移植 | × |
Titanium Mobile | JavaScript | Webアプリの移植 | × |
openFrameworks | C++ | メディアアート | ○(Android NDK) |
Cocos-2dx | C++ | 2Dゲーム | ○(Android NDK) |
Unity(Mono) | C#、JavaScript | 3Dゲーム | × |
Flash(Adobe AIR) | ActionScript | 2Dゲーム | × |
しかし、良いことばかりに見えるクロスプラットフォーム開発環境にも、以下のような欠点があります。
- パフォーマンスや安定性に問題が生じやすい
- チューニングやデバッグなどの作業が難しい
- ネイティブフレームワークを活用しにくい
- プラットフォームの進化に対応しにくい
そのため、クロスプラットフォーム開発環境で作成したアプリは、JavaやObjective-Cで開発したネイティブアプリに比べ、パフォーマンスや安定性、デザインなどに難点を抱えがちです。一方、世界のトレンドに目を向けると、FacebookやTwitter、Evernote、Skypeなどの巨大サービスでは、いずれもiPhone版とAndroid版を別々に開発し、各プラットフォームごとに最適化されたアプリを提供しています。ユーザーエクスペリエンスを重視する場合、このような開発方法が主流になっているようです。
クロスプラットフォーム開発環境を利用した開発は手軽かつ便利ですが、完全ネイティブのアプリには様々な点で劣ってしまいがちです。「本気のAndroidアプリ」の開発を志すなら、ぜひネイティブの開発環境であるAndroid SDK、および基本となるJava言語の徹底的な理解を目指しましょう。