世界を動かす技術を、日本語で。

マイクロソフトがWindows 11のUIフレームワークをオープンソース化する

概要

Microsoftは WinUIのオープンソース化 に向けて段階的な計画を発表。 Windows 11のUIフレームワークである WinUI は複雑な依存関係のため、即時公開は困難。 今後6か月間で 透明性向上・コミュニティ貢献強化 を進める方針。 GitHub上での開発体制移行を 4段階 で実施予定。 開発者は フィードバックや課題提出 で貢献可能。

MicrosoftのWinUIオープンソース化計画

  • Microsoft は近年、 オープンソース活動 に積極的な姿勢を強化
  • 依然として多くのコードが クローズドソース のまま
  • WinUI (Windows 11のUIフレームワーク)もその一つであり、オープンソース化の要望が多い現状
  • WinUI のオープンソース化は、システムの複雑性やOS内部の専有部分との結合により、即時切り替えが困難
  • 公開可能な部分と公開できない部分の 切り分け作業 が必要
  • セキュリティ・安定性・既存製品サポートなど、他の優先事項も並行対応

オープンソース化への4段階プロセス

  • フェーズ1:ミラー頻度の増加
    • WASDK 1.8リリース後、 社内コミットのGitHubミラー頻度を増加
    • 透明性向上と進捗共有の強化
  • フェーズ2:外部開発者のローカルビルド対応
    • 外部開発者が リポジトリをクローンしローカルビルド 可能に
    • セットアップや依存関係に関する ドキュメント提供
  • フェーズ3:外部貢献・テスト実行
    • 外部コントリビューターが Pull Request提出やローカルテスト実行 に対応
    • 非公開依存関係の解消、テストインフラの一般公開作業
  • フェーズ4:GitHub中心の開発体制へ移行
    • GitHub が開発・課題管理・コミュニティ交流の中心となる
    • 社内ミラー運用の廃止

今後の展望と開発者への呼びかけ

  • WinUI のオープン化は 段階的・計画的なプロセス
  • 進捗は GitHub上の専用ボード で公開・追跡可能
  • 開発者は以下の形で貢献可能
    • 明確で分かりやすい フィードバック提出
    • 課題(Issue)登録
    • 既存フィードバックへの 投票(Upvote)

まとめ

  • WinUI の完全なオープンソース化は 長期的視点 で進行中
  • Microsoft は段階的な透明化とコミュニティ参加拡大を重視
  • 開発者の 積極的な意見・協力 がプロジェクト推進の鍵

Hackerたちの意見

これがネイティブの縦型タスクバーにつながるといいな。W11ではずっと欠けてた機能だし、実際にはWindows 98からあるタスクバーの特徴なんだよね。サードパーティのツールが再実装しようとしたけど、結局はW11の横型タスクバーを無理やり縦にしたり(例えばWindhawk)、古いW10のタスクバーのコードを復元したり(例えばStartAllBack)してるだけなんだよね。

UIフレームワークをオープンソースにすることで、タスクバーの変更につながるの?この分野でのサードパーティの貢献には、タスクバーをオープンソースにしないとダメだと思う。

細かいことを言うと、実際にはWindows 95だね。縦型タスクバーは最初のバージョンから選べるオプションだったんだ。

タスクバーはexplorer.exeの機能なんだよね。今話題になってるのはexplorerがオープンソースになるって話じゃないよ。

Windowsチームって、ネイティブのWin11デスクトップUIにWinUI使ってるのかな? ;)

最後に評価したとき、WinUI3は開発者にとって最悪の体験だった。デバッグするためにはアプリケーションをシステムにインストールしなきゃいけなくて、無駄なスタートメニューのエントリーが大量にできちゃうし、レジストリエントリーとかも増えるし。あと、サンプルプログラムがボタンをクリックするとクラッシュするのも問題だった。Windows用のアプリを作るために、シンプルに使えるものが欲しいのに、今のところはまだWTLを使ってWin32でやってる。

アプリケーションをシステムにインストールしなきゃデバッグできない それは「パッケージ化された」アプリケーションを選んだからだと思うよ。こういうアプリは、機能が正しく扱われるためにインストールが必要なんだ。公平に言うと、macOSも同じ問題があるけど、Launchpadには表示されないものの、Spotlightでインデックスされることはあるよね。

WindowsにはどれだけのUIフレームワークがあるのか、もう数えきれないよ。完全にカオスでメチャクチャに見える。オープンソースにすることで何を期待してるのか、本当に疑問だよ。オープンであるふりをするため?それともWindowsをターゲットにする開発者にとって実際に何かメリットがあるの?

たぶん新しくてキラキラしたもの(今はAI付き!)を始めたくて、古いものをあまりユーザーの反発を招かずに捨てたいんじゃないかな(数十人の反発だけどね) ;)

WinUIはUWPの進化版で、UWPはWinRTの進化版だよ。WinUIはもう何年も前からあるし。MAUIは競合製品ってわけじゃなくて、クロスプラットフォームのUI開発を可能にするためのものだね。意図が違う。WinUIは実際、悪くない技術だよ。何度かのバージョンアップを経て、今はWinUI 3になってるし。基本的には同意だけど、全てのOSをそれで再構築するまでは、管理ツールやコントロールも含めて、長期的には信頼できないな。

MFCで行こうぜ!今は機能凍結中だけど、あと20年は持つと思うよ。

Windowsには3つのUIフレームワークがあって、実際に使われているのは2つだけ。その他の「数え切れない」フレームワークは、Win32/Native(WinAPI、MFC、WinRT、WinUI3など)とWPF/Managed(Avalon、WinUI2-3など)のどちらかのバリエーションなんだ。WinUI3はそのギャップを埋めるために存在している。

もしかしたら、人々がレンダリングコードの一部を流用して、今あるライブラリよりも良いクラスライブラリにコントロールを拡張できるかもしれないね。現代のレンダリングAPIを使ったWinFormsみたいな感じで。確かにそういうコントロールは作れるけど、結局すごく冗長になって、C#のXAMLみたいに見えちゃうんだよね。

最初はこれらのコメントがサティアだと思ってたよ!略語やバージョン、フレームワークの長ったらしくて混乱した説明とか:

WinUIはUWPの進化で、UWPはWinRTの進化 WinUI 3 WinUI 3はまだWinRTをサポートしてる XAML Shell UI Avalon WPF WPF = WinUI 1.0 Project Reunion UWP Win2D ATL/MFC MFCで行こうぜ wxWidgetsはちょっとMFCっぽいし それともQtで行くか MFC/Win32 + XAML Islands

マイクロソフトの目標に沿った調整 > リソースについて慎重に考えています。この取り組みは、セキュリティやプラットフォームの安定性、既存製品のサポートといった他の重要な責任と並行して行われています。現在の焦点は、貢献者に価値を提供し、透明性を高めるための基盤作りにあります。この作業は、長期的なサポートと影響を確保するために、マイクロソフトのビジネスの優先事項に合わせています。彼らの言葉には善意を感じないな。リソースを引き上げて、フレームワークを一般に投げ捨てて、情熱的な負け犬たちが貢献することを期待してるだけだよ。

これは「サポートは保証しないし、重要なセキュリティバグ以外の更新も計画してない、あとは自分でなんとかしてね」っていう企業の言葉だね。

Apache Windowsはいつ?もっと真面目に言うと、デスクトップUIツールキットなんて、今やほとんど意味ないよ、特にWindowsのツールキットは。Windowsは3〜4種類の全然違う見た目が混ざって公式の配布に含まれてるし。逆に、セキュリティと安定性は、医療、政府、金融機関のノートパソコンやデスクトップ、そして役員のデバイスにとって、Windowsが依存している重要な要素だよ。

情熱的な負け犬たちが貢献することを期待してるだけだ。彼らの犠牲者に仕事を押し付けてるんだよ。もしかしたら、また使えるようにしてくれるかもね。

そうだね、WinUIは本当にひどいことになってる。

passionate losers これはちょっと意地悪すぎるよ。君の情熱プロジェクトは、世界の大多数には全く考慮されてないかもしれないけど、それが君を負け犬にするわけじゃない。Win11のUIには全く興味がないし、これはMSのためのコスト削減であって、善意のアプローチじゃないっていうシニカルな見方にも賛成だけど、それに取り組んで続けようとしている人たちは尊敬してるよ。

企業がUIフレームワークをリリースする理由はだいたい分かる。過去にAtlassianやAWSのフレームワークを使ってウェブアプリを作ろうか真剣に考えたこともあるし、JiraやAWSに十分なクオリティなら、私のB2B SaaSアプリにも合うだろうと思ったから。でも、個人的にはこのフレームワークを使おうとする理由が分からないな。Windowsアプリを作っていて、一貫した見た目や「ネイティブ」な感じを求めるなら分かるけど、もっと良い選択肢があるんじゃない?

WindowsのネイティブUI技術の未来が心配だな。伝統的に、少なくともOSの開発者は自分たちの製品を使って、パフォーマンスが良くて視覚的にも一貫したネイティブアプリを実装しようと努力してきた。Windows 11はその逆をやってる感じがする。Windows 10以降、少なくとも機能的なネイティブのメールとカレンダーアプリがあったし(8にもあったかもしれないけど、使ったことない)。Windows 11は最初にそれらのアプリを搭載してたけど、後のアップデートで削除されて、起動に数秒かかるラグいWebViewラッパーに置き換えられた。

MSOをDartやWASMみたいなもので書き直して、ネイティブツールキットから完全に独立させる動きがあっても驚かないな。そうすれば、Excelの機能を全部再現して、O365のプレミアムプランとしてどこでも使えるようにできる。そしたら、WindowsもChromeOSみたいになれるかも。ネイティブUIが本当に必要なのはロック画面やログイン画面だけだし、今のUIツールキットのほんの一部で十分だよ。

WinUIのコミュニティコールから見ると、新しい社員は全然Windowsの経験がないし、管理層もちゃんとしたスキルを教えようとしないみたい。Windows開発者なら誰でも分かるような質問が多すぎて、答えられなかったり、なんでその質問が出たのか不思議そうな顔をしてることが多い。それが、今Windows 11にWebview2のインスタンスがあちこちにある理由でもあるんだ。

Windows 11のUIで気になるのは、新しいアプリや機能を押し出すことに集中しすぎて、古いツールを追いつかせることにあまり焦点を当てていないことだね。例えば、コントロールパネルはWindows 7の時と同じものをリスキンしただけだし、OSの中には2000年やXPの頃からあるツールが埋もれているはず。Windows 11はプレス写真を見る限りは素晴らしいけど、実際に使ってみて深く掘り下げると、ホーマー・シンプソンの背中にクリップがついているミームみたいな感じに気づくよ。

マイクロソフト内の権力闘争や厳しいオフィスの政治を理解していれば、分かると思うよ。組織同士が互いに倒そうとして戦ってるんだ。

Windows開発コミュニティでは、WinUIに興味を持っている人はほとんどいないよ。WinRT/UWPの夢に投資した人たちだけが、今は死んだ技術に縛られている。Windows 8が出てから、焼けた橋が多すぎる。これって、Microsoftが壊れた問題を直す気がないっていう確認みたいなもんで、コミュニティがまだ何か気にしてくれることを期待してるんだろうね。

これだね。それに、DevExpressやProgress TelerikはWinUIコントロールに全く投資してないし、これは彼らがWinUIに興味を持ってないってことの表れだよ。今のところ、Line of Businessアプリケーションに使えるフレームワークはWinFormsとWPFだけだね。WinUI3のアプリを実際に見たことがないよ。

正直、今の時点で誰が真剣にMicrosoftのUIフレームワークを使うんだろう?彼らは新しくてキラキラしたフレームワークに気を取られて、以前のUIフレームワークを100%放置してるし。基本機能が欠けた壊れたフレームワークを使う理由がないよ。オープンソースのクロスプラットフォームフレームワークがちゃんとメンテナンスされてて、必要な機能が全部揃ってるのに。結局、これはまた忘れ去られて軽蔑されるUWPになるだけだね。

ここでコメントを読んでるけど、ビジュアルベーシックのハローワールド以外に本格的なWindowsアプリを作ったことがない者として、Microsoftはこれを作るのをやめればいいのに。もうGitHubとvscodeを持ってるんだから、Electron/TypeScriptが今のWindows UIフレームワークだって認めればいいのに。

もうこれ以上ブラウザを同時に開きたくないから。

またTeamsが遅くなってるから。

MicrosoftがWindows全体にどれだけコミットし続けるのか、ちょっと気になるな。Windowsは会社の10%未満だし、ユーザーはスマホやタブレット、Chromebook(どれもOfficeが動く)に移行してるし、Linux上の.NETもあるから、Windowsサーバーの意味が薄れてきてるよ。市場は縮小してるね。

フォーチュン500企業はまだデスクトップWindowsを使ってるんじゃないかな?(知らないけど、ただの推測だよ)。

もうWindowsのことじゃないんだよね。でも、Windowsはほとんどの人がOfficeを使う場所だから、Exchangeや「Power」関連のバックエンドの影響も含めて、実際にはマイクロソフトの収益の10%以上を占めてる。直接的ではないけどね。ただ、彼らはもうプラットフォームにはあまり興味を持ってないと思う。実際、AI以外のことにはどんどん興味が薄れてるし、Azureのことも。

マイクロソフトがWPFの開発を続けてくれたらいいなって思う。何年もいろんなプロジェクトで使ってきたし、学習曲線はあるけど、今は楽しんで使ってる。XAMLやデータバインディング、ViewModel…全部好きなんだ。でも、WPFには完璧にするためにいくつか改善が必要だと思う。マイクロソフトの新しいフレームワークやオープンソースのやつ(AvaloniaやUno)を試してみたけど、サンプルプロジェクトが自分のマシンでビルドすらできなかったり、開発フローに慣れなかったりして、結局知ってるものに戻っちゃった。WPFを改善するための大きなアイデアは、データバインディングシステムを.NETのコンパイル時コード生成機能を使って再構築すること。これで多くの問題が解決できると思う。例えば、プロジェクトはアプリケーションのAOTビルドができるようになるし(今はインストールされた.NETランタイムに依存するか、たくさんの.NETライブラリを含めて「公開」しなきゃいけないから、最終ファイルサイズが膨れちゃう)、コード生成でパフォーマンスもかなり向上すると思うし、クロスプラットフォーム用にコンパイルする可能性も開けるし、XAMLバインディングの型安全性も導入できる(あいまいなランタイムバインディングエラーが出る代わりに)、クラスのスキャフォールディングを減らすこともできる。自分でオープンソースプロジェクトを始めようかとも思ったけど、結構大変そうで、今やってるプロジェクトの手助けをするためのプロジェクトを始めることになるから、時間が全然足りないんだよね…。

君の二段落目はAvaloniaを説明してるみたいだね。AvaloniaにはAOTやコンパイル時バインディングエラー、クロスプラットフォームサポートがあるよ。もしかしたら、君が最後に試した時からアップデートがあったのかも?でも、AvaloniaやWPFにはあまり詳しくないから、もっと他にもあるかもしれないね。

それに、アセンブリのトリミングもできるようになるから、自己完結型のデプロイをしようとする時には大きな助けになるよ。今はフレームワーク依存か、200MB以上のデプロイになっちゃうからね。

WindowsでのUI開発で恋しいのは、アプリケーションをシームレスに作る手助けをしてくれること、そしてそれがマイクロソフト自身が作ったように見えること。ウェブ技術の導入で、Windowsのビジュアル言語がバラバラになっちゃった。マイクロソフトが古いアプリケーション(コントロールパネルみたいな)をアップデートしてないからだけじゃなくて、現代のツールが彼らのスタイルに合ったライブラリを提供してないからでもある。記憶によると、これが最初に始まったのはVistaの時で、サードパーティの開発者が新しいAero UIの透明感に追いつけなかったんだ。そして、「アプリにこの新機能を追加する方法」みたいなタイトルでMSDNグループから記事が出されなくなったのも影響してる。C、C#、Visual Basicの例があったら良かったのに。