Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

UWPアプリを書けばiOS/Android/Webでも動く!?
~Uno Platform:クロスプラットフォーム開発環境

UWPアプリ開発の最前線 第15回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2019/11/13 11:00

 C#でクロスプラットフォーム開発というと、Visual Studioに入っているXamarin.Formsがあります。でも、Xamarin.Formsには、独自のXAMLであることと、Webアプリは作れないという、2つの弱点があります。それを解決する新しい開発プラットフォームが、今回ご紹介するUno Platformです。

目次

はじめに

 先日、発表されたSurface Duoを見て、いよいよAndroidの開発もやってみよう/やらなきゃいけないと思った人もいることでしょう。なにしろ、MicrosoftからもAndroidデバイスが出てくるというのですから(発売は2020年のホリデーシーズンとの予告)。

Surfaceの新ラインナップ
Surfaceの新ラインナップ:画面中央手前の小さなデバイスがSurface Duo(公式ブログより)

 エンドユーザー向けアプリを動かしている現在主流のプラットフォームといえば、次の4つが挙げられるでしょう。

  • Windows(PC)
  • iOS(iPhone、iPad)
  • Android(スマホ、タブレット)
  • Webブラウザー(PC、スマホ、タブレット)

 プラットフォームごとにアプリを開発するのは大変です。1つのコードベースで複数のプラットフォームに対応できないでしょうか? それを実現するのがクロスプラットフォーム開発環境で、すでにそれはいくつもあります。C#で開発するなら、現在のVisual StudioにはXamarin(ザマリン)という優れたクロスプラットフォーム開発環境が入っています。

 Xamarinは十分に成熟した開発環境だといえます。しかし残念なことに、大きな弱点が2つあります。

  • Webアプリに対応していない
  • XAMLの書き方が、WPFやUWPとはずいぶん異なる

 Webアプリに対応できていないのは、上に挙げた4プラットフォームすべてを狙おうとするなら致命的です。また、UIを記述するXAMLの書き方が違うというのは、これからXAMLを覚えようという開発者には問題ではありませんが、WPFやUWPの経験を積んできた開発者にとってはかなりの負担となります。

 UWPアプリ開発者にとっては、UWPアプリのコードを書くだけで上記4プラットフォームで動くアプリになってくれたらどれだけ嬉しいでしょう。そんな夢を実現しようというのが、これから紹介するUno Platformなのです。

 さらに、Uno PlatformはXamarinの弱点も補います。Xamarin.Forms(UWP)のプロジェクトからWebアプリのプロジェクトを生成できるので、Xamarinでも上記4プラットフォームに対応できるようになるのです。

 Uno Platformは、最初のコードがGitHubにコミットされたのが2018年5月という、まだ比較的新しいオープンソースのプロジェクトです。とはいえ、コントリビューターにMicrosoftやXamarinを含む50以上の個人/組織が参加して、精力的に開発が進められています。2019年9月にはUno Platform 2.0が発表されました(本稿執筆時点ではまだプレリリース版)。

 どんなアプリをUno Platformで作れるのか、気になってきたでしょう。まずは公式サンプルをいろいろと試してみてください。次の画像は、そのうちの1つ、「Uno Calculator」です。これは、オープンソース化されたWindows電卓をUno Platformに移植したものです。

4つのプラットフォームで動いている「Uno Calculator」
4つのプラットフォームで動いている「Uno Calculator」:
この中でiOSとAndroidはVisual Studio 2019に付属しているエミュレーター

 この「Uno Calculator」は、ビルドされたものを入手できます(UWPは除く)。あなたのお手持ちのプラットフォームで試してみてください。

対象読者

  • UWPアプリを作っている開発者
  • クロスプラットフォーム開発に興味を持っている開発者

必要な環境

 Uno Platformを使うには、Windows 10とVisual Studio 2017(15.5以降)が必要です。iOS用のピルドには、macOSが必要です(後述しますが、Macの実機がなくてもなんとかなります)。

 サンプルコード(GitHub)は以下の環境で作成し、動作確認しています。

  • Windows 10 1809
  • Visual Studio 2019 Version 16.3.6
  • UWP用Windows 10 SDK: 10.0.17134.0、10.0.17763.0
  • Android SDK 26、28
  • macOS 10.14.6
  • Xcode 11.1
  • iOS SDK:13.1
  • Uno Platform Solution Templates 1.45.0.1865
  • Uno.Core 1.28
  • Uno.UI 1.45
  • Uno.UniversalImageLoader 1.9.32
  • Uno.Wasm.Bootstrap 1.00-dev.244

 なお、環境が整わなかったり、あるいは、「ごちゃごちゃインストールする前に、とりあえず試したい!」というようなときには、Uno Platform Playgroundを試してみてください。XAMLの記述がどのように動くか、簡単なデータバインディングも含めて体験できます(次の画像)。

Uno Platform Playground
Uno Platform Playground
中央上がXAMLエディター。中央下がバインドされるデータ(JSONで記述)。画面右側が実行結果。
矢印で示したようにデータバインディングが働いています。データを変更すれば反映されます。

関連リンク

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • biac(ばいあっく)

    HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。 2014/10~2019/6 Microsoft MVP (Windo...

バックナンバー

連載:UWPアプリ開発の最前線

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5