なぜUWPは「ダメ」なのか
元々、UWPアプリとは「Windowsの世界に限って」の「ユニバーサル」に動くアプリを開発できますよ、という話しで登場した新たな技術(と実行環境)でした。具体的には、Windows PhoneというモバイルとWindowsデスクトップ で共通のアプリが使えます、という売込みだったのです。そしてUWPアプリはiPhoneみたくストアで入手でき、今後はUWPがWindowsアプリの未来である、と。
しかし、Windows Phone、こけてしまいました。もはやWindowsOSの携帯OSは存在しません。しかも、Windows8でのタッチ系のモバイルを前提としたModern UI での大失態も絡んで、ストアのUWPアプリは不人気で、残念ながらアプリの質も悪いのが多い、という状況でした。参考:Windows ストアが盛り上がらない理由
マイクロソフトとしては、UWPもストアにしても、まったく盛り上がらないので、昨年のAnniversary エディションで、「デスクトップのアプリを語弊のある『コンバート』=つまりはAppX形式のパッケージ化した『Win32アプリ』もOKにします」と方針転換し、WindowsのデスクトップPCでしか動かない(UWPでもユニバーサルでもない)アプリ もストア登録して公開できるようにしました。
なので、現状、
1. UWP技術を使ってUWPとして開発されたUWP、と、
2. AppXにパッケージしただけのネイティブや非ネイティブのストアアプリ、
が混在しています。
これは開発者でも知らない人や混乱している人も居るようです。メディアも適当な表現で報道してしまっています。
で、これらを踏まえた上で、ここで話すUWPは、前者の「1.UWP技術を使ってUWPとして開発されたUWP」方となります。
では、マイクロソフトはなぜその「失敗」した、もはやモバイルOSもない為に存在意義の無くなったUWP を未だに推進しているかというと、幾つかありますが、セキュリティ的にアプリの挙動を制限したくて、「UWP=サンドボックスで動かすアプリ」、を標準にしたいという目的と、ストア経由のサブスクリプションでの収益確保にシフトしてるからだと思われます。
しかし、もはや失敗したUWPをこれ以上推し進めるのは間違いである、という事をマイクロソフトは認識すべきなのです。
UWPが「ダメ」な理由
“UWP as a desktop app platform is a failure”
1.そもそもの、「クロスデバイス(cross-device)=ユニバーサルを単一のアプリで」、に無理がある。
デスクトップPCと携帯・スマホは、まったく別モノ(別デバイス)と考えるべきもので、元々のUWPの思想であるまったく同じアプリを携帯とPCで動かす、というのはバッドなアイデアです。
そういうモバイル・携帯で動く、という思想で作られたUWPのライブラリやコントロールはデスクトップ上では機能が足りなく、使いにくくて、物足りず、タッチに最適化されているため、コントロールの間隔が空きすぎて、見た目も間が抜けた感じなるのです。マウスで操作するにはスペースが空きすぎていてマウスの移動距離が増えて使いにくくなります。
デスクトップPCでUWPアプリを起動すると、機能の少ない出来の悪いオモチャみたいに見えてしまいます。
タッチ操作とキーボード+マウスの操作性は根本的に違う上に、ディスプレイのサイズによる一覧性の違い(4Kディスプレイと携帯画面)考えると、GUIの設計思想やウィジェットからして、デスクトップとスマホは根本的に別物であるべきなのです。普通のサイトだってデスクトップとモバイル向けで表示用テンプレ切り替えてるわけですから。
マイクロソフト純正のアプリですら、ショートカットキー、アクセラレーターキーとか完全に無視した(昔だったらマイクロソフトの基準に達してない、と言われるレベル)ものばかりです。たとえ対応しているとしても、どうやるのか分からない、という。。。キーボードでサクサク操作できないとか、何を考えているのか、と。
Appleでの話しだけど、分かってる人は分かっています。
iOS has no concept of a mouse cursor and runs only on touchscreen devices. MacOS has no support for touchscreen devices and requires a mouse pointer. “One user experience” is neither possible nor desirable.
Appleの「Marzipan」プロジェクトの目的はmacOS/iOSで動くアプリではなく、UIKitやAppKitに続く新しいフレームワークを開発者に提供すること? | AAPL Ch.
同じアプリで異なるデバイスにおいて共通のUXを、なんて無理であって、望ましくもない、と。それぞれ最適のUIを使え、と。
UWPはあくまで携帯・モバイル向け。デスクトップ向けはWPF、とはっきり区別させるべきだったのです。
しかも、「Windowsファミリー」でユニバーサルなアプリを謳ってしまった以上、もはや省電力軽量なモバイルに特化した新たな別のOSは開発出来ないという、自ら手足を縛る事になってしまった訳です。
関連:
2.モバイル向けのサンドボックスに制約あり過ぎる。
元々の経緯だった、Windows Phone でも動きます、という関係上、出来る事が基本モバイル向けです。デスクトップで動かすにも、制約があり過ぎてコントロールやライブラリの機能も少なく、開発者にとって、中途半端すぎてわざわざUWPを選ぶ必要性が(見た目以外に)ないのです。
制約は沢山あり過ぎてアレですが、複数Windowが使えない、ブラウザでウェブページを表示するなどの他のプロセスを起動できない、などなど。
目的がシフトして以降、最近のバージョンアップでUWPにデスクトップ向けの機能も徐々に追加されてきているけれども、見た目(アニメーションやら)ばかり派手になっていて、業務ソフト的には全然機能や柔軟性が足りません。そもそも別に、FormsやWPFで良いじゃん、という話しもあります。
Win32やWPFのデスクトップアプリもパッケージ化して、ストアで頒布できるようになった今、UWPの制約<UWPの利点のバランスが悪すぎます。
3.そもそも、UWPの「ユニバーサル」って。。。
Windows PhoneとデスクトップのWindowsで同じのが動きますってウリが、Windows Phoneもコケて、存在意義は無くなったわけです。
Windows Forms と WPF があって、UWP、 Xamarin.*も出てきて、.NET関係のテクノロジーはもうぐちゃぐちゃです。Win 32 の資産を切り捨てるのか、Windows Forms と WPFも、レガシー技術として、このまま放置するのか、マイクロソフトは、一旦、整理して、方向性もはっきりさせるべきでしょう。
4.UWPの見た目がダサすぎる。
身も蓋もないけれど、Xamarin.Forms で、iOS と Android、Windows Phone(UWP)版を見比べてみると分かる。全く同じものが、UWPだとナビゲーションもダメ、見た目もダメ。Modern UIを引きずっています。
結論
Windowsの「ウィンドウズ」つまり複数Windowを廃止して、単一Windowのみで、デスクトップを蔑ろにするなんて、Windowsにとっての自殺行為に等しいと言えます。
本来であれば、UWPをバッサリ廃止して、Xamarin.Forms を新生UWPとすべきでしょう。あと、デスクトップ向けWPFを「レガシー」とか「クラッシック」とか表記せずに、時代遅れ感をだすのは、ヨシてやってください。とほほ。
追記
2020年になって、マイクロソフトから「.Net5」がアナウンスされて、WPFやXamarinなどのプラットフォームの統一がされる事になり、マイクロソフトがモバイル開発と共にネイティブのデスクトップアプリ開発へ回帰する、という方向性を出してきました。クラシックだのレガシーという表現も消え、単に「デスクトップ」となりました。素晴らしい。こうして方針転換できることは偉い。
それにしても、まるで私の意見を聞いてくれたかのようで、嬉しい限り。