特集:.NETでもAndroid開発はできるのか? 初めてのMono for Android開発 WINGSプロジェクト かるあ(監修:山田 祥寛)2011/08/05 |
|
■はじめに
Android向けのネイティブ・アプリを開発する場合、プログラミング言語には何を選択するだろうか。通常のAndroidのアプリ開発では、基本的には「Java」を利用して開発する必要があるのだが、「Mono for Android」というソフトウェア開発キットを利用すると、Androidのアプリを「C#」で記述できる。
Mono for Androidは、Xamarin社(「ザマリン」と読む)のサイトから購入やダウンロードが可能だ。(執筆時点の)価格は、1年間のサブスクリプション契約で、企業向けのEnterprise版が開発者1人当たり999ドル(優先サポート版は2499ドル)、個人向けのProfessional版が399ドルで購入できる。また、実機転送が制限される無料の評価版もあるので、まずは評価版が学習用途としてはお勧めだ。
本稿は、Mono for Androidのインストールから、Android上で実際に動作するサンプルを解説していく中で、Mono for Androidの概要を説明する。.NET環境でも、簡単にAndroid対応アプリを作成できてしまう楽しさを実感いただければ幸いだ。
ちなみに、Mono for Androidや、iOS向けの「MonoTouch」以外の、AndroidやiPhone上でC#のコードを動作させる環境としては、同じく「Mono」(=.NET Framework互換の実行環境)の技術を利用した「Unity」というソフトウェア開発キットも存在する。Unityに関しては、次の記事を参照してほしい。
【コラム】Monoの現状 |
昨年末(=2010年末)に、Monoプロジェクトを運営するNovelがAttachmateに買収され、そのAttachmateがMono開発者をすべてレイオフするという事件が起きた。この事件は5月にInfoQの記事「Monoの死と再生」で取り上げられたので、記憶に新しい方も多いだろう。 これを受け、Monoプロジェクトの創始者であるミゲル氏は「Xamarin」という新会社を創立し、「新たな.NET Framework互換の実行環境を作成するプロジェクトを開始する」とブログにエントリした。その後、「Attachmateから既存顧客のサポートを含め、Xamarinで継続してサポートしていく」という旨のブログ・エントリを行っている。 上記のように業務の引き継ぎに多少ゴタゴタしたが、現在では問題なくXamarinのサイトからMono for Androidのライセンスを購入できる環境が整った。 |
■Mono for Androidとは
Mono for Androidは前述したとおり、Android環境で.NET Framework互換のアプリを動作させるための実行環境だ。ここでは、そのMono for Androidの概要を確認していこう。
●Monoプロジェクトとは
Monoプロジェクトは、Xamarinの主導で開発が進められている.NET Framework互換のフレームワーク「Mono」を開発するオープンソースのプロジェクトだ。Monoは、Windows、Linuxをはじめとして、MacOS X、FreeBSDなどで動作する。執筆時点の最新バージョンは「Mono 2.10.2」で、.NET Framework 4と互換性がある。
Mono for Androidを作成しているのも、このMonoプロジェクトである。またMonoプロジェクトでは、C#でiPhone開発が可能な「MonoTouchも開発しており、今回紹介するMono for Androidとコードを共有することで、Windows Phone、Android、iPhoneで同じコードを利用して開発することも可能になる。
Monoプロジェクトではこれら以外にも、SilverlightのMonoプラットフォーム版である「Moonlight」や、クロスプラットフォームで動作する統合開発環境「MonoDevelop」の開発も行っている。
●Androidの実行環境
Mono for Androidは、C言語で記述されたAndroid用の実行環境だ。図1に示すように、AndroidのJava実行環境である「Dalvik」に相当する。Monoの実行環境がLinuxカーネルと直接対話することで、.NETであってもJavaで作成したアプリと変わらないパフォーマンスを期待できる。
図1 「Mono for Android」と「AndroidのJava実行環境」のアーキテクチャ比較 |
MCWとACWについては後述。 ※参考:Mono for Androidアーキテクチャ(英語)。 |
しかし、Androidに用意されているオーディオやグラフィック機能などにアクセスするには、Dalvik上のJavaクラス群からアクセスする必要があるため、Mono for Androidでは.NETからJavaのクラスにアクセスする「Managed Callable Wrappers(MCW)」が用意されている。また、逆にJavaから.NETクラスにアクセスする「Android Callable Wrappers(ACW)」も用意されている。
ただし、ACWもMCWもJNI(Java Native Interface)経由で動作するため、呼び出しのオーバーヘッドが大きい。Mono for Androidでアプリを作成するなら、できるだけ.NET標準の名前空間のクラスを利用すべきだろう。
■開発環境の構築
Mono for Androidには、無料の評価版が提供されている。評価版では、実機転送こそできないが、パッケージの作成やエミュレータでのデバッグは可能なので、ぜひインストールして評価してみてほしい。ただし、Mono for AndroidがVisual Studioのプラグイン(執筆時点ではVisual Studio 2010のみ対応)として動作する関係上、プラグインの利用が制限されるVisual Studio Expressでは利用できない。Visual StudioはProfessional以上を利用する必要がある点に注意してほしい。
Visual Studio Professionalを用意できない場合でも、MonoDevelopというMonoプロジェクトが提供する無料の開発環境を使えば、Mono for Androidを用いたアプリを開発することは可能だ。MonoDevelopのインストール方法はMono for Androidのインストール方法のページを参照のこと。
Visual StudioにMono for Androidの開発環境をインストールするには、以下の手順を踏めばよい。
- JDKのインストール
- Android SDKのインストール
- エミュレータのセットアップ
- Visual Studioプラグインのセットアップ
各手順について詳しく説明していこう。
●1. JDKのインストール
OracleのJDKダウンロード・ページからJDK(Java Development Kit)のバージョン「6」以上をダウンロードしてインストールする(実行環境であるJREだけではAndroidの開発環境は動作しないため、必ずJDKをインストールしてほしい)。
また、後述するAndroid SDKが32bitで動作する関係上、64bitマシンへのインストールであっても、32bit版のJDKをインストールする必要がある点に注意してほしい。
インストール自体はウィザードに従いデフォルトの設定でインストールすればよい。
●2. Android SDKのインストール
Android SDKのインストールは、「Android SDK Tools」の「Android SDK and AVD Manager」から行う。
Android SDKのダウンロード・ページから、Android SDK Toolsのインストーラ(記事公開時点の最新版は「installer_r12-windows.exe」)をダウンロードしてインストールしてほしい。
インストーラを実行すると、[Android SDK Tools Setup]ウィザード(英語)が起動するので、指示に従ってインストールを進めればよい。ただし、いくつか注意点がある。[Java SE Development Kit]ページでJDKがインストール済みと正しく認識されない場合は、[< Back]ボタンと[Next >]ボタンで行ったり来たりすると認識される場合がある。また[Choose Install Location]では、後述の「【コラム】「Android SDK Tools, revision 12」の不具合について」を回避するために、[Destination Folder](=インストール先のフォルダ)欄に「C:\Android\android-sdk」など半角スペースを含まない場所を指定することをお勧めする。
Android SDK Toolsのインストール終了後、(デフォルトの設定では)自動的にAndroid SDK and AVD Manager(=SDK Manager)が実行され、パッケージ・インストーラが起動する(図2)。そこで、左側の一覧から必要なパッケージを指定して[Install]ボタンをクリックし、Android SDKのインストールを行う。この画面の例では、右側の[Accept All]ラジオボタンにチェックが入っているので、すべてのパッケージがインストールされる。特定のパッケージのみをインストールしたい場合には、インストールしないパッケージを左側の一覧から選択して[Reject]ラジオボタンにチェックを入れればよい(インストールするパッケージには[Accept]ラジオボタンにチェックを入れる)。
図2 パッケージを選択してAndroid SDKをインストール(Android SDK and AVD Managerのパッケージ・インストーラ) |
Mono for Androidでは、最低限、次のパッケージをインストールする必要がある。
- Android SDK Tools, revision 10以上(※上記のインストールを指す)
- Android SDK Platform-tools, revision 3以上
- SDK Platform Androidのいずれかのバージョン
ここでは、下記のパッケージをインストールした(もちろん、時間はかかるが、すべてのパッケージをインストールしてもよい)。
- Android SDK Platform-tools, revision 4
- SDK Platform Android 2.3
インストール後のAndroid SDK and AVD Managerは、図3のように表示される。
図3 Android SDKのインストール完了(Android SDK and AVD Manage) |
●3. エミュレータのセットアップ
Androidのエミュレータの設定は、Android SDK and AVD Managerから行う必要がある。左側の[Virtual devices]メニューを選択し、[New]ボタンをクリックすると、[Create new Android Virtual Device (AVD)]ウィンドウが開くので、必要な情報を入力しておこう。ここでは、エミュレータの名前([Name]欄)に「MonoDroid」を、動作するAPIのバージョン([Target]コンボボックス)に「Android 2.3.3 - API Level 10」を、SDカードのサイズ([Size]欄)を「512MiB」(単位「MiB」は「メビバイト」と読み、-
「 1MiB=220 Bytes=1,048,576Bytes」
となる。ほかに「KiB:キビバイト」や「GiB:ギビバイト」が指定可能)に設定した(図4)。
[New]ボタンをクリック |
図4 エミュレータのセットアップ |
【コラム】「Android SDK Tools, revision 12」の不具合について |
上記のように作成したエミュレータ(AVD)は、Android SDK and AVD Managerの左側にある[Virtual devices]メニューを選択すると、右側の一覧に表示される。通常、エミュレータを選択して[Start]ボタンをクリックすると、エミュレータが起動する。 ただし、「Android SDK Tools, revision 12」の場合、既定のインストール先の「Program Files」に含まれる半角スペースが誤認識される不具合が存在し、これにより「エミュレータを起動できない」という報告が挙がっている。このため、後述するVisual Studioからのエミュレータの起動も失敗する。 なお、前述したように、Android SDK Toolsのインストールでインストール先のフォルダを「C:\Android」などに変更してインストールし直せば、この問題は解決できる。 |
●4. Mono for Androidのセットアップ
Visual Studioを使ってAndroidのビルドやデバッグをしたり、前述のエミュレータや実機にアプリを転送したりするには、Mono for Androidをインストールして、Visual Studioプラグインをインストールする必要がある。
ここでは無料の評価版をインストールするが、通常版であってもインストール自体は変わらない。Mono for Androidの評価版ダウンロード・ページからMono for Androidのインストーラをダウンロード可能だ([Email]欄にメール・アドレスを入力して、[Download Windows Installer]ボタンをクリックする)。
Mono for Androidインストーラによるインストールも、ほかのインストーラと同様に、ウィザードに従ってデフォルトの設定で行えばいい。
それでは早速、次のページからはMono for Androidのアプリ開発を始める。
INDEX | ||
特集:.NETでもAndroid開発はできるのか? | ||
初めてのMono for Android開発 | ||
1.Mono for Androidとは/開発環境の構築 | ||
2.書籍検索アプリを作ってみよう(プロジェクト構成の概要) | ||
3.書籍検索アプリを作ってみよう(画面の作成/Windows Phoneとのコード共有) | ||
4.センサーに触ってみよう | ||
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|