Xamarinは、C#を開発言語として、WindowsあるいはMac(OS X)上でiOSアプリ、Androidアプリ、Windows Phoneアプリなどを開発するためのプラットフォームだ。Xamarinを使うと複数プラットフォーム間でコード(ロジック)やUIを共有できるため、クロスプラットフォームに対応したアプリの開発が容易になる。
Xamarinは、現在ではiOS/Android/Windows上で動作する「ネイティブアプリ」を開発するためのプラットフォームとしてよく知られており、Mono(.NET FrameworkのOSS実装)の上に実装されている。
開発に使用する言語は主にC#であり、これまでに.NETアプリ開発に携わってきた開発者なら、使い慣れたBCL(ベースクラスライブラリ)、LINQやラムダ式、非同期処理の簡潔な記述など、C#の優れた特徴を生かしてアプリ開発を行える。
Xamarinを構成する主な要素を以下に挙げる。
Xamarin.iOSとXamarin.Androidは名前からも分かる通り、それぞれiOSアプリとAndroidアプリを開発するためのプラットフォームだ。作成したアプリは何らかの段階でAOTコンパイラまたはJITコンパイラによりネイティブコードへとコンパイルされる。この結果、これらを使って作成したアプリの実行速度は極めて高速だ。これはXamarinを使用する大きなメリットとなる。
Xamarin.Formsは、iOSアプリ/Androidアプリ/Windows Phoneアプリで共通するUIを構築するためのUIツールキット。2016年1月5日時点ではプレビュー版だが、WindowsのUWPアプリもサポートされる予定となっている。
Xamarin.Mobileはモバイルデバイスが持つカメラ、GPSなどの機能にアクセスするための仕組み。
Xamarin StudioはXamarinが提供する純正のIDEである。Mac(OS X)版ではiOS/Androidアプリを開発できるが、Windows版ではAndroidアプリ開発のみがサポートされることには注意されたい。なお、Windows PhoneアプリやUWPアプリを、Xamarinを使ってクロスプラットフォームな形で開発するのであればVisual Studio(以下、VS)が必要になる。
この他にも、Mac用のアプリ開発プラットフォームであるXamarin.Macなどがあるが、以下ではXamarin.iOS、Xamarin.Android、Xamarin.Formsなどに注目する。
Xamarinでは単一のコードで全てのプラットフォームをサポートすることは基本的には考えられていない。Xamarinでクロスプラットフォーム開発を行う場合、あくまでも「プラットフォームに依存しないロジックを共有し、UIについてはプラットフォームごとに適したものをデザインする」のが流儀だ。
Xamarin.Formsを使用しない場合には、これが顕著になる。つまり、ロジック部分は共有するが、UIについては個々のプラットフォームごとに一から作り込んでいく必要がある。Xamarin.Formsを使用しないXmarinアプリの構成は以下のようになる(Windows Phoneアプリを含む)。
これに対して、Xamarin.Formsを使うと、iOSアプリとAndroidアプリ(VSでは加えてWindows Phoneアプリ/UWPアプリ)で共通のUIをXAMLで記述できる。記述したUI要素は、実行時に各プラットフォームにネイティブなUI要素へとマッピングされる。Xamarin.Formsを使って、基本となるUIを記述した上で、プラットフォームに固有な要素を追加するといったことも可能だ。
Xamarin.Formsがあれば、それで全てをまかなえるようにも思えるが、実際にはXamarin.Formsには得手不得手がある。Xamarin.Formsが適しているのは以下ようなものだ。
これら以外の場合は、Xamarin.iOS/Xamarin.Androidを使うのがよいとされている。
いずれにせよ、ロジックとUIを明確に分離し、共有できる部分は共有し、それ以外の部分はプラットフォームごとに作り込んでいく必要がある。
Xamarinには以下の四つのエディションがある。これらはXamarin.iOS、Xamarin.Android(とXamarin.Mac)のそれぞれについて契約する必要がある。この他に30日間有効なTrialエディションもある。
VSに組み込みのXamarinを使用する場合、Businessエディション以上の契約をしていない(あるいはトライアル期間内でない)場合は、Starterエディションで許されている範囲でしかXamarinの機能を使用できない。この場合、作成できるアプリサイズに上限がある(128Kbyes)、Xamarin.Formsを使えないなどの制限がある。
Xamarin.Formsを実際のアプリ開発で使いたければIndie以上のエディションが必要になる。ただし、IndieエディションにはVS統合機能が含まれていない(Xamarin Studioで開発を行う)。このため、「VSでXamarin」したいのであれば、Business以上のエディションを契約する必要がある。トライアル期間内に、Xamarinが必要かどうかをよく吟味するようにしよう。
なお、各エディションの差異や価格などについてはXamarinのPricingページ、日本国内でのXamarinの取扱代理店であるエクセルソフトの価格体系ページ、FAQページなどを参考にしてほしい。
Xamarinはクロスプラットフォーム対応のアプリをC#を開発言語として構築するためのプラットフォームであり、その主眼はプラットフォーム間で共通のロジックやUIを共有することにある。最新のXamarin.Formsであれば、Windows 10のUWPアプリ開発までをもターゲットにできる。そのため、C#に慣れた.NET開発者にとっては魅力的な選択肢といえる。
Copyright© 1999-2016 Digital Advantage Corp. All Rights Reserved.
@IT編集部では現在、編集スタッフを募集しています。編集経験は不問。 ITに関する経験のある方、ご応募お待ちしています。