オープンソース版の.NET Frameworkの「.NET Core」
.NET Coreは、Windows 10とともに登場した「オープンソース版」の.NET Frameworkだ。.NET Coreは、オープンソースソフトウェアとして、Windows 10のリリース翌年、2016年6月に公開された。簡単に言えば.NET Frameworkの根幹の部分だけを取り出して、「Windows以外でも動作できるようにした.NET Framework」だ。
当初、Microsoftは、Windows10のUWPとWindowsBridgeと呼ばれる4つのプロジェクトを組み合わせ、ウェブアプリ、Win32デスクトップアプリ、Androidアプリ、iOSアプリをWindows 10で動作させ、UWPからそれらのアプリを開発できるようにすることを計画した。
さらにはWindows 10をファミリー化して、Xbox OneやWindows Holograph、Windows Mobile、Windows IoTなどの派生バージョンや、プラットフォームを作った。これらすべてで動作できるように考えられたのがUWPであり、UWPアプリだ。
このため、UWPはWindows 10ファミリーの“最大公約数”的なものになった。WindowsBridgeは、既存の他のプラットフォームのアプリケーションをWindows 10で動かすためのもので、.NET Coreは、UWPで作ったアプリケーションを他のプラットフォームでも動作させるためのものとした。「世の中すべてWindows 10」みたいな計画で、そのための.NETが.NET Coreだったのだ。
しかし、WindowsBridgeは早々に撤退。残ったのは、Win32アプリをMicrosoftストアで販売するためのDesktop Bridge(Project Centennial)だけ。UWPはマルチプラットフォーム化を想定していたため、Windows固有の機能に依存しないように開発できるようにした。それがために不自由さを生み出し、Windowsのアプリケーション実行環境としても不満足なものになってしまった。実際に初期のUWPには「できないこと」が多すぎた。
.NET Coreが産まれた背景には、Windows 8で導入されたWinRTとWindowsストアアプリがある。モダン環境はWindows 8で産まれた。そのときの実行環境が「WinRT」だ。このとき、Windowsのプログラムは、モダン環境(WinRT、ストアアプリ)とWindows 7までのデスクトップ環境に分離し、それぞれ別の作り方をすることになった。モダン環境はWindows 10ではUWPへと変化した。WinRTは、.NETの実行システムを含んでいたが、ライブラリに相当する部分は、Windowsストア用に作られたWinRT用のものだった。
Windows 8とWindows 10で、Microsoftは、UWP/モダン環境とデスクトップ環境の2つを持つことになった。UWPでアプリを作れば、どのWindows 10でも動き、他のプラットフォームにも移植が簡単というのは“建前”としては理解できるが、その結果として、UWPには「キツい制限」と「不満足なAPI」しかなかったわけだ。
.NET Coreは、.NETの「コア」として作られた。もちろんオープンソース化し、さまざまなプラットフォームに移植可能にするには、Windowsに依存した部分があってはならない。.NETの根幹部分だけを抽出して作り、さまざまなモジュールと組み合わせて、実行環境に合わせたアプリケーションを作れるようにした。.NET Coreは、.NET Frameworkの再構築でもあるのだ。
今風に言えば、「リブート」や「リターンズ」ってやつである。もっとも、APIとしてはWinRTのときに再構築しているので、「リブート・リターンズ」ってやつかもしれない。
その後、Microsoftは方向転換する。せっかくXamarinまで買収してマルチプラットフォーム化を推進したのにUWPにあまりに人気がなく、Windowsの開発者は相変わらずデスクトップアプリばっかり作っているからだ。
そこで開発者に人気のデスクトップアプリケーションへの回帰と、古くなった.NET Frameworkの置き換えとして、.NET Coreを活用することにしたのである。その方向性が見え出したのが、2018~2019年である。具体的な製品としてデスクトップアプリでUWPのユーザーインターフェースを導入可能にする「XAML Islands」や「MSIX」が発表されたのがこの頃だ(どうしようか考え始めたのは、さすがにその前なのだろうが)。
そして.NET Core 3.0(2019年9月リリース)では、Windowsデスクトップアプリケーションの開発をサポートした。.NET Core 3.0がデスクトップアプリに対応するという計画は、.NET Core 3.0がリリースされる前年のBuild 2018で発表されており、この頃には、Project Reunionの下地が出来ていたのだと考えられる。
そして2020年に発表されたのが「Project Reunion」だ。2つに分かれたWindowsの開発環境がこうして一体化する。なんだか、超古代の遺物が元の場所に戻された結果、驚愕の展開となる映画を見ているような気になってくるが、結末にはまだ早い。Project Resunionが完成するのが今年の第4四半期、来年の「お楽しみ」だろう。
この連載の記事
-
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に - この連載の一覧へ