Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9370

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

$
0
0

C# で iOS, Android, Web, Windows 10 アプリを一気にクロスプラットフォーム開発できる、アプリケーション開発フレームワークである 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 例

<ButtonBackground="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.Form の XAML 記法は UWP とかの記法と違う独自記法だけど、Uno Platform は UWP と同じように書けます。

って書くとまるで Uno Platform が Xamarin.Forms の上位互換のように見えるかもしれないけど、そんなことないよ!

Xamarin.Forms は Microsoft 公式が開発してるフレームワークで、とくに 2016 年の MS による Xamarin 買収以降ものすごくしっかりしてきました。

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

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

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

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

比較表

.Xamarin.FormsUno Platform
読み方ザマリン フォームズウノ プラットフォーム
ロゴimage.pngimage.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


Viewing all articles
Browse latest Browse all 9370

Latest Images

Trending Articles