Uno Platform とは?
「Uno」と聞くとあの有名なカードゲームくらいしか思い浮かばないのですが、この「Uno( Platform)」はクロスプラットフォーム開発環境であり、近しいところでいうと Xamarin がこれにあたります。
つい最近、Twitter のタイムラインで流れてきたので気になって検証してみました。
必要なもの
Windows 10 と Visual Studio 2017(15.5以降) が必要とのことで、この「Windows」というのがミソ、現状では Visual Studio for Mac には対応していないようです。
開発環境の構築より
Uno Platform の利用に際して
・UWP開発(ユニバーサル Windows プラットフォーム開発)
・Xamarin(.NET によるモバイル開発)
が必要で更に Web アプリ開発に関しては
・Webアプリ(ASP.NET と Web 開発)
のワークロードのインストールが Visual Studio 2019 導入時に必要です。その前提でまずは「Uno Platform Solution Templates」を Visual Studio にインストールします。
環境が整った後は下記のような流れになります。
このメッセージを見て気づいたのですがWebアプリ部分は WebAssembly が絡んでいるようで。以前はC#が「そのうちサポート」というステータスだった気がしますが、このようなところに既に食い込んできたところを見ると進歩を感じます!
(注)Visual Studio をセットアップしたての場合はこの後にメッセージ出るかも?
正常に立ち上がった場合の構成は上記のような感じです。「.Droid」が Android アプリで「.iOS」が iOS アプリ、「.Shared」が共有プロジェクトで他の4つのプロジェクトへのマージをします。「.UWP」は UWP アプリ、「.Wasm」が Web アプリです。
実はソリューションが立ち上がった時点で「Hello World」はデバッグ出来る状態なのでそれぞれ試してみましょう。「TestApp1.Shared」直下の XAML ファイルを開いた上で確認します。
これは「UWP」でのもの。
これは「Android」でのもの。(縦長なので上半分のみ)
これは「Web」でのもの。今回は「iOS」を割愛しておりますが、実際は4プラットフォームで反映されます。
ちなみに、XAMLを開いたままホットリロードが可能なのは現状「UWP」のみで、他のプラットフォームに関しては Uno Platform 2.0 で対応予定とのことです。ホットリロードが各プラットフォームで対応すればクロスプラットフォーム開発がかなり捗りそうですね。
振り返りとして、各プラットフォームにおいての基板部分の構成は上記図のような構成みたいです。UWP 以外は大元で「mono」と呼ばれるソフトウェアを利用しております。
その上で iOS と Android は「Xamarin」を通して3つのプラットフォームは Uno Platform を通します。前述の CodeZine の最終ページにも記載されておりますが、「Uno Platform が対応済みの範囲なら、動く!」ということでまだまだ成長段階のクロスプラットフォーム開発基盤ですが成熟する頃には C# + XAML + Uno Platform がスタンダードになっているかもしれません。そういう意味でもウォッチを続けようと思います。
しかし、、かくいう私は C# 初心者なので、最近 C# 界隈がアツいこともあり、今後は C# の独習にも力を入れていこうと思います!
追記(Appendix)
2019/12/23
追いかけている WebAssembly 技術が絡んでいるということもあり、Uno Platform は目が離せない状況です。実は技術書典8にて有名なお三方が Uno Platform に関して同人誌を出すようでコレは購入したいところです!(現地に赴けるなら赴きたい・・・・。)