結局のところ、Microsoft は、オープンソースのクロスプラットフォーム Web フレームワーク ASP.NET Core 2.0 が Windows 専用の .NET Framework 上で実行されることを制限するつもりはありません。
現在、Microsoft の .NET プラットフォームには 2 つの異なる形式があります。1 つは .NET Framework と呼ばれ、Windows でのみ動作します。もう 1 つは .NET Core と呼ばれ、オープンソースでクロスプラットフォームです。
Microsoft は、次世代の Web アプリケーション フレームワークである ASP.NET Core 2.0 が .NET Framework も対象とするのではなく、.NET Core 2.0 でのみ実行されると発表し、.NET コミュニティに衝撃を与えました。
シアトルで開催中の Build 開発者カンファレンスで、The Reg は、Microsoft の著名なエンジニアであり、.NET Core および ASP.NET Core プロジェクトを監督する .NET Foundation のディレクターも務める Miguel de Icaza 氏に話を聞きました。
ASP.NET Core 2 を .NET Standard 2.0 から .NET Core 2.0 に再ターゲットするとどうなるでしょうか?
「その点については明確にしておきたいのですが、顔を隠したいんです。今度の.NET Core 2.0、Build用にリリースされたものはプレビュー版で、.NET Frameworkでは対応が間に合わない問題がいくつかあることが判明しました。そのため、リリースされたパッケージは、.NET Core 2.0上でのASP.NET Core 2.0の実行のみをサポートしています。これを修正し、.NET Framework上で実行できるようにします。」
マイクロソフトの著名なエンジニア、ミゲル・デ・イカザ氏
興味深いのは、プレビュー版に特定の制限があったということではなく、プリンシパル・プログラム・マネージャーのスコット・ハンセルマン氏を含むマイクロソフトの上級スタッフが、GitHubのスレッドでこの変更、その影響、そして可能な回避策についてコメントしたことです。どうやら変更は決定事項のようでした。
de Icaza氏によると、「エンジニアの中には、この機会に.NET Frameworkのサポートを中止すべきだと考えた人がいました。それがGitHubのスレッドの趣旨です。ASP.NET Core 2.0では、.NET Standardと.NET Frameworkをサポートする予定です。」
de Icaza 氏は、Microsoft は当面の間、.NET Framework 上での ASP.NET Core の実行をサポートし続けると述べています。
「当社には .NET Framework の開発者がたくさんいますので、そうなる限りはそこでサポートする必要があります。
.NET Coreは、.NET Frameworkが備えているすべてのAPIを備えているわけではありません。現在、人々が頼りにしている機能の多くが.NET Coreには備わっていません。また、現在、.NET Coreを利用するISVのエコシステムは非常に大規模です。つまり、.NET Framework上で動作させる必要がある開発者は、.NET Coreに移行したいと考えているかもしれませんが、実際には.NET Coreの機能の一部を必要としているのです。
「.NET Coreが人々のニーズをすべて満たす日が来るかもしれません。その時が来たら、私たちは再考する必要があります。しかし、その日が来るまで、そしてそれは何年も先のことですが、実現は不可能です。」
.NET Framework との互換性を維持するための妥協点についてはどうでしょうか。それによって ASP.NET Core が遅れたり、パフォーマンスが低下したりするでしょうか?
デ・イカザ氏によると、その答えは条件付きコードを使って「革新とパフォーマンスの追求」を行うことです。「共通の基準をターゲットにしながらも、できることは多岐にわたります。常に新しいものを実現できるのです。」これは、PCにおいて、アプリケーションが最新のCPUやGPUのイノベーションをサポートしながらも、古いハードウェア上で動作できるのと似ています。「CPUに新しい機能があればそれを使い、そうでなければ古いコードにフォールバックしましょう。」
「それが私のXamarinビジネスにおけるやり方です。ユーザーを見捨てず、互換性を維持し、ユーザーを壊さない。プラットフォームベンダーである以上、ユーザーを支えていかなければなりません。それがビジネス目標です。エンジニアリングはより難しいかもしれませんが。」®