はじめに
私は、現在ソフトウェアの開発部門では働いてはいないのですが、日々の作業を軽減するためのツールを自作することを趣味にしています。過去に、業務でソフトウェア開発を行っていた経験を活かすことができるのと純粋にプログラムを楽しむためです。業務でプログラムを作るというのは、楽しいことばかりではありませんので、趣味と実益のから考えると今くらいの関わり具合いが私にとってはバランスが良いのかもしれません。
業務改善というとノーコード・ローコードツールが選択肢になると思うのですが、Windowsに標準で用意されているPower Automate Desktopの無料版は制限が大きく所属会社の理解とバックアップが不可欠です。比較して、Visual Studio Communityは、フル機能が無料で手に入りますし自分の業務を省力化・自動化する用途であれば、規模や難易度から考えて、アプリケーションを作ってしまった方が簡単でした。
前職では、WPFを使った開発を行っていましたので、学習コストを抑えるために、WPFを使ってアプリを作ってみました。上司や同僚からの反応もおおむね好評で、業務に支障がなければ業務時間内にプログラムすることも認められています。このままWPFを使い続けていても問題は無いのですが、どうせ趣味で作るのであれば、新しい技術も試してみたいと思いWinUI3(Windows App SDK+.NET Community Toolkit)を調べてみました。
WinUI3について
概要
公式説明
WinUI 3 は、(完全に Windows 10 SDK から切り離された) Windows App SDK に付属するネイティブ UI プラットフォーム コンポーネントです。 Windows App SDK には、Windows 10 以降を対象とした実稼働デスクトップ アプリを作成し、Microsoft Store に公開するために使用できる、API とツールの統合セットが用意されています。
Windows App SDK (WinUI 3) の WinUI
あまり成功したとは言えないUWPが、WinUI2で、WPFはWinUI1になるようです。
クロスプラットフォーム向けの.NET MAUIもありますが、クロスプラットフォームにどこまで需要があるのか結果が分かるまで、少し時間が掛かるでしょう。個人的には、Linux用のアプリをXAMLで作れたらと思うのですが、Linuxには対応していないみたいです。
サンプルアプリケーション
WinUI 3 Gallery
まずは、お手本となるWinUI 3 Galleryをインストールして確認することから始めました。
Githubのソースコードにも簡単にアクセスできるので、プログラム方法はすぐに理解できると思います。
非常に良くできたアプリケーションなので、すごく参考になります。
アプリの配布をどうするか
部署内の数人のために作ったプログラムなので、exeをZip圧縮して渡すだけでも事足りるのですが、アップデートがあるたびに、声がけするのもスマートじゃありません。標準で更新通知を自動的に行う機構が用意されていますので利用します。
WinUI 3アプリには、ざっくりいうとMicrosoft Storeに公開するPackageとMicrosoft Storeを使わないUnPackageがあります。Microsoft Storeは、企業向けやプライベート向けの配布を止めてしまったので、自分のような用途では、UnPackage(サイドローディング)を使用することになります。ここで問題となるは、アプリパッケージの作成を使ったWeb配布機能が、セキュリティー的な懸念から制限が掛かってしまっている点です。
引用
米Microsoftは12月28日(現地時間)、「ms-appinstaller」プロトコルハンドラーを既定で無効にしたと発表した。2023年11月中旬以降、金銭の詐取を目論む複数のサイバー犯罪者がMSIX形式のインストーラーを介してランサムウェアを送り付ける事例が観測されたためだという。
Microsoft、「ms-appinstaller」プロトコルハンドラーを既定で無効化 ~マルウェアの標的に
残念ながら当面の間、ms-appinstallerを使うことは難しいようです。
WinUI 3アプリでも使い慣れたClickOnceを使うことは可能ですので、そちらを使用することとします。
プロジェクトの作成
プロジェクトは、WinUIのTemplate Studioを使用して作成します。