torum

主に開発中のアプリにまつわる技術系の事。

.NET 10.0 と Visual Studio 2026 へバージョンアップ

小一時間前に、.NET 10.0 と Visual Studio 2026 が同時に公開されまして、さっそくインストールし、手元の(アクティブな)C#/.NETプロジェクトをVS 2026を使って.NET10.0に更新しました。

VS 2026は、見た目が少しと動作が多少軽快になったかな、という程度の違いで、ほぼ変化は無し。(Copilotとか不要なAIゴミ機能は速攻ですべて無効化)(ダークモードでプロジェクトファイルを開くと一瞬真っ白な画面がフラッシュするバグは未だ未修正のまま)

.NET10.0への更新は、プロジェクトファイルの<TargetFramework>net9.0-***</TargetFramework> を <TargetFramework>net10.0-***</TargetFramework> に一文字変えるだけ(プロジェクト>プロパティのページから弄ると変な挙動をしたのでVS 2026のバグっぽい)。.NET8のと.NET9から両方とも、.NET10へ特に問題なくバージョンアップできました。マイクロソフトは色々酷いことをするけれども、.NETとC#後方互換性だけはいつもながらちゃんとやってくれます。

最近のマイクロソフトは本当にバグだらけのものを平気でリリースしてくることが増えたので、ちょっと心配していたんですが、さすがに自分たちも使う.NET/C#はちゃんとやってくれたようです。(WinAppSDKとWinUI3の酷さはどうにもならない状態だけれども)

ということで、全ての更新が小一時間で全部問題なく終わってしまいました。ちょっと拍子抜け。

自分の場合は、今のところ、.NET10にしたからというだけですぐにリリースするほどのメリットが見当たらないので、特に手元のアプリの新規リリースは無しです。C#14は便利な機能があるからこれから使っていきますけれど、直接的にエンドユーザーに対するメリットが今あるかというと・・・。WPFだとFluentUI風のテーマが.NET10でやっと完成してきたところでしょうか。自分はもう既にWPFは全てWinUI3とクロスプラットフォームのAvaloniaUIにポート済みなのでもうこの先もWPFアプリには触る予定もないしリリースすることもないでしょう。

やっと悪名高いKEN_ALL.CSVが不要になる?デジタル庁の町字データと郵便番号の紐づけへ

日本における住所データの状況は未開のジャングルか、というレベルの代物でして・・・

例えば、アプリケーション内で郵便番号から住所を引いたり、その逆をしようとすると日本郵便が提供している住所CSVデータ「KEN_ALL.CSV」(なぜか大文字のファイル名と拡張子・・前世紀のDOS時代の代物か?みたいな)を使うことになると思うのですが、これがまた滅茶苦茶なデータで、もうKEN_ALL.CSVという単語を聞くだけでひきつけを起こしそうになるほど酷いのが有名です。

日本郵便の「KEN_ALL.CSV」といえば、その汎用性の低い仕様ゆえ、かねてよりエンジニアの間では悪評が噴出していており、使いやすい形式に変換するための民間サービスまで登場していた。総務省はデジタル庁とも協議のうえでこれらに改善を施す旨公表していたが、改善された新たなCSVデータが6月30日に公開されたことが明らかになった。具体的には、半角カナだった読み仮名が全角カナへと変更されたほか、38文字を超えると分割されていたレコードを1つに統合。さらに文字コードはShift-JISからUTF-8へと変更されるなど、大幅な改善が行われている。まだ別の課題は残っているものの、従来では考えられなかった大きな進歩だ。
2023年7月6日

不評だった「KEN_ALL.CSV」大幅改善で話題に。代替となる住所CSVデータを日本郵便が公開、カナ全角化・レコード統合・UTF-8導入など【やじうまWatch】 - INTERNET Watch

これ、2023年の記事ですが、記事中にもあるように、これでもまだまだ問題が残っていて使い物にならないので、民間の方が独自に「郵便番号データ(加工済バージョン)」として、データを修正したもの「x-ken-all.csv」を公開してくれてたりします。

・町域名が「以下に掲載がない場合」の場合は、ブランク(空文字)に置換

・町域名が「○○市(または町・村)の次に番地がくる場合」の場合は、ブランク(空文字)に置換

・町域名が「○○市(または町・村)一円」の場合は、ブランク(空文字)に置換

・町域名で、丸括弧で囲まれている部分を除去
※町域名の文字数が多いために複数行に分割されてしまっている場合は、1行にマージしておいてから丸括弧を除去します。
※括弧内の文字が「地名」や「ビルの階」など、住所として使えそうなものは町域名の末尾に追加します。
※括弧内に地名が複数列挙されている場合は複数行に分割します。

郵便番号データのダウンロード - zipcloud

ありがたや。

総務省はデジタル庁とも協議のうえ」でこれなんですから、一体全体、総務省もデジタル庁も何を考えてるのかって感じですが、ぶっちゃけ日本全体がそんなレベルなんで、イチイチ嘆いていてもしょうがありません(投げやり)。

そんな未開な状況の日本ですが、デジタル庁において「郵便番号と町字データの紐づけを行う」ということになり、やっとまともな状況になろうとしつつあります。

「令和7年度中にデジタル庁において、郵便番号と町字データの紐づけを行う」

公的基礎情報データベース整備改善計画 (PDF注意)」 15P

町字データは、いわゆる「市区町村マスター」みたいなのにつかわれるデータです。これに郵便番号が付加されると。今でも町字データに郵便番号のカラムは存在しているけど、一部レコードにしか実際の郵便番号データは入ってなくて全然不完全な状態でKEN_ALLの代わりとしては使い物にはなりませんでした。

因みに、このデジタル庁の「全国 町字データ」のCSV「mt_town_all.csv」を、扱いやすいSQLiteデータベース形式に変換するコンバーターGUIアプリケーションを丸一日かけてチョロッとつくりました。ついでに、都道府県の「mt_pref_all.csv」と、前述の「x-ken-all.csv」もSQLite化できるようにしてあります。

CSVパースしてSQLiteデータベースにぶっこむだけなんで、しごく単純、簡単なアプリです(とはいっても処理はちゃんと非同期&マルチスレッド化している)。独自に何か追加したり処理を挟みたかったら適当にソース弄ってください。GitHubオープンソースで公開しています。

github.com

単独のGUIアプリにしたのは、こういう住所関連のデータは適時更新されるので、一回だけじゃなく何度も変換しなければならないため、ユーザー環境で誰でもいつでも簡単にデータ更新を出来るようにしておきたかったのです。

デジタル庁って出来てからまるで役に立つことしてないですけれど、少なくとも「KEN_ALL.CSV」が不要になる程度のデータをメンテして公開してくれるのであれば「デジタル庁も少しは仕事しているな」と言えるようになりますね。

どうせなら、「路線と駅」のマスタデータも公開&メンテしてくれるといいんですけれどね。

ただし・・・、「アドレス・ベース・レジストリ ダウンロードサイト」 も滅茶苦茶で一体全体、誰の為に作ってるのかまったくもって不明。さらに、CSVのカラム順の仕様を確認しようとしたら、マイクロソフト表計算用のエクセル形式のファイルをダウンロードさせられたりして、本気でアレじゃないかとも思いましたが・・・。デジタル庁とかいう名前が恥ずかしいぐらいであります。

追記:mt_town_all.csvの「丁目」のカラムのデータ、「1丁目」と「一丁目」という表記ゆれが存在するのだけれども、大丈夫なんだろうか・・・いや良くないと思うのだけれども。

 

新アプリ:ImageViewerX(pre1)の公開

ImageViewerX

2018年ごろ、ObjectPascal/FreePascal/Lazarusという環境でチョロッと作った「Simple ImageViewer」というのがありまして・・・。

開発の経緯というかストーリー的なことは下記のページで書いたのですが、以外なことに好評をいただき、GitHubで数か国語への翻訳のプルリクエストも貰ったりしたりもします。

torum.hatenablog.com

ObjectPascal/Lazarusは今でも大好き(ネィテイブのAPIをシームレスに叩けたり)なのですが、ただ・・・いかんせんGTK2のままなのでLinux向けが辛い(今はGTK4/Adwaita時代)。Windows向けもWinAPI直叩きのWindow生成は如何せん表現力が弱い(Fluent UIの時代)。

ということで、泣く泣くAvaloniaUIで作り直すことにしたのであります。AvaloniaUIもクロスプラットフォームのアプリを開発出来て、既にMPDCtrlXというアプリをWPFから移植もしていて、大のお気に入りになっています。(Lazarus 頑張れ!)

これも大体二週間ほどで基本機能が仕上がり、一通り問題なく動作するようになったので、一旦ここで、プレリリース版として公開することにしました。

github.com

問題は既存の「Simple ImageViewer」との関係なのですが、悩んだ結果、「Simple ImageViewer」はそのまま継続して、ImageViewerXは別アプリとして開発していこうと思っています。

ImageViewerXは、現状Windows版とLinuxUbuntu含むDebian系)版のみとなっています。何度か書いていますが、Linuxはパッケージ種類がありすぎて大変なので・・・。

因みにLinux版はちょっとAvaloniaUI由来の制約があって、タイトルバーがカスタマイズできない(Wayland対応予定らしいのでその頃には)のと、背景のボカシ(blur)効果が出来ないのと、ファイルのドラッグ&ドロップが出来ません(現在PRがマージ中なのでそのうち対応されると思われ)。

 

以上、そんな状況であります。

 

MPDCtrl v4 とMPDCtrlX v1 のリリース

ということで、特段不具合などはなさそうなので、RC(リリース候補)として公開してきたMPDCtrl v4MPDCtrlXを正式にリリースしました。

MPDCtrl v4

MPDCtrl v4の方は既にマイクロソフトのストアに公開済みです。GitHubリリースページに各種ファイルも置いておきましたので、Exe直で、という方はそちらをぜひ。

追記:今現在(WinAppSDK v1.8.2)、WinAppSDKのパッケージ生成がバグりまくってて、[1],[2],[3]、MPDCtrlもその影響で現時点では日本語環境にもかかわらず英語リソースしか表示されません・・・。GitHubでイシュー登録されまくってるのに、メンテナー(マイクロソフト)は全スルー。笑えるのは、マイクロソフト自身の別開発チームからも「うちのチームもこの問題に引っ掛かってるんだけど、直る予定ある?」みたいなコメントが付いていること。笑えないのはそれがもう一か月以上経っていることと、WinAppSDKチームが完全にスルーしていて無反応なこと・・・。マイクロソフトというか、WinUI3/WinAppSDKはもうダメかも知れんですね。

クロスプラットフォーム版のMPDCtrlX v1も、GitHubリリースページにとりあえずWindows向けのExe(Zip)と、Debian系(Ubuntu含む)用の.debパッケージを用意しています。

MPDCtrlX

Linux向けのパッケージはDebian生まれの.deb形式、RedHat生まれの.rpm 、ArchのPacmanやら、最近になってUbuntuのSnap、Flatpak、AppImageと色々とあって、なかなかすべての形式を用意するのはテストするのも含めて大変すぎるので今はちょっと勘弁してほしいところです。

Mac版ですが、自分はもはやiMaciPadMacBookも全て処分して脱Appleに成功したのでMacでの動作テストもパッケージ生成もできません。

数日前に、AvaloniaがParcelというパッケージ生成を支援するクロスプラットフォームのツールを公開したので、いずれ楽になるかもです。現状、.debと.rpmのみで、将来的にAppImageにも対応するそうです。これ試したのですが、ちょっといくつか不具合を見つけてしまって今回は使えませんでした。(もちろんバグ報告済み)

 

 

MPDCtrl v4.0.0-RC1のリリース

MPDCtrl v4


MPDCtrl
ですが、とりあえず一段落したところでバージョン4のRC(リリース候補)として公開しました

WPFで作ってかれこれだいぶ経ち、この際、WinUI3でモダナイズをしようとUIを一から作り直し、アルバムベースで一覧できるような新規機能も盛りだくさん追加しました。

まだまだ追加したい機能はたくさんあるのですが、キリがないので、いったん一通り動くようになったのでRC版として公開しました。

因みに、クロスプラットフォーム版のMPDCtrlXの方も、v1.0.0-rc8を公開していますLinux等で動かしてみたい方は是非お試しください。

 

 

Linux Desktopの落とし穴(Wayland)

WindowsMacOSでのデスクトップ開発でも色々とありますが、Linuxにおけるデスクトップのハチャメチャ具合はそれらとは比較にもなりません。

Windowsでは、Windows95Windows NT 3.1)の古来からあるWinAPIがあり、Windows8.0でWinRT(UWP)が登場し全画面アプリ化して迷走した挙句、速攻で無かったことになってWindows10でProject reunionとか言ってWinAPIとWinRTをマッシュアップしたWinUI3(WinAppSDK)が登場(Long story short)しました。そんなこんなで、Windowsでは現状さまざまなUIが混在してしまっているという状況です。

ただ、Windowsの良いところは、後方互換性に最大限の努力をしているという点で、Windows98時代に作ったアプリが普通に今でもWindows11でそのまま動きます。(自分が大昔に作ったWin32API/Delphi製のアプリの中では、IEの機能を利用したアプリだけ動かない・・もうIE無いから当然ですが)

MacOSは、記憶にある中では、CPUアーキテクチャ変えすぎで、PowerPCIntel、ArmベースのApple Silicon と来て、以前のアプリも全く動かなくなる。しかも、今度は32ビットから64ビットへの移行で32ビットアプリは動かなくなった・・・みたいな。Windowsでは互換レーヤー(WOW64)が優れているので既存の32ビットアプリもそのまま普通に動いているのに・・。Appleは何かあるとそれ以前のアプリを徹底的に切り捨てます。あと、Carbon からCocoaみたいなのもあったな。MacOSではアプリの統一感があるのは良いけれど、Xcodeの利用を強制される・・みたいな欠点があります。あとMacでは諸々の「自由」が無いっていうのもありますね。

Linuxでは、昔からディストリビューションごとにGlibcとかバージョン違いで動かない、とか色々あってアプリはソースコードをtarボールで頒布し自らコンパイルが普通みたいな時代もあったけど、流石にそれはどうかというのが現代ではあります・・・が、

未だに、「Win32 Is The Only Stable ABI on Linux」とか有名な話しで、界隈で冗談交じりに本気で言われるのがLinuxであります。リーナス御大も自ら認めてる

Linuxでは、それ以外にも、いわゆる「デスクトップ環境」が多様すぎ。代表的なので、GnomeKDExfceとか。それぞれで、全然違います。GnomeではGTKというウィジェットを使うしKDEではQt。依存ライブラリさえインストールすればそれぞれ異なる環境でも動きますが機能だけでなくLook&Feelが全然違います。どれを選択するかってのはアプリ開発者にとっては究極の選択。(最近ではFlutterやAvaloniaUIみたいにガワだけ使って独自UIをSkiaで描画するって手もありますが、固有機能とLook&Feelが・・)

さらにインストーラーのパッケージ方法。Debian生まれの.deb形式、RedHat生まれの.rpm 、ArchのPacmanなどなど・・。

最近になって、WindowsのAPPXみたいなアプリを一種のサンドボックス内で動作するようにする新手のインストールパッケージが登場していますが、これもまた、UbuntuのSnap、Flatpak、AppImageとバラバラ。めんどくさすぎ。

さらに最近では、古くなったX11の代わりにWaylandにするという動きがあって、さらに混沌。

今まではGnomeであろうがKDEであろうが、アプリはX11向けに開発していればよかったのですが、WaylandではX11がやっていたことを放棄して、「プロトコルしかやりません」と言って「個別にコンポジターでやって」と丸投げした挙句、「デスクトップ環境固有の問題?、VRとかあるし~」とX11では当然出来ていたレベルの機能を導入することを回避し続けてユーザー寄りとは到底言えない状況。(デスクトップ上のポジションとか、ウィンドウへのアイコンの個別設定できない等々)

具体的にはこんな感じ。

Simon Ser
@emersion
Nov 26, 2021

Wayland will not blindly add protocol features just because X11 has them. X11 has many flaws, and allowing clients to pick their global position is one of the flaws.

https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/72

これ、Simon Serって部外者でなくて今はFreeDesktop Board of Directorsの一員になってる中の人。Linuxのデスクトップ環境の多様性は大いに支持はするけれども、このWayland周りの人達の傲慢さにはイラっとしますな。

何しろ、Waylandは2008年に公開されて2024年に主要ディストリビューションX11から切り替えてるというのに、17年以上やってて、いまだにデスクトップ上の特定の場所にウィンドウを配置することさえできないとかいう、笑えないぐらい酷い状況。

さすがに2025年にもなって「やっぱり必要だったわ」、みたいな話になっている(xdg_toplevel_tag_v1とかも出てきた)けども、おまいらアプリも開発したことのない象牙の塔かなんかに住んでるのか?ってぐらい頭でっかちで現実を全くわかってない人たちが今まで作っていた模様

ちょっとググってみて適当に出てきた「Is Wayland Ever Going To Be "Ready"?」っていうYouTube動画のコメント欄から適当に上位コメントを抜き出してみたけれども、どれも「まさにソレ!」って感じでみんな同じように感じてるようですね。

The problem with Wayland is that it was being developed for many years within a bubble. Some group of users were making their toy protocol and nobody else cared. Now that the protocol is no longer treated as a toy, the base assumptions that were made by that developer bubble turned out to be wrong, and now it takes years to unwind those mistakes.

Waylandの問題点は、長年にわたりバブルの中(閉鎖的な環境)で開発されてきたこと。一部のユーザーグループが自分たちのおもちゃのプロトコルを作っていて、他の誰も気にしていなかった。がしかし、このプロトコルがおもちゃとして扱われなくなった今、その開発者達が基にしてきた基本的な前提が間違っていたことが判明し、その間違いを解きほぐすのに何年もかかっているって状況。

Yap!

Actually my problem with wayland is more like "second system effect" where instead of thinking "what would be good architecture" they more often think "what was bad in previous system so we avoid it at all costs" - and not paying attention to what they really do!

自分にとってのWaylandの問題は、むしろ「セカンドシステム効果」のようなもので、彼らは「何が良いアーキテクチャか」と考える代わりに、「前のシステムで何が悪かったか、だからそれを何としても避けよう」と考えることが多く、自分たちが実際のところ何をしているのか気にもかけてないっていう点。

Yap!

Honestly, Wayland also need to fix their main issue of the "I refuse to fix/implement because you dumb"  mentality

正直に言って、Waylandは「お前が馬鹿だから、修正/実装してやらない」という、彼らの根本的な考え方も直す必要があるね。

Yap!

Looks like the main developers of Wayland suffer a lot from "Now we have another chance to do it right. And we must do it perfectly right. Your proposal doesn't seem perfectly right, so let's put it aside until we find the perfect solution maybe 5 years later (no matter how your users need it now)".

Waylandの主要な開発者たちは、「今度こそ正しくやるチャンスだ。完璧に正しくやらなければならない。あなたの提案は完璧には正しくないように見えるから、いったん保留にしよう、完璧な解決策が見つかるまで、おそらく5年後ぐらいかな(ユーザーが今どれだけ必要としていても関係なく)」という考えに、かなりやられてるね。

Yap!

実際、Ubuntuで今現在、ChromeにしろFireFoxにしろブラウザを起動すると、毎回、毎回変なところで起動して、手動で位置を調整しないといけない。Waylandアプリすべてそう。XWayland(Waylandが裏でX11動かしてる)で動かしてるアプリはちゃんと以前の位置を覚えて起動する。

コンポジターはといえば、KDEGnomeとかそれぞれがそれぞれに作って(GnomeのMutterとか)はいるけれども、Waylandエクステンションの対応状況はバラバラという最悪の状況、というか本体プロトコルの実装状況さえもバラバラ。しかもWaylandが汎用向き過ぎて(というか意図的に最小限にしているので)、まともな機能は全部拡張の仕様を使うことになるわけだけれども拡張を実装するのはコンポジター次第・・みたいな。で、portalでやり取りするようにして、とか、全然シンプルじゃなくなってないか?みたいな。

あと、CSDとSSDGnomeSSD拒否ってる問題もあるし(Windowsみたいにアプリ開発者が上書き可にすればよいのに)。

実際、対応を謳っていても、「Chromiumは『text-input-v1』しかサポートしておらず、Mutterでは『text-input-v3』のみに対応で『text-input-v1』には非対応」みたいな状況も起きていて実際に問題になってたり。

なので、たとえアプリ開発者がX11向けからWayland対応に作り直しても、今度はGnomeのコンポジターとKDEのコンポジターで動くかどうかは話しは別、みたいなことになって、それぞれで動作テストと個別処理が必要になってくるとかいう悪夢・・・

溜息しかでませんわ。

まぁそれでも自分が毎日使うアプリは「ウェブアプリ」のなんちゃってアプリよりも、ちゃんとしたネイティブアプリを選びますけどね。作る場合は最悪です。AvaloniaUIが将来的にメジャーアップデートで、Wayland(の諸々)対応と各種パッケージ生成を自動でやってくれる、という話しなんで大いに期待しています。

 

 

WinUI3 NativeAOTの落とし穴

ここのところ、自前のWPFアプリを盛大にWinUI3へポーティングしているところなのですが、途中でNativeAOTで爆速起動を試したところ、落とし穴にはまって数日彷徨っていました。

ただでさえWinUI3というのは「くせ者(未成熟で機能不足でなおかつバグだらけ、WinAPIとWinRTと諸々をCOMでマッシュアップしてOSから切り離すという抽象化の上に抽象化を重ねた複雑怪奇なフランケンシュタインの成果物)」なんですが、そこにさらにAOTというチャレンジングなことをしたいのは単純にやってみたかったから、です、はい。

まぁ今の日本でWinUI3どころかAOTをやっているところなんて全体の1%未満の気がしますが・・ほとんどが未だに化石のような.NET Framework 4.8でWindowsFormsしか出来ないレベルの企業ばっかりなのか・・?いや、OSネイティブのLook&Feelはユーザビリティに直結しますし、Windows11のFluent対応(WinUI3)は当然ですよね。(最新の.NETを使って新しい言語機能による生産性向上やランタイムの最適化による諸々の利点は言うまでもなく)

というわけで、WinUI3でAOTをやろうとする方たちが同じようなところでハマって時間を無駄にしないようにここに晒しておこうかと思います。

因みに、WinUI3だけではなく、AvaloniaUIへもポーティングしたのですが、AvaloniaUIでのNativeAOTは一切問題も起きてなく、WindowsだけでなくてLinux上でもAOTしたのが爆速起動で動いています。AvaloniaUIはイイ!

で、WinUI3のAOTでどんなところでハマったかというと、AOTのコンパイル自体は普通にエラーもなく成功して起動もするのだけど、使ってみると「アレ、ここ動いてない」みたいなところです。

前提として、NativeAOTのやり方自体はドキュメンテーション含めて出回っているので割愛しますが、VSのPublish(発行)はお勧めしません(また別のハマりどころが多い)。素直に、コマンドラインで、

dotnet publish -c Release -r win-x64 -p:PublishAot=true -p:PublishSingleFile=false --self-contained true

とやりましょう。

さて、具体的なコードですが、

if (AppWindow.Presenter is OverlappedPresenter presenter)

みたいなコードですね。上記のコード、(現状の.NET9/WinAppSDK1.8.0/CsWinRT 2.2.0での)NativeAOTではfalseを返します。非AOTの実行ファイルでは普通(正常)にtrueを返します。

ここが原因というのに辿りつくのにすらしばらくかかりました。何しろデバッグ環境ではなく、AOTのコンパイル済みリリース向けバイナリですから既存のデバッグツールが使えなくてブレークポイントも何もありゃしません。なおかつ、何もエラーすら起きてないので。

結論からいうとAOTで有効化されるTrimmingがトリムっちゃってこうなってるみたいですが知らんがなって話であります。

じゃどうすのかって言うと、ググっても出てこないです。GitHubのissuesを血眼で探せば出てきます。なんでバグ解消してないのにクローズしてんのや、って気もしますが。

github.com

 

github.com

他でも、

if (listView.ItemsPanelRoot is not ItemsWrapGrid itemsPanel)

もダメで、 ItemsWrapGrid の代わりに、Panelと誤判定されてました。

これも、似たような件がGitHubのissueにありました。

github.com

前述のと似ていて、どうもインスタンスの型比較で派生型を見分けられない感じ?

AOT(trimming)の怖いところはこういう本当に何でもなさそうなところでエラーも起きずにシレっと変な挙動をするところですね。

WinUI3での開発においては、WinUI3のバグに出会うことが多いので、GitHubのIssuesをバイブルのように日頃からチェックする必要があります。しかも、CsWinRT、WindowsAppSDK、microsoft-ui-xamlそれぞれ分散しているのが・・・最悪であります。

https://github.com/microsoft/CsWinRT

https://github.com/microsoft/WindowsAppSDK

https://github.com/microsoft/microsoft-ui-xaml

WinUI3はWindowsAppSDKの一部なのだけどレポジトリはmicrosoft-ui-xamlとして独立してます。なので、まずmicrosoft-ui-xamlで調べて、それでもなかったら他の二つをあたる、というのが良いです。しかもOpenとCloseイシューそれぞれ・・・。

それにしても、microsoft-ui-xamlのイシューはヤバいです。色々放置され過ぎ。

因みに、AIなんてあてになりません。AIはそもそもウェブに情報がさんざん転がっている中から適当に文章引っ張って来て合成しているだけなんで、こういう新しめの技術で情報が少ないケースでは無能です。そこらにさんざんあるような情報じゃなければAIに聞いても答えは出てきません。逆に言うと、AIでコード作成させて生産性Upした、って言っている人たちって、今まで大したことやってなかったというか、「ググってコピペ」程度の仕事しかしていなかったんじゃないかと・・・。何しろ、AIはそもそも、基本的な事でもWPFとMAUIとUWPとAvaloniaとWinUIにおけるXAMLの違いすら分かってないので、WinUI3って散々指定しているのに適当にUWPのコード出してきたりします。出してきても、ドキュメンテーションにあるサンプルコード程度ので、それもそもそもコンパイルすらしないやつだったり。イラっとしかしませんです。自分で書いた方が楽しいし後々楽です。