カテゴリ:Xamarin.Android

提供: MonoBook
Xamarin.Androidから転送)
移動先: 案内検索

Xamarin.Android(読み:ざまりんあんどろいど)とは、Visual Studioを使いC#でAndroidアプリを作れるという代物である。 ベータ版まではMonoDroid、初期の製品版はMono for Androidという名称であった。

アーキテクチャー[編集 | ソースを編集]

Xamarin.Androidは、Android標準のDalvik仮想マシン上で動くのではなく、 Andoroid OSの根底にいるLinuxの上でDalvik仮想マシンと同様にDalvik仮想マシンと並行するかたちでMono仮想マシンが実行される。 Mono仮想マシン自体はDalvik仮想マシン同様にC言語で書かれている。

オーディオグラフィックOpenGL、電話制御といったDalvik仮想マシンが提供しているJava APIについても、 Mono仮想マシンとDalvik仮想マシンをブリッジするクラスの提供により利用することができる。

メリットとデメリット[編集 | ソースを編集]

互換性[編集 | ソースを編集]

通常、Android OSのアップデートとDalvik仮想マシンのアップデートはイコールであり、 Android端末によっては製造メーカーの放置プレイにより最新のAPIが利用できない、 また製造メーカーがアップデートを提供してもユーザーの放置により同一端末で複数バージョンのOSが存在し、 それぞれの挙動が異なるなどの問題を抱えていることがある。 さらに一部の機種においては、特定のAPIの挙動が異なる、イベント発生タイミングやイベント発生順序が異なるなどの問題も抱えている。

一方、Mono仮想マシンはアプリと同梱されて配布されるため、Mono仮想マシンを半ば強制的にアップデートできるようになっている。 つまりOSとアプリをセット配布しているようなものであり、Androidのアプリ互換性問題を大幅に軽減でき、 かつアップデートしていない端末でも最新APIが叩けたりするという特徴がある。

ただし、これはメリットばかりではなく、アプリのファイルサイズが桁違いに巨大化するというデメリットもある。 たとえば単純な「Hello World」ですら4MBを超えるapkファイルとなる。 また、アプリの起動には仮想OSの起動も伴うため、アプリの立ち上がりに若干時間がかかるという欠点もある。 この起動時間の問題については、LLVM経由でネイティブコード化するなどの技術の登場により、Xamarin.Androidの最新バージョンでは大幅に改善されつつある。

※ベータ版まではMono仮想マシンは単体アプリとして配布する形式だったが、製品版ではアプリの互換性の向上のためにアプリに同梱されるようになった。なお、開発環境(デバッグ版)では起動速度の高速化のために共有仮想マシンを使うようになっている。

開発環境[編集 | ソースを編集]

関連項目[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]