Help us understand the problem. What is going on with this article?

Uno Platform 入門 1 : Uno Platform とは? ~ C# で iOS, Android, Web, Windows 10 アプリを一気にクロスプラットフォーム開発~

C# で iOS, Android, Web, Windows 10 (UWP) アプリを一気に クロスプラットフォーム開発 できる、(UWP 向けのコードが他 3 プラットフォーム向けにビルドできるようになる) 、
アプリケーション開発フレームワーク である Uno Platform (ウノ プラットフォーム) を
触ってみたのでここに記録します。

(ちなみに現在アメリカ出張中なので、Microsoft オフィス近くのカフェでこの記事を書いています)

次の記事 『Uno Platform 入門 2 : 環境構築をしよう! Uno Platform ハローワールド

告知:2020年 3月 1日 (日) に、私たち 3 人で書いた Uno Platform 本「牛めし警察で学ぶ Uno Platform」を、 技術書典 (池袋) にて発売します!

Uno Platform とは

image.png

[https://platform.uno/]

Uno Platform とは、
オープンソースで開発されている、
クロスプラットフォーム開発ライブラリです。

公式ドキュメントを読んでみましょう。

The Uno Platform is a Universal Windows Platform Bridge that allows UWP-based code (C# and XAML) to run on iOS, Android, and WebAssembly.

(Uno Platform とは、UWP ベースのコード (C# + XAML) を iOS, Android, WebAssembly で動くようにする Universal Windows Platform Bridge です。)

要するに、
Uno Platform を使えば、C# + XAML だけで

  1. Windows 10 アプリ (UWP)
  2. iOS アプリ
  3. Android アプリ
  4. Web アプリ(WebAssembly)


一気に!
効率良く!
クロスプラットフォーム開発 (= 複数プラットフォーム間でソースコードを共通化しながら開発)!
できるというものです。

しかもオレオレ仕様ではなく、UWP ベースのコードが動くのが素晴らしいですね。(UWP 向けのコードが他プラットフォーム向けにビルドできるようになる)

こちらの、元 Microsoft MVP の biac さんの記事が詳しいのでご覧になってください。
UWPアプリを書けばiOS/Android/Webでも動く! Uno Platform:クロスプラットフォーム開発環境

XAML とは

XAML』(ザムル):

  • Extensible Application Markup Language の略
  • アプリ UI などを定義する用の XML ベースのマークアップ言語
  • UI を XAML で書いて、
    その裏の処理 (ボタンを押された時の処理など) を C# でプログラム、
    という流れになる

XAML 例

ボタンを表示させる XAML 例

<Button Background="Blue" Foreground="Red" Content="これはボタンです"/>

UWP とは

image.png

UWP (ユーダブリューピー) とは、
Universal Windows Platform のことで、
Windows 10 のコアです。

簡単に言うと
UWP アプリ」と言われたら
「ストアで配布可能な、 Windows 10 で動くアプリ
と思えば大体合ってます。

詳しく知りたい方はこちらの公式ドキュメントをどうぞ:
ユニバーサル Windows プラットフォーム (UWP) アプリとは - Microsoft 公式ドキュメント

Xamarin.Forms と Uno Platform

(* ゜▽゜ * っ)З「良いね! でも、あれ? C# + XAML でクロスプラットフォーム開発って、Xamarin (ザマリン) もそうじゃなかったっけ?」

たしかに、 Xamarin.Forms でも、
C# + XAML で
iOS, Android, UWP アプリが
クロスプラットフォーム開発できます。

でも Xamarin.Forms では Web アプリ開発はできません。

また、Xamarin.Forms の XAML 記法は UWP とかの記法と違う記法だけど、
Uno Platform は UWP や WPF と同じように書けます。

一方、

Xamarin.Forms は Microsoft 公式が開発してるフレームワークで、とくに 2016 年の MS による Xamarin 買収以降、一気に物凄くしっかりしてきました。現在も多くの企業の大手アプリでの採用事例が広がっていっています。

また、Uno Platform は Xamarin を使って動いてる (後述) のですが、Xamarin.Forms は Xamarin 自身からリリースされてますし、そこも良さがあります。

Xamarin.Forms は各コンポーネントはプラットフォームネイティブの UI コンポーネントで構成されるので、単一コードで各プラットフォームに沿った UI をクラスプラットフォームで構築しやすいというメリットがありますが、反面設定できる項目が少なくカスタマイズ性が低いということになります。

これは どちらが優れているかという事ではなく、フレームワークの性質ということだと思うので、ケースによって判断すればよい と思います。

(ちなみに Uno Platform は Native Style を指定する事でプラットフォームネイティブのコンポーネントを同一画面内で混在させて使用する事が可能となっています)

(引用:Uno Platform のススメ より)

比較表

. Xamarin.Forms Uno Platform
読み方 ザマリン フォームズ ウノ プラットフォーム
ロゴ image.png image.png
開発元 Microsoft 社 nventive 社
誕生年 2014 年 2018 年
OSS? オープンソース オープンソース
開発言語 C# (+ XAML), F# (+ XAML) C# + XAML
XAML記法 UWP, WPF とは異なる UWP, WPF と同じ
開発可能プラットフォーム
(preview 版を除く)
iOS,
Android,
UWP (Windows 10)
iOS,
Android,
UWP (Windows 10),
WebAssembly (Web アプリ)

(Xamarin.Forms は preview 版なら macOSWPF なども対応しています)

Uno Platform の仕組み:Uno Platform は Xamarin の上で動いている

(* ゜▽゜ * っ)З「Uno PlatformXamarin とは関係ないの?」

あります!!

Uno PlatformXamarin の上で動いています!
(Microsoft 入社前は Xamarin でスマホアプリ開発していたプログラマーだったので、個人的にこれが一番熱い)

(* ゜▽゜ * っ)З「まあそうだよね、すでに C# が iOS, Android など向けにビルドできるようになる環境 (Xamarin) がオープンソースで開発されてるのに、それを使わないで独自にそこからイチから作るのは理にかなってないよね。既にあるものを利用するべきだよね」

Uno Platform

(上のアーキテクト図は 公式サイト より)

上の図を見ると、例えば、

一番左の UWP の欄、
我々の書くコードはもともと UWP のものなので、
UWP はそのまま UWP アプリ (Windows 10 アプリ) としてビルドされます。

そして iOS, Android アプリは、
我々プログラマーの書くコード (C#+XAML) の下に Uno Platform がいて、
その Uno Platform は Xamarin を使っていて、
その Xamarin は mono を使って動いています。

(mono は .NET 系 (C#) のランタイムのひとつ。これもオープンソース。mono があるから iOS, Android の上でも C# が動くよ。ちなみにゲームエンジンで有名な Unity も mono を使ってるよ)

そして Xamarin は WebAssembly をサポートしていないので、Uno Platform は mono を直接たたいて動いています。

参考資料

2020年3月1日(日) の 技術書典で
3人で書いた技術本『牛めし警察で学ぶ Uno Platform』を頒布します!

Microsoft MVP の ひらりんさん (@himarin269)、
Microsoft 社のエンジニアの かずきさん (@okazuki)
との 3 人で書きました!

image.png

参考記事: #技術書典 8 にて「牛めし警察で学ぶ Uno Platform」を頒布します!

こちらの本でも詳しく解説していきます。

次回記事

次の記事では環境構築について書きました!

→ 『Uno Platform 入門 2 : 環境構築をしよう! Uno Platform ハローワールド

image.png

chomado
ITエンジニア兼マンガ家の千代田まどか (ちょまど) です。Microsoft 社の Cloud Developer Advocate として、デベロッパーコミュニティの支援を行っています。松屋とゲームとアニメが好きです
https://chomado.com/
microsoft
マイクロソフトのメンバーが最新の技術情報をお届けします。Twitterアカウント(@msdevjp)やYouTubeチャンネル「クラウドデベロッパーちゃんねる」も運用中です。
https://aka.ms/MSFT-Docs-JPN
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away