特集:.NETでもAndroid開発はできるのか?

初めてのMono for Android開発

WINGSプロジェクト かるあ(監修:山田 祥寛)
2011/08/05
Page1 Page2 Page3 Page4

Xamarin関連の記事
Visual StudioでiOS/Androidアプリが書けるXamarinを試してみた(iOS編) - Build Insider
Visual StudioでiOS/Androidアプリが書けるXamarinを試してみた(Android編) - Build Insider
.NET互換環境 - Build Insider
広がる .NET Framework 互換環境 [スライド&動画] - Build Insider
Xamarin - Build Insider

はじめに

 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プロジェクトを運営するNovelAttachmateに買収され、その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の開発環境をインストールするには、以下の手順を踏めばよい。

  1. JDKのインストール
  2. Android SDKのインストール
  3. エミュレータのセットアップ
  4. 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.センサーに触ってみよう


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間