クロスプラットフォーム開発環境「Xamarin」について

クロスプラットフォーム開発環境「Xamarin」について

クロスプラットフォーム開発環境、「Xamarin」についてご紹介します。


「Xamarin」は、Xamarin社という会社が開発して配布していましたが、2016年にマイクロソフトに買収されてVisual Studioに同梱されるようになりました。
Windowsはもちろん、Mac用のVisual Studio(Visual Studio for Mac)にも同梱されています。

特徴は以下の通りです。

クロスプラットフォーム開発環境

モバイルアプリを作成する時の選択肢として、通常は各プラットフォーム毎に、AndroidはAndroid StudioとJava、iOSはXcodeとObjective-C/Swiftという選択肢になると思います。
Xamarinはクロスプラットフォーム開発環境なので、C#でAndroidとiOSの両方のアプリを開発することができます。
他の多くのクロスプラットフォーム開発環境はHTML+CSS+JavaScriptというWeb技術を用いたものですが、Xamarinは各プラットフォームのAPIを100%移植しているのでネイティブアプリと同等の操作性のアプリを作成できます。

作成できるアプリケーション

Xamarinで作成できる主なアプリは下記になります。


・Androidアプリ
・iOSアプリ
・macOSアプリ

共通化できるところとできないところ

コア部分の機能は共通化できます。
カメラやGPSなど各プラットフォーム固有の機能やUI(画面)は共通化できません。

コードの共通化

コードの共通化には2種類あります。


・PCL(Portable Class Libraries)
PCLは共通DLLを作成する機能です。
作成したライブラリは複数のプラットフォームで使用できますが、使用できるAPIは全ての対象プラットフォームで使用できるAPIに限定されます。


・Shared Project
Shared ProjectはDLLではなく、ソースコードをそのまま共有する方法になります。
これは単なるファイル共有なので、プラットフォームに依存したコードを記載した場合、別ではビルドエラーになってしまうので注意が必要になります。

画面UIの共通化

また、Xamarinには「画面のUI」を共通化できる、「Xamarin.Forms」というUIライブラリが存在します。

UIを共通化できるといっても、使用できるのはそれぞれのプラットフォームで共通なUIコントロールのみで、あまり数は多くありません。
チェックボックスやラジオボタンはAndroidでは比較的利用頻度が高いですがiOSにはないので、Formsのコントロールとしては提供されていません。
また、XAMLでコーディングする場合、ビジュアルで編集できるエディタが今のところ提供されていないので、全て手作業になります。

Xamarin.Formsでの開発に適しているのは以下のような場合になります。


・プラットフォーム固有の機能をほとんど利用しないアプリ
・UIよりもコード共有が重要なアプリ
・XAMLでの開発に慣れている開発者

プラットフォーム固有の機能を多く利用したい場合は、Xamarin.AndroidやXamarin.iOSでの開発が適しています。

以下はXamarin.Formsで提供されているコントロールを配置してAndroidエミュレータ(左側)およびiPhoneエミュレータ(右側)で実行した画面になります。

 

気になった方はぜひ、Xamarinをインストールして触ってみて下さい!