プロジェクト・リユニオン:マイクロソフトが長年にわたりWindows開発者のために築いてきた障壁をすべて取り壊す試み

Table of Contents

プロジェクト・リユニオン:マイクロソフトが長年にわたりWindows開発者のために築いてきた障壁をすべて取り壊す試み

Build仮想 Build カンファレンスが始まる中、Microsoft は Project Reunion を発表しました。これは、「Windows 開発者プラットフォームを統合および進化させ、すべての Windows 10 バージョンで動作する優れたアプリをより簡単に構築できるようにするという当社のビジョン」と説明されています。

開発者プラットフォーム担当副社長ケビン・ギャロ氏の発言の背景にある歴史は、2012 年の Windows 8 と、その新しいタブレット対応アプリケーション プラットフォーム (「Metro」と呼ばれることもあるが、マイクロソフトは「Modern」という表現を好んでいた) の導入に遡ります。

Metroは、新しいユーザーインターフェースだけでなく、セキュリティサンドボックス、ストア配信、そして旧来のWin32 APIの後継となるWinRT(Windows Runtime)と呼ばれるAPIも備えていました。Windows 8のコンセプトが失敗に終わったにもかかわらず、MicrosoftはWinRTを放棄せず、Windows 10向けにユニバーサルWindowsプラットフォーム(UWP)へと進化させました。「ユニバーサル」と呼ばれるのは、Windows Phone、Xbox、HoloLensなど、複数のWindowsプラットフォームで動作するためです。これらのプラットフォームは、(一部の人々から)惜しまれつつも廃止されました。

Windowsが2つのプラットフォームに分かれたことは、開発者にとって悩みの種でした。幅広い互換性を求めてWin32を使い続けるか、セキュリティ、展開、UIデザインといったMicrosoftの最新技術のメリットを享受するためにUWPを採用するかという選択肢しかなかったからです。Windows 10の一部のAPIはUWP専用です。Windowsは長年にわたり、この分裂をより許容できるものにしようと取り組んできました。UWP向けのWin32 APIへの幅広いアクセスを提供し、Win32側ではXAML Islandsのような、Win32アプリケーションにUWPの要素を組み込むための機能を開発してきました。

では、Project Reunionとは何でしょうか?

ガロ氏は、「既存のWin32およびUWP APIへのアクセスを統合し、NuGetなどのツールを通じてOSから分離して利用できるようにする」と述べた。これは、Win32とUWPの両方からAPIセットへのアクセスを可能にするパッケージを作成することが狙いのようだ。「これにより、新しいアプリのための共通プラットフォームが提供されます。さらに、既存のアプリを最新機能にアップデートし、最新化するのに役立ちます」とガロ氏は述べた。

ガロ氏は、Microsoftは「必要に応じてポリフィルを行い、APIがサポートされているWindowsのバージョン間で下位レベルで動作するようにする」作業を行うと付け加えた。ここで重要なのは「サポートされている」という点だ。最新のドキュメントによると、Microsoftが現在「WindowsのネイティブUIレイヤー」と位置付けているWinUI 3には、リリースからわずか数年しか経っていないWindows 10 1803が必要であることが分かっている。ポリフィルによってこのバージョンをもう少し遡ることができる可能性もあるが、詳細は今後の発表を待つしかない。

その間、Project Reunion に関する GitHub リポジトリはここにあり、発表はここにあります。

Windows開発互換性表

Windows開発互換性表

WinUI 3は、UWPの最新UIレイヤーであると同時に、Win32アプリケーションのUIレイヤーでもあるという点で重要です。Buildでは、MicrosoftはWinUI 3 Preview 1をリリースしました。Gallo氏はこれを「Project Reunionの旅における最初のコンポーネントの一つ」と呼び、このプロジェクトの目的は(ありがたいことに)新たな種類のWindowsアプリケーションの導入ではなく、UWPとWin32間の摩擦(Microsoftが2012年に生み出した)を軽減することにあると示唆しています。

Windows 10 の公式推奨 UI である Fluent Design

Windows 10 の公式推奨 UI である Fluent Design

WinUI の売り文句の 1 つは、開発者が Fluent Design System を使用できるようになるという点です。Fluent Design System は、Windows アプリケーションの設計方法に関する Microsoft の現在の考え方を反映しており、新しい Windows コントロールと連携します。

.NET マルチプラットフォーム アプリ UI

Windowsだけでなく、モバイルやMac向けの開発も必要になった場合はどうすればよいでしょうか?Microsoftは、React Native向けにJavaScriptまたはTypeScriptでコーディングするなど、いくつかの提案をしています。React Nativeは、同社のOfficeチームなどで使用されているようです。また、Microsoftが2016年に買収した.NETクロスプラットフォームUIツールキットであるXamarin.Formsも利用できます。

Xamarinは発音が簡単すぎたため、Microsoftは.NET Multi-Platform APP UI(MAUI)を発表しました。Microsoftの広報担当者はThe Regに対し、「.NET MAUIはXamarin.Formsの進化形です。単一のコードベースとプロジェクトシステムから、あらゆるOSのデスクトップやモバイルを含むあらゆるデバイス向けのアプリを構築できるようになります。.NET 6のリリースに合わせて、統合された.NETの一部となる予定です」と述べています。Xamarin.FormsはXamarin全体ではなく、XAMLを使用してクロスプラットフォームのユーザーインターフェイスを定義できるフレームワークです。MAUIのプレビュー版は2020年末までにリリースされる予定です。

.NET MAUIは、iOS、Android、SamsungのTizenに加え、WindowsとmacOSのデスクトップアプリもサポートします。複数のプラットフォームをターゲットとする場合、現在複数のプロジェクトが必要になるのに対し、.NET MAUIでは単一のコードベースとプロジェクトシステムを使用します。このフレームワークは、WindowsとMacのVisual Studioに加え、VS Codeとコマンドラインコンパイルでもサポートされます。

これはXamarin.Formsの置き換えを目的としていますが、Microsoftは.NET MAUIのリリースから1年後まで、新機能とバグ修正を含む旧フレームワークのサポートを継続することを約束しています。「Xamarin.Formsから.NET MAUIへのスムーズな移行を支援するための移行ツールとガイダンスが提供されます」とMicrosoftは述べています。.NET MAUIはオープンソースであり、こちらから入手できます。

.NET MAUIは.NET 6向けですが、現在.NET 5.0もプレビュー段階です。BuildでMicrosoftは、.NET 5.0 Preview 4.0をリリースし、一般提供は11月に予定していると発表しました。このバージョンの.NETは、クロスプラットフォーム対応の.NET Coreの次期大型アップデートに相当しますが、Windows FormsやWindows Presentation Frameworkなどのフレームワーク(Windowsのみ)のサポートが追加されています。Microsoftによると、この機能により、.NET Coreが実行されるあらゆる環境で、あらゆるワークロードをサポートする統合実装が実現します。Windowsデスクトップのサポートは明らかな新機能ですが、.NET 5.0のより重要な点は、Azureなどで実行されるマイクロサービスやコンテナー化されたアプリケーションへの適合性です。®

Discover More