連載
» 2016年01月21日 05時00分 UPDATE

Dev Basics/Keyword:Xamarin

C#と.NET Framework技術を利用して、クロスプラットフォーム対応のモバイルアプリを開発できるXamarinの概要を説明する。

[かわさきしんじ,Insider.NET編集部]
Dev Basics/Keyword
Insider.NET

 

「Dev Basics/Keyword」のインデックス

連載目次

 Xamarinは、C#を開発言語として、WindowsあるいはMac(OS X)上でiOSアプリ、Androidアプリ、Windows Phoneアプリなどを開発するためのプラットフォームだ。Xamarinを使うと複数プラットフォーム間でコード(ロジック)やUIを共有できるため、クロスプラットフォームに対応したアプリの開発が容易になる。

C#の特徴を生かしたアプリ開発が可能なXamarin

 Xamarinは、現在ではiOS/Android/Windows上で動作する「ネイティブアプリ」を開発するためのプラットフォームとしてよく知られており、Mono(.NET FrameworkのOSS実装)の上に実装されている。

 開発に使用する言語は主にC#であり、これまでに.NETアプリ開発に携わってきた開発者なら、使い慣れたBCL(ベースクラスライブラリ)、LINQやラムダ式、非同期処理の簡潔な記述など、C#の優れた特徴を生かしてアプリ開発を行える。

Xamarinを構成する要素

 Xamarinを構成する主な要素を以下に挙げる。

  • Xamarin.iOS
  • Xamarin.Android
  • Xamarin.Forms
  • Xamarin.Mobile
  • Xamarin Studio

 Xamarin.iOSXamarin.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でのクロスプラットフォーム開発:ロジックの共有とUIの共有

 Xamarinでは単一のコードで全てのプラットフォームをサポートすることは基本的には考えられていない。Xamarinでクロスプラットフォーム開発を行う場合、あくまでも「プラットフォームに依存しないロジックを共有し、UIについてはプラットフォームごとに適したものをデザインする」のが流儀だ。

 Xamarin.Formsを使用しない場合には、これが顕著になる。つまり、ロジック部分は共有するが、UIについては個々のプラットフォームごとに一から作り込んでいく必要がある。Xamarin.Formsを使用しないXmarinアプリの構成は以下のようになる(Windows Phoneアプリを含む)。

Xamarin(Xamarin.iOSとXamarin.Android)におけるアプリの構造 Xamarin(Xamarin.iOSとXamarin.Android)におけるアプリの構造

 これに対して、Xamarin.Formsを使うと、iOSアプリとAndroidアプリ(VSでは加えてWindows Phoneアプリ/UWPアプリ)で共通のUIをXAMLで記述できる。記述したUI要素は、実行時に各プラットフォームにネイティブなUI要素へとマッピングされる。Xamarin.Formsを使って、基本となるUIを記述した上で、プラットフォームに固有な要素を追加するといったことも可能だ。

Xamarin.Formsにおけるアプリの構造 Xamarin.Formsにおけるアプリの構造

 Xamarin.Formsがあれば、それで全てをまかなえるようにも思えるが、実際にはXamarin.Formsには得手不得手がある。Xamarin.Formsが適しているのは以下ようなものだ。

  • データ入力アプリ
  • プロトタイプや試験的なアプリを作成する場合
  • プラットフォームに固有な機能をそれほど必要としないアプリ
  • UIのカスタマイズよりもコードを共有することが重要な場合

 これら以外の場合は、Xamarin.iOS/Xamarin.Androidを使うのがよいとされている。

 いずれにせよ、ロジックとUIを明確に分離し、共有できる部分は共有し、それ以外の部分はプラットフォームごとに作り込んでいく必要がある。

Xamarinのエディション構成

 Xamarinには以下の四つのエディションがある。これらはXamarin.iOS、Xamarin.Android(とXamarin.Mac)のそれぞれについて契約する必要がある。この他に30日間有効なTrialエディションもある。

  • Xamarin Starter
  • Xamarin Indie
  • Xamarin Business
  • Xamarin Enterprise

 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開発者にとっては魅力的な選択肢といえる。

参考資料


「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© 1999-2016 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

今回は、「MacBook Air」をプレゼント!
Loading

ホワイトペーパー(TechTargetジャパン)

注目のテーマ

@IT Special

- PR -

コンパクトなシステムで価格を最適化したCisco UCS Miniの実力を検証

Cisco UCS Miniが中堅中小企業に選ばれた理由

低コストでハイスペック、省スペース! @IT編集部による検証結果は?

新省スペースサーバーのスゴさを@IT編集部が検証

マイナンバー対策は、高性能で安全なITインフラを手に入れるチャンス!

マイナンバー対応サーバーの選択:5つのポイント

編集部からのお知らせ

@IT編集部では現在、編集スタッフを募集しています。編集経験は不問。 ITに関する経験のある方、ご応募お待ちしています。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。