C# で iOS, Android, Web, Windows 10 (UWP) アプリを一気に クロスプラットフォーム開発 できる、(UWP 向けのコードが他 3 プラットフォーム向けにビルドできるようになる) 、
アプリケーション開発フレームワーク である Uno Platform (ウノ プラットフォーム) を
触ってみたのでここに記録します。
次の記事 『Uno Platform 入門 2 : 環境構築をしよう! Uno Platform ハローワールド』
Uno Platform とは
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 だけで
- Windows 10 アプリ (UWP)
- iOS アプリ
- Android アプリ
- 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 とは
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 |
---|---|---|
読み方 | ザマリン フォームズ | ウノ プラットフォーム |
ロゴ | ||
開発元 | 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 版なら macOS や WPF なども対応しています)
Uno Platform の仕組み:Uno Platform は Xamarin の上で動いている
(* ゜▽゜ * っ)З「Uno Platform は Xamarin とは関係ないの?」
あります!!
Uno Platform は Xamarin の上で動いています!
(Microsoft 入社前は Xamarin でスマホアプリ開発していたプログラマーだったので、個人的にこれが一番熱い)
(* ゜▽゜ * っ)З「まあそうだよね、すでに C# が iOS, Android など向けにビルドできるようになる環境 (Xamarin) がオープンソースで開発されてるのに、それを使わないで独自にそこからイチから作るのは理にかなってないよね。既にあるものを利用するべきだよね」
(上のアーキテクト図は 公式サイト より)
上の図を見ると、例えば、
一番左の 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 を直接たたいて動いています。
次回記事
次の記事では環境構築について書きました!