android開発環境について、あれこれ
2014年01月15日
androidの開発環境は、いろいろなものが登場しています。
そこでざっとオサライをしたく思いまして、調査しました。
●androidの定番開発環境 Javaで開発(eclipse + Android SDK)
androidでは当初からJAVAの開発環境として、上記の組み合わせが推奨されてきました。
このための関連本もたくさんあります。
androidの開発者はアプリをできるだけたくさん作ってほしかったらしく、エンジニア人口の一番多い開発言語Javaを開発言語として採用したそうです。
考えてみればandroidはLinuxベースなので、別にどの開発言語でも良かったわけですね。
●C/C++で開発(eclipse + Android SDK + C/C++開発ツール + Android NDK)
LinuxベースならばC/C++というのも有りかと思いましたら、やはりありました。
AndroidのアプリケーションはDalvikと呼ばれる仮想マシン(バーチャルマシン)の上で動作しています。
DalvikはJava言語で記述されたプログラムの実行環境です。一般的なJavaで記述されたアプリケーションはDalvikを介して実行されるため、Native(C/C++)で書かれたプログラムよりも実行速度が遅くなってしまいます。
NDKは動作速度を向上するために使われるほか、
C/C++環境で開発された資産をライブラリとして(わざわざJavaへ移植しないでよい)活用できるといった利点もあります。一方でJavaの恩恵(GCなど)が得られない、アーキテクチャに依存するなどデメリットもあります(NDKを使うとアプリケーションの動作環境が限られ、対応外のアーキテクチャでは動きません)。
なお、Android 2.2以降では、JIT(Just in Time)コンパイラが導入されて動作速度は改善されています。
eclipseを使用する形はJavaとあまり変わりはないかもしれません。
詳しい組み込みの手順は以下のサイトに有ります。
http://www.kkaneko.com/rinkou/js/andkwin.html
●Javascriptで開発
1.PhoneGapで開発
http://phonegap.com/
PhoneGapは、アドビシステムズが開発しているオープンソースのモバイルデバイス用フレームワーク「Apache Cordova」のディストリビューションの1つです。もともとはカナダのNitobi社が開発を行っているスマートフォン向けのハイブリッドアプリケーション制作のためのフレームワークでした。2011年にアドビ社が、Nitobi社を買収し、現在はオープンソースであるCordovaをアドビ社が配布する時は、PhoneGapという名前になっているそうです。
JavaやObjective-Cを書かなくても、HTMLやCSS、JavaScriptだけで、iOS(iPhone/iPad/iPod touch)・Androidアプリを作成できます。このフレームワークでは、JavaScriptからネイティブAPIへのブリッジ機能を提供しているので、Webの技術を利用して作成したコンテンツからデバイス固有機能を利用できます。
こちらもeclipseを使用する形はJavaとあまり変わりはないかもしれません。
http://www.atmarkit.co.jp/ait/articles/1107/26/news109.html
1-2.PhoneGapベースの統合開発環境
以下は統合された開発環境をクラウドサービスです。開発者はアプリ開発の一連の作業をすべてWebブラウザを通じて行うことができます。
制限付き無料で開発できます。有料の場合の利用料はどちらも似たようなものです。
「Monaca」
http://monaca.mobi/ja/
「Adobe® PhoneGap™ Build」
https://build.phonegap.com/?locale=ja_JP
2.Titanium Mobileで開発
http://www.appcelerator.com/titanium/
http://faq.titanium-mobile.jp/
Titanium Mobileとは、Appcelerator社によるスマートフォン対応アプリケーションの開発環境です。iOS(iPhone/iPad/iPod touch)・Androidアプリを作成できます。
PhoneGapはHTML5やJavaScriptが「そのまま」アプリ化されますが、Titaniumは、一旦JavaScriptをコンパイルしたものがアプリとなります。
統合開発環境として「Titanium Studio」がリリースされており、これだけでまとめて必要なツール類が一気にインストールできます。
ここで紹介している他の開発環境に比べて組み合わせて複数インストール必要もなく、また、PCの環境変数を設定追加する必要もないため、一番簡単なインストール環境かもしれません。
http://titanium-mobile.jimdo.com/titanium-studio%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8Bandroid%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%B9%E3%81%97/
無料で利用できるのは“Community”プランです。ほかのプランは有料(最初のひと月は無料)ですが,Appcelerator社のサポートが受けられるほか,有料のモジュールが使えるなどさまざまな利点があるようです。
3.Unityで開発
http://japan.unity3d.com/
Unity は、Windows と OS X 上で動作する統合型のゲーム開発環境です。iOS、Android、Windows、Mac OS X、Web、Wii U、PlayStation3、Xbox 360 など様々なプラットフォームへ向けた高度な 3D アプリケーションを制作することが出来ます。
JavaScript、C#、Boo の3つの言語の好きなものを利用して、スクリプトを作成し、オープンソースの .NET プラットフォームである Mono の上でスクリプトが実行されます。
ゲームの舞台となる3Dのシーンの構築ツールなど、はっきり言ってこれは別世界の統合開発ツールです。
UnityとUnity Proの2種類のライセンスがあります。
プロバージョンは1500ドルですが、レギュラーバージョンは無料でダウンロードできます。
プロバージョンではテクスチャーへのレンダリング、オクルージョンカリング、グローバルライトニング、ポストプロセッシングエフェクトといった機能が追加されます。一方無料バージョンではスプラッシュスクリーン(スタンドアロンのゲームにおいて)やウォーターマーク(ウェブゲームにおいて)の表示が絶対に必要です。
●Webサイトをアプリ化
ブラウザアプリのように要はWebサイトをアプリっぽく作ってしまう手法です。
すごく簡単にすぐにでも構築できます。
ただし、Google Playストアには登録できませんけど。
●番外編
よくわかりませんがBasicでも開発できるようです。
下はテトリスのサンプルコードです。Basicで書かれています。
https://code.google.com/p/simple/source/browse/trunk/simple/samples/Tetris/src/com/google/devtools/simple/samples/tetris/Tetris.simple
●それではどれが良いのか
下記のように一長一短があります。
モバイルアプリ開発手法の特徴比較
ハイブリッド(PhoneGap/Titanium)はだんだん改善はされてはいますが、ネイティブで作られたアプリに比べて速度が遅いと感じるケースが多いそうです。
また、PhoneGapは、あくまでHTMLやJavaScriptを使ってアプリを作るためのツールです。
アプリを作る ためのフレームワークやテンプレートが提供されている訳ではありません。
jQuery MobileやSencha Touchといった、ユーザーインターフェースを作るためのツールを組み合わせるのが主流のようです。
(Titanium StudioはOS標準のUIを利用すること前提としています。)
個人的には手のこんだものでなければ、「Titanium Studio」が一番気軽に開発でき、破綻が来たらネイティブ開発(Java)が一番、問題が少ないように感じました。
なんだか当たり前の結論で申し訳ありませんが…
※ところで定番の開発環境は旧公式統合開発環境 Eclipse から 新公式 Android Studioへ移行していますね。
「PhoneGap」も組込みできるようです。
http://www.auraline.co.jp/tech-lab/?p=180
そこでざっとオサライをしたく思いまして、調査しました。
●androidの定番開発環境 Javaで開発(eclipse + Android SDK)
androidでは当初からJAVAの開発環境として、上記の組み合わせが推奨されてきました。
このための関連本もたくさんあります。
androidの開発者はアプリをできるだけたくさん作ってほしかったらしく、エンジニア人口の一番多い開発言語Javaを開発言語として採用したそうです。
考えてみればandroidはLinuxベースなので、別にどの開発言語でも良かったわけですね。
●C/C++で開発(eclipse + Android SDK + C/C++開発ツール + Android NDK)
LinuxベースならばC/C++というのも有りかと思いましたら、やはりありました。
AndroidのアプリケーションはDalvikと呼ばれる仮想マシン(バーチャルマシン)の上で動作しています。
DalvikはJava言語で記述されたプログラムの実行環境です。一般的なJavaで記述されたアプリケーションはDalvikを介して実行されるため、Native(C/C++)で書かれたプログラムよりも実行速度が遅くなってしまいます。
NDKは動作速度を向上するために使われるほか、
C/C++環境で開発された資産をライブラリとして(わざわざJavaへ移植しないでよい)活用できるといった利点もあります。一方でJavaの恩恵(GCなど)が得られない、アーキテクチャに依存するなどデメリットもあります(NDKを使うとアプリケーションの動作環境が限られ、対応外のアーキテクチャでは動きません)。
なお、Android 2.2以降では、JIT(Just in Time)コンパイラが導入されて動作速度は改善されています。
eclipseを使用する形はJavaとあまり変わりはないかもしれません。
詳しい組み込みの手順は以下のサイトに有ります。
http://www.kkaneko.com/rinkou/js/andkwin.html
●Javascriptで開発
1.PhoneGapで開発
http://phonegap.com/
PhoneGapは、アドビシステムズが開発しているオープンソースのモバイルデバイス用フレームワーク「Apache Cordova」のディストリビューションの1つです。もともとはカナダのNitobi社が開発を行っているスマートフォン向けのハイブリッドアプリケーション制作のためのフレームワークでした。2011年にアドビ社が、Nitobi社を買収し、現在はオープンソースであるCordovaをアドビ社が配布する時は、PhoneGapという名前になっているそうです。
JavaやObjective-Cを書かなくても、HTMLやCSS、JavaScriptだけで、iOS(iPhone/iPad/iPod touch)・Androidアプリを作成できます。このフレームワークでは、JavaScriptからネイティブAPIへのブリッジ機能を提供しているので、Webの技術を利用して作成したコンテンツからデバイス固有機能を利用できます。
こちらもeclipseを使用する形はJavaとあまり変わりはないかもしれません。
http://www.atmarkit.co.jp/ait/articles/1107/26/news109.html
1-2.PhoneGapベースの統合開発環境
以下は統合された開発環境をクラウドサービスです。開発者はアプリ開発の一連の作業をすべてWebブラウザを通じて行うことができます。
制限付き無料で開発できます。有料の場合の利用料はどちらも似たようなものです。
「Monaca」
http://monaca.mobi/ja/
「Adobe® PhoneGap™ Build」
https://build.phonegap.com/?locale=ja_JP
2.Titanium Mobileで開発
http://www.appcelerator.com/titanium/
http://faq.titanium-mobile.jp/
Titanium Mobileとは、Appcelerator社によるスマートフォン対応アプリケーションの開発環境です。iOS(iPhone/iPad/iPod touch)・Androidアプリを作成できます。
PhoneGapはHTML5やJavaScriptが「そのまま」アプリ化されますが、Titaniumは、一旦JavaScriptをコンパイルしたものがアプリとなります。
統合開発環境として「Titanium Studio」がリリースされており、これだけでまとめて必要なツール類が一気にインストールできます。
ここで紹介している他の開発環境に比べて組み合わせて複数インストール必要もなく、また、PCの環境変数を設定追加する必要もないため、一番簡単なインストール環境かもしれません。
http://titanium-mobile.jimdo.com/titanium-studio%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8Bandroid%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA/%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%B9%E3%81%97/
無料で利用できるのは“Community”プランです。ほかのプランは有料(最初のひと月は無料)ですが,Appcelerator社のサポートが受けられるほか,有料のモジュールが使えるなどさまざまな利点があるようです。
3.Unityで開発
http://japan.unity3d.com/
Unity は、Windows と OS X 上で動作する統合型のゲーム開発環境です。iOS、Android、Windows、Mac OS X、Web、Wii U、PlayStation3、Xbox 360 など様々なプラットフォームへ向けた高度な 3D アプリケーションを制作することが出来ます。
JavaScript、C#、Boo の3つの言語の好きなものを利用して、スクリプトを作成し、オープンソースの .NET プラットフォームである Mono の上でスクリプトが実行されます。
ゲームの舞台となる3Dのシーンの構築ツールなど、はっきり言ってこれは別世界の統合開発ツールです。
UnityとUnity Proの2種類のライセンスがあります。
プロバージョンは1500ドルですが、レギュラーバージョンは無料でダウンロードできます。
プロバージョンではテクスチャーへのレンダリング、オクルージョンカリング、グローバルライトニング、ポストプロセッシングエフェクトといった機能が追加されます。一方無料バージョンではスプラッシュスクリーン(スタンドアロンのゲームにおいて)やウォーターマーク(ウェブゲームにおいて)の表示が絶対に必要です。
●Webサイトをアプリ化
ブラウザアプリのように要はWebサイトをアプリっぽく作ってしまう手法です。
すごく簡単にすぐにでも構築できます。
ただし、Google Playストアには登録できませんけど。
●番外編
よくわかりませんがBasicでも開発できるようです。
下はテトリスのサンプルコードです。Basicで書かれています。
https://code.google.com/p/simple/source/browse/trunk/simple/samples/Tetris/src/com/google/devtools/simple/samples/tetris/Tetris.simple
●それではどれが良いのか
下記のように一長一短があります。
モバイルアプリ開発手法の特徴比較
Webサイトをアプリ化 | ハイブリッド(PhoneGap/Titanium) | ネイティブ開発(Java C/C++) | |
スキルレベル | ◎ | ○ | △ |
パフォーマンス | △ | ○ | ◎ |
デバイス依存性 | ◎ | ○ | △ |
開発時間 | ◎ | ○ | △ |
開発ライフサイクル | ◎ | ◎ | △ |
可搬性 | ◎ | ○ | △ |
デバイス機能利用 | △ | ○ | ◎ |
パッケージング | △ | ◎ | ◎ |
拡張性 | △ | ◎ | ◎ |
ハイブリッド(PhoneGap/Titanium)はだんだん改善はされてはいますが、ネイティブで作られたアプリに比べて速度が遅いと感じるケースが多いそうです。
また、PhoneGapは、あくまでHTMLやJavaScriptを使ってアプリを作るためのツールです。
アプリを作る ためのフレームワークやテンプレートが提供されている訳ではありません。
jQuery MobileやSencha Touchといった、ユーザーインターフェースを作るためのツールを組み合わせるのが主流のようです。
(Titanium StudioはOS標準のUIを利用すること前提としています。)
個人的には手のこんだものでなければ、「Titanium Studio」が一番気軽に開発でき、破綻が来たらネイティブ開発(Java)が一番、問題が少ないように感じました。
なんだか当たり前の結論で申し訳ありませんが…
※ところで定番の開発環境は旧公式統合開発環境 Eclipse から 新公式 Android Studioへ移行していますね。
「PhoneGap」も組込みできるようです。
http://www.auraline.co.jp/tech-lab/?p=180