
「Visual Studio上でiOS/Androidアプリ開発を」の声に応えた
そもそも、なぜ、日本マイクロソフトのテクニカルエバンジェリストが、iOSやAndroidのアプリケーションを開発するツールの話をするのか。その理由について渡辺氏は、利用されるデバイスとOSが増え、その有用性が一般に認知されてきたことと、それに伴い、開発者の関心もクロスプラットフォームに移ってきていることを挙げた。
また、最近のスマートデバイス向け開発では、以下の実現も要求される。
- すばやい市場投入:OSのバージョンアップが早く、新しいデバイスも出る。
- コストの抑制:いかに既存チームのスキルを生かし、工数を削減するか。
- 質の高いUX:キーボード、マウス以外の入力方法への対応など。
決定的なのは、こうした事情を背景に「マイクロソフトのVisual Studioで、なぜiOSやAndroidのアプリケーションが作成できないのか、という指摘が顧客から数多く寄せられた」(渡辺氏)ことだろう。
マイクロソフトは、これらを実現するために2013年11月、Xamarin社とグローバルでパートナーシップを締結。Visual Studio上でiOS/Androidアプリを開発可能にする同社のアドイン「Xamarin」を、Visual Studio 2013の公式アドインとした。さらに、ポータブルクラスライブラリやAzureモバイルサービスといった、既存の.NET、C#の資産を活用するためのツールにも正式対応となっている。
Xamarinの特徴は次の3つである。
- “フル”ネイティブな開発経験:JavaとObjective-Cと同じことができ、すべてのAPIが使える。
- パフォーマンスが高い:インタープリターではない、コンパイルされたバイナリパッケージとして出力される。
- C#ですべて書ける:.NETやVisual Studioにおける既存の資産やスキルを活用して、アプリケーションを開発できる。
クロスプラットフォーム開発で作成可能なアプリケーションには、「Web上でブラウザーからアクセスするもの」「Webとネイティブをブリッジしたハイブリッド」「ネイティブ」の3種類があるが、Xamarinで作成するのは「ネイティブ」である。
なお、クロスプラットフォーム開発だからといって、すべての部分をデバイスやOSを超えて共通化するわけではない。「共通のビジネスロジック部分をC#で書く」というのがXamarinの作法になっていると、渡辺氏は説明する。
一方、画面はネイティブで作成する。Windowsストアアプリ向けの画面はBlendで作成。Android向けの画面は、Xamarinが提供する公式のデザイナーにより、Visual Studio上でデザインできる。iOS向けの画面だけはMac上での作成となる。
デバッグでは、EclipseやXcodeで作成する場合と同様に、シミュレーターを使用できる。実機にデプロイしてデバッグしていくことも可能だ。
WindowsアプリからiOS/Androidプロジェクトを自動生成
ここまでの説明を終えた渡辺氏は、次にVisual StudioとXamarinによるクロスプラットフォーム開発のデモを披露した。
最初はWindowsストアアプリ(Windows 8アプリ)。当然ここではXamarinは必要ないのだが、クロスプラットフォーム開発の話なので、話の流れ上デモが行われた。
Visual Studioを起動し、Windowsストアアプリのテンプレートを選択すると、Windowsストアアプリのプロジェクトを含むソリューションが作成される。そこから通常のネイティブアプリ開発を行うと、これがAndroidアプリやiOSアプリの「元」となる。
次はAndroidアプリ。XamarinがインストールされているVisual Studioで、先ほどWindowsストアアプリを作成したソリューションを右クリックし、[新しいプロジェクト]を選択すると、Androidアプリのテンプレートも表示される。これを選ぶと、ソリューションにAndroidプロジェクトのファイルが生成される。開いてみると、Visual Studioの中でAndroid Designerが立ち上がり、toolboxからボタンを入れるといった作業ができる。ソースコードを見ると、普通にAXMLで書かれていることがわかる。
残すところはiOSアプリ。先ほど作成したAndroidアプリのソリューションを右クリックすると、iOSのテンプレートも入っている。ビューコントローラーを見ると、そのままC#だが、ボタンを追加するなどの作業は問題なく行える。残念ながら、iOSシミュレーターとStoryboard、Interface BuilderはWindowsに対応していないので、この部分に関してはMac上で作業する必要がある。
また、デバッグするにはMacとVisual Studioを接続しなければならない。Visual StudioにXamarinをインストールすると、設定に[Find Mac Build Host]というボタンが現れる。これをクリックすると、ネットワーク内にあるXamarin.iOS Build Hostが起動しているMacを探してくれる。対象となるMacでXamarin.iOS Build Hostを起動して接続するためのPIN番号を取得し、その情報をWindows側で入力すれば、接続が完了する。この環境により、Windows上のVisual Studioで、Mac側で立ち上がったiOS Simulatorを使ったデバッグが行えるようになる。
ここまでのデモでは、それぞれのプラットフォーム上に向けて別々に作業が行われたが、それをクロスプラットフォーム化する「PCL」(Portable Class Library)という仕掛けがある。これは、複数の.NET処理系に対し、バイナリレベルで再利用できるライブラリを作成するものだ。
ビジネスロジックやデータ、抽象化された機能などの部分をPCLとして共通化し、プロジェクトを作っていく。その共通部分を、ネイティブのUIを定義しているプロジェクトから参照することにより、クロスプラットフォーム開発を効率的に行えるようになる。
ここまでがXamarinの大きな流れだが、スマートデバイス向けのアプリが、クライアント上だけで完結することは少ない。通常はクラウドに繋ぐことになる。その意味で、「バックエンドをどう共通化していくかに留意する必要がある」(渡辺氏)
Windows Azureにはモバイルサービスという仕掛けがあり、これを使えばバックエンドを簡単に作成できる。管理画面を見てみると、Windowsだけでなく、Android、iOSを対象とするプッシュ通知や、Facebookでのログインなどを設定するための項目が並んでいる。Xamarinに関するドキュメントも用意されており、すぐに開発を始めることができる。
さらに、Visual StudioからXamarinが公式に運営しているマーケットプレイス「Xamarin Component Store」に入り、様々なコンポーネントを追加することができる。中には、Azureモバイルサービスに公式に対応したコンポーネントもある。
セッションの最後に、渡辺氏はXamarinで使えるMVVMフレームワーク「MVVMCross」を紹介。デモでは、MVVMCrossを活用して共通ロジック部分をPCLとして作成し、クロスプラットフォームに展開していく様子が披露された。
渡辺友太(わたなべゆうた)
日本マイクロソフト株式会社 テクニカルエバンジェリスト
Blog:Yuta Watanabe’s Blog
Twitter:@YutaWatanabe
セッション資料:XamarinとVisual Studioでまとめて作るiOS / Android / Windowsアプリ (Developers Summit 2014)
セッション関連情報:XamarinとVisual Studioでまとめて作るiOS / Android / Windowsアプリ (Developers Summit 2014)