滅入るんるん

何か書きます

Kotlin使いのためのC#入門 Android

> Top

KotlinはAndroidの開発言語として非常に有名になりました。 その仕組みはKotlinコードをJavaのbytecodeにコンパイルすることで、JVMとの互換環境(Dalvik/ART)で動作できるようにしています。

一方、C#でAndroidの開発と言えば、Xamarinが有名でしょう。 XamarinはAndroidにmonoランタイムと言われるC#の実行環境をapkごとに搭載させます。そのため、どんなに圧縮しても多少なりともapkサイズはNative言語(Java/Kotlin)で書いた時より増えますが、その分monoランタイムの恩恵(C#)を得ることができます。

Xamarin.AndroidはAndroidのAPIを薄くラップしたもので、開発者はAndroidのアプリをAndroidとほとんど同じ感覚でC#を使い開発することができます。

開発言語がC#になるだけと言うことができますが、C#を用いることでクロスプラットフォームな開発ができたり、JVM言語にはない非常に強力な言語機能を使うことができます。 たとえば、Javaでの高速化には限界があります。VMを使っているから遅いというのはありますが、それ以前にJavaにはポインターと構造体はありません。ポインターは危険な機能なので安易に使うものではありませんが、そもそもポインターという機能がないため、Android-Javaでは高速化しようと思えばNDKを用いてC/C++を使う必要がありました。 C#にはポインターと構造体はもちろん、ポインターを安全かつ簡単にした参照(ref)という機能があります。C#開発者は比較的安全に・簡単に高速なプログラムを作ることができるのです。

話がそれてしまいましたが、XamarinにはXamarin.Android以外にXamarin.Formsというものがあります。 Xamarin.FormsはXamarin.AndroidのAPIを濃くラップしたもので、View層も含めてクロスプラットフォームな開発ができるフレームワークです。そのため、Viewのカスタマイズは簡単ではないため、Android APIを知っている開発者ならXamarin.AndroidでAndroidアプリを開発することをお勧めします。