かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

de:code 2018 の「最新 Windows 10 に最適なデスクトップアプリ開発手法ご紹介」で伝えたかったこと

参加していただいた方ありがとうございました! セッション動画やスライドは順次公開されていくと思います。私はセッション中で使ったプログラムなどは GitHub に置いてありますのでご興味がおありでしたらご確認ください。

github.com

伝えたかったこと

一応セッションをするにあたって考えたことは Windows 10 のデスクトップアプリとは別のプラットフォームでやったほうが楽なことを無理やり UWP で!!というのは無理があると思うし、自分でも大いなる力が働かない限りは選択しないと思う…という考えがあって、じゃぁなんでデスクトップアプリなの?そして、その上で UWP を選ぶの??というのを考えていました。

マスターメンテナンスをしたいという要望に対してデスクトップアプリでやりましょう!!というのは配布とか考えると、ちょっとめんどくさいし、デスクトップアプリだとしても別にWPFで作った方が Windows 7 でも動くし Electron で作ったら macOS や Linux の人も使えるよ?となります。

そこに UWP をねじ込むのは誰も幸せにならない。せめて Windows 7 と 8 のサポートが完全に切れるまで UWP を選択するということは、メーカーはサポートしてるけど、このアプリは動かすことが出来ませんという OS が出来るということですよね。

じゃぁ、UWP まだ使うメリットないのでは?と思ったりしました。でもストアという配布の仕組みにのっかれるなら、UWP にした方がいいかもねって感じかなぁ…と。

そんなこんなで API 眺めてたら Project Rome という懐かしい文字をみつけました。 しかも SDK が preview とはいえ Android, iOS, MSGraph がある!出来ることは別マシンのアプリの起動や、自前サーバーとか用意しなくても別マシンのアプリとの通信ができるというもの。

これを使えば最近の Android や iOS にある「PCで続行」の機能が自分でも作れる! アプリのリモートでの起動はプロトコルでの起動だし、通信部分は AppService を使うということで UWP を想定してるっぽい。

色んなデバイスにまたがってシームレスに作業できるようなアプリを作るなら UWP が一番良さそうだなと思ったので、それを推すことに決めました。

ということで 1 つのデバイスに閉じた状態で完結するようなアプリであれば得意なもので作ればいいけど、もし複数のデバイスのアプリが連携して 1 つのことをやっていくようなアプリなら、それの Windows 上での役割を担うのは UWP が一番いいね!ってことを伝えたかったです。

そして幸いにも de:code のキーノートでも割とクロスデバイスに力入れてますというメッセージで次の Windows の大型アップデートで、こんな便利な機能が追加されます!!という感じだったので、実はそれと同じようなものは、すでに作ろうと思えば作れるよ!!ということを言えたのはラッキーでした。

まとめ

だらだらと書いてみましたが、Windows 10 になって追加される新しい機能の結構なものが UWP を想定しているので苦労をせずに新しい機能に対応できるというメリットが、既存の環境に縛られてるという呪縛を上回るときが早く来て欲しいなぁと思います。

因みに、WPFとかからでも Windows 10 API は叩けるのでやってやれないことはないです。.NET Core 3 や .NET Framework 4.8 からは、もっと Windows 10 API 叩きやすくなるらしいので、そうすると、もしかしたら UWP でやる必要無くなるかもしれませんが、モノが出てないので出たらまた見てみようという今日この頃でした。