Android開発にJavaの理解が必須な理由

ほんの数年前まで、アプリやゲームの開発と言えばWindowsやMacといったパソコン向けでしたが、2010年頃からiPhoneやAndroidなどのスマートフォンユーザーが急激に増え、2013年現在、アプリやゲームのプログラミングで生計を立てるにはこれらスマートフォン向けに作るしか道がなくなっています。しかし、スマートフォンのシェアはiPhone(開発言語はObjective-C)とAndoroid(開発言語はJava)という2種類のプラットフォームが仲良く分け合っており、すべてのスマートフォンユーザーにアプリを提供するには、iPhone用とAndroid用の2種類のアプリを作る必要があります。

そこで、開発者の負担を軽減すべく提供されているのが、⁠クロスプラットフォーム開発環境⁠と呼ばれるソフトウェアです。これを利用すると、たった1つのプログラムを作るだけで、iPhoneとAndroidの両方にアプリやゲームを提供することができます。

に挙げたのは、代表的なクロスプラットフォーム開発環境ですが、これらの他にも、Monoから派生した「Xamarin⁠⁠、Delphi言語で開発できる「Delphi XE5⁠⁠、国産の「Herlock」など、用途や言語に合わせて新しい開発環境が続々と登場しています。

 主なスマートフォン向けクロスプラットフォーム開発環境
名称使用言語主な用途ネイティブ
PhoneGapHTML5+JavaScriptWebアプリの移植×
Titanium MobileJavaScriptWebアプリの移植×
openFrameworksC++メディアアート○(Android NDK)
Cocos-2dxC++2Dゲーム○(Android NDK)
Unity(Mono)C#、JavaScript3Dゲーム×
Flash(Adobe AIR)ActionScript2Dゲーム×

しかし、良いことばかりに見えるクロスプラットフォーム開発環境にも、以下のような欠点があります。

  • パフォーマンスや安定性に問題が生じやすい
  • チューニングやデバッグなどの作業が難しい
  • ネイティブフレームワークを活用しにくい
  • プラットフォームの進化に対応しにくい

そのため、クロスプラットフォーム開発環境で作成したアプリは、JavaやObjective-Cで開発したネイティブアプリに比べ、パフォーマンスや安定性、デザインなどに難点を抱えがちです。一方、世界のトレンドに目を向けると、FacebookやTwitter、Evernote、Skypeなどの巨大サービスでは、いずれもiPhone版とAndroid版を別々に開発し、各プラットフォームごとに最適化されたアプリを提供しています。ユーザーエクスペリエンスを重視する場合、このような開発方法が主流になっているようです。


クロスプラットフォーム開発環境を利用した開発は手軽かつ便利ですが、完全ネイティブのアプリには様々な点で劣ってしまいがちです。⁠本気のAndroidアプリ」の開発を志すなら、ぜひネイティブの開発環境であるAndroid SDK、および基本となるJava言語の徹底的な理解を目指しましょう。