ニュース

iOSもAndroidも! WindowsでもMacでもモバイルアプリを1つのコードで開発できる「Xamarin」

 日本マイクロソフト株式会社の主催による開発者向けイベント「de:code 2016」で、25日に行われた「Xamarin」入門者向けのセッション「これから始めるXamarin~環境構築からiOS/Android/UWPアプリのビルドまで~」をレポートする。

 Xamarinは、オープンソースプロジェクト「Mono」をベースにしたモバイルアプリのクロスプラットフォーム開発環境。2月にMicrosoftによる買収が発表され、4月にはMicrosoftの開発者向けカンファレンス「Build 2016」において、Xamarinの機能をVisual Studioユーザーに無償提供することが明らかにされた。

日本マイクロソフト株式会社 デベロッパー エバンジェリズム統括本部テクニカル エバンジェリストの千代田まどか氏
日本マイクロソフト株式会社 デベロッパーエバンジェリズム統括本部 オーディエンステクニカルエヴァンジェリズム部長の砂金信一郎氏
エクセルソフト株式会社ソフトウェア事業部 Business Development Managerの田淵義人氏
日本マイクロソフト株式会社 デベロッパー エバンジェリズム統括本部 プラットフォームエバンジェリストの高橋忍氏

 従来のモバイルアプリ開発では、OSごとにツールがまちまちで、開発言語が異なるためコードの再利用もできなかった。しかし、Xamarinを使えば、基本的にはC#または.NETとVisual Studioで、iOS/Android/UWPのモバイルアプリを開発できる。コードを共通化でき、Visual Studioや.NETの資産を活用することも可能だ。

 OSには個別に標準のコントロールやスライダーといったUIデザインや、戻るボタンの位置などの作法がある。開発されたアプリでのユーザー体験を向上するために、アプリのロジックを共通化する一方で、UIは個別に開発するのがXamarinの基本思想となる。

 Xamarinはすでに開発開始から5年以上が経過しており、ベースとなったMonoは15年以上の実績がある。iOSとAndroidのネイティブUIやAPIはすべて移植されており、C#などからすべて利用できる上、パフォーマンス面でもネイティブでのアプリ開発との違いはないという。

従来のモバイルアプリ開発は、プラットフォームごとに言語やツールが異なり、コードの再利用もできなかった
Xamarinを使えばバックエンドのコードをすべて共通化でき、OS固有のUI部分を個別に開発するだけで複数のモバイルOS向けに開発が行える
Windows API
iOS API
Android API

 現時点では、国内のXamarin利用者はまだまだ少なく、日本語のドキュメントなども整備されていないが、その有用性から、導入例もすでにいくつか見られる。

三井住友銀行の住宅ローン審査アプリ「スピードアンサー15」
フェンリル株式会社開発の「NHK紅白公式アプリ」
株式会社エムティーアイの日本酒アプリ「Sakenomy」
アユダンテ株式会社の電気自動車用充電スポット検索アプリ「EVsmart」

 開発環境としては、WindowsでiOSアプリの開発を行うことも可能だが、アプリのビルドにはMac OS Xで動作するXcodeが必要となる。Androidアプリの開発はWindowsでもMacでも可能だ。

 Windowsでは、Visual Studio 2015 Update 2にXamarinが同梱されているため、あとはAndroidアプリ開発用のAndroid SDKとJavaのインストールが必要だ。Mac OS Xでは、Xamarin StudioとXcodeがあれば、Android/iOSアプリの開発が行える。

【お詫びと訂正 18:20】
 Mac OS XではUWPアプリを開発できないため、記事初出時から本文の一部と記事タイトルを変更しました。お詫びして訂正いたします。

Mac OS XではWindows 10 Mobile向けのアプリを開発することはできない
セットアップまでの難易度は、Mac OS XでのiOS開発が最も容易だ

 今回のセッションでは、Android向けとiOS向けにサンプルアプリを展開するデモも行われた。Androidではエミュレーターが難易度を上げるため、実機を使った方が問題が少なくなるとのことだ。

WindowsではAndroid実機の画面をChrome上で表示する拡張機能を利用して、
Mac OS XではXamarin Studioを使用。iOSシミュレーターで簡単にデバッグができる

 前述のようにXamarinは、UIはOSごとに個別に開発するという基本思想だが、このUI部分のコードも共通化してアプリを開発できるのが、Xamarinユーザーの要望を受けて開発されたXamarin.Formsだ。

 Xamarin.Formsでは、UI部分のコードをXAMLで記述すれば、OSごとのネイティブのUIにマッピングされるという。このため、より簡単にアプリの開発が行える。ただし制約があり、用意されているページは5種類、レイアウトは7種類、コントロールは19種類のみとなる。

UI開発までを共有コードで開発できるXamarin.Forms
ページデザインは5種類が用意されている
レイアウトは7種類が用意されている
コントロールは19種類が用意されている
Xamarin.Formsで開発された地図アプリ。OSに応じて、UIのタブの位置や使われるマップのアプリ、ピンなどが異なることが分かる

 最後に、Microsoftの持つ開発環境の未来についても語られた。現在、.NET Framework、先日オープンソース化された.NET Core、そしてXamarinがあるわけだが、最終的にはクラスライブラリを共通化して、1つのビジネスロジックを書けば、最終的なターゲットとなる環境に応じて、UI部分を開発すれば済む、という状態が理想で、「全部そろえたMicrosoftが目指すべき方向性」(日本マイクロソフト株式会社の高橋忍氏)とした

 すでにCEOであるサトヤ・ナデラ氏や開発責任者のスコット・ガスリー氏も、こういった方向性を打ち出しているが、この実現へ向けては、「Microsoft社内での開発の重要度が上がるよう皆さんのフィードバックが重要になる」(日本マイクロソフト株式会社の砂金信一郎氏)とした。

Microsoftは現在、.NET Framework、先日オープンソース化された.NET Core、そしてXamarinがある
将来的に3つのライブラリを共通化して、1つの共通ロジックと環境ごとのUI部分を開発すれば、アプリを展開できることが目指すべき方向性となる

岩崎 宰守