.NETバージョンを理解する:.NET Core、.NET Standard、.NET Frameworkなど
.NET、.NET SDK、.NET Core、.NET Standard、.NET Frameworkなどの用語があるため、.NETエコシステムをナビゲートすると混乱することがあります。 Visual Studio 2022を使用したC#開発環境では、それぞれが独自の役割を担っており、その違いを理解することは、プロジェクトに適したターゲットフレームワークを選択する上で非常に重要です。
この記事は、ティム・コーリーのビデオ".NET Versions Explained - .NET、.NET Core、.NET Standard、.NET Framework and more"に基づき、これらの用語を簡素化し、いつ、どれを使うべきかについて明確なガイダンスを提供することを目的としています。
.NETコアの存在が必要だった理由
.NET Frameworkは、単に.NETと呼ばれることも多く、20年以上にわたってソフトウェア開発とデスクトップランタイムの定番となっています。 しかし、その限界から、.NET Coreを作成する必要がありました。 ティム・コリーは、いくつかの重要な理由を挙げています:
1.パッチと回避策:時間とともに、.NET Frameworkは多数のパッチと回避策を蓄積し、大幅に速度を落としました(1:35)。
2.Windows依存: .NET FrameworkはWindowsと深く統合されているため、他のプラットフォームで使用するのは困難です。 この依存関係がクロスプラットフォーム開発の妨げになっていた(2:03)。
3.モノリシックな設計:.NET Frameworkはすべてを1つのパッケージに含めるように設計されており、便利ではあるが、肥大化した効率の悪いシステムになっている(2:25)。
4.時代遅れの概念:20年以上前に開発された.NET Frameworkは、現代のインターネットやモバイル利用を念頭に置いて設計されたものではなかった(3:20)。
.NETアプリケーションの構造について
.NET Coreの利点を理解するには、.NETアプリケーションがどのように構成されているかを把握することが重要です。

ティム・コリーは次のように説明しています:
1.C#ソースコード: C#コードはまず中間言語(IL)コードにコンパイルされます(5:49)。
2.共通言語ランタイム(CLR):ILコードは、CLRによって実行されます。 .NET Frameworkと.NET CoreはCLRが異なりますが、ILコードを同様に処理するため、ソースコードの多くを両プラットフォームで同じままにすることができます(6:42)。
.NET Frameworkを超える.NET Coreの利点
.NET Coreランタイムは、.NET Frameworkの欠点に対処するために開発された開発フレームワークです。 ティム・コリーは、その主な利点を強調します:
1.クロスプラットフォーム互換性:.NET Frameworkとは異なり、.NET CoreはWindows、Mac、Linux、Android、iOS、Xbox、IoTなど、複数のプラットフォームで動作するように設計されています。
2.パフォーマンス: .NET Coreはパフォーマンスを大幅に向上させます。 レガシーパッチを排除し、最新のハードウェアとソフトウェアプラクティスをサポートしているため、.NET Frameworkよりも高速です。
3.Modularity: .NET Coreはモジュール化されているため、開発者は必要なコンポーネントだけを含めることができ、オーバーヘッドを減らして効率を向上させることができます。
4.最新の機能: .NET Coreには、組み込みの依存性注入やロギングなど、開発におけるベストプラクティスを促進する、すぐに使えるより最新の機能が搭載されています。
5.オープンソース: .NET Coreはオープンソースであり、コミュニティによる貢献と開発の透明性を奨励しています。
6.業界標準に準拠: .NET Coreは業界標準に準拠しており、Windows環境に限定される.NET Frameworkとは異なり、最新のテクノロジーとの互換性と統合を保証します。
7.アップグレードが簡単:.NET Coreのアップグレードは一般的に簡単で、多くの場合、バージョン番号の変更とNuGetパッケージの更新だけで済みます。 マイクロソフトのアップグレードプロセスは簡素化されており、これまでより複雑で問題の多いアップグレードが必要であった.NET Frameworkと比較すると、破壊的な変更は少なくなっています。
.NET標準
ティムは、.NET Standardは、すべて for .NETプラットフォームが実装しなければならないAPIのセットを定義する仕様であり、単なるランタイムではないと説明します。これは、異なる.NET実装間でコードの互換性を保証する統一APIを提供します。 つまり、.NET Coreと.NET Frameworkの両方で動作するライブラリを書くことができます。 33:35で、ティムは.NET Standardの最新バージョンまでのすべてのバージョンについて説明します。 概要は以下のスクリーンショットのとおりです:

.NETバージョンの詳細な内訳
.NETフレームワークのタイムライン
.NET Frameworkは2000年代初頭から存在し、Windowsと緊密に統合されています。 WindowsデスクトップおよびWebアプリケーションの構築に適していますが、クロスプラットフォーム機能という点では限界があります。
.NET Framework 1.0 (2002年1月)。
ティム・コーリーは、.NET Framework 1.0の最初のリリースについて、複数のプログラミング言語を一緒に使えるようにする共通の中間言語の概念を導入した革命的なものだと述べている(40:07)。 この基礎的なバージョンは、さまざまな言語のための統一されたプラットフォームを提供することによって、将来の開発のためのステージを設定しました。
.NET Framework 2.0 (2005年10月)。
3年後にリリースされた.NET Framework 2.0は、大幅な改良と新機能をもたらし、プラットフォームの成長を継続させました(41:40)。 このバージョンは、言語機能が強化され、より幅広いアプリケーションに対応したことが特徴です。
主な更新:
2006年11月:.NET Framework 3.0が導入されました(41:43)。
2007年11月:重要なマイルストーンである.NET Framework 3.5がリリースされました(41:49)。
2010年4月:最後のメジャーバージョンである.NET Framework 4.0がリリースされました(42:13)。
2012年8月:.NET Framework 4.5がリリースされました(42:50)。
- 2019年4月:最終マイナーバージョンである.NET Framework 4.8がローンチされた(47:17)。
.NETコアバージョン
.NET Core 1.0(2016年6月)。
ティム・コーリーは、.NET Core 1.0について、.NET Coreの可能性を示すことを目的とした、機能を制限した概念実証であると述べている(43:32)。 この初期バージョンは基礎を築きましたが、機能が限られていたため、広く採用されることはありませんでした。
.NETコア2.0(2017年8月)。
より機能豊富なアップデートとしてリリースされた.NET Core 2.0には、特にWebアプリケーション開発における重要な進歩が含まれています(45:23)。 しかし、これはLTSバージョンではなく、Tim氏は、このバージョンには、より安定したバージョンを後にリリースすることにつながる破壊的な変更が含まれていたことを強調しています。
.NET Core 2.1(2018年5月)。
.NET Core 2.1はLTS(長期サポート)バージョンであり、ティムは安定性と拡張サポートを必要とする企業にとって重要であると指摘している(45:42)。 これは、.NET Coreをより実運用に適したものにする重要なアップデートでした。
.NET Core 3.0(2019年9月)。
.NET Core 3.0では、WinFormsとWPFを含むデスクトップアプリケーションのサポートが導入され、Webアプリケーション以外にも用途が広がりました(53:04)。 このリリースにより、.NET Coreはより包括的なプラットフォームとなり、.NET Frameworkからの移行を目指す企業を魅了しました。
.NET Core 3.1(2019年12月)。
3.0をベースにした.NET Core 3.1もLTSバージョンであり、デスクトップとWebアプリケーションに継続的なサポートと安定性を提供する(53:16)。 ティムは、このバージョンは、.NET Coreが企業で使用するのに十分な機能を備え、信頼できると見なされるようになったことを示すものだと説明しています。
.NET 5とそれ以降
.NET 5.0 (2020年11月)。
.NET 5のリリースに伴い、マイクロソフトはブランディングを簡素化するため、名称から"Core"を削除しました(58:03)。 ティムは、この変更は.NET Frameworkと.NET Coreの間の混乱を減らすことを目的としていると説明しています。 .NET 5は、.NETエコシステムを単一の名称に統一する大きな一歩となりました。
.NET 6.0 (2021年11月)。
.NET 6は、.NET 5で導入された年次リリースサイクルを継続しました(59:56)。 ティムは、.NET 6を含む各新バージョンは1年ごとの更新リズムの一部であり、定期的な改善と機能追加が可能であると述べています。
.NET 7.0 (2022年11月)。
.NET 7は毎年リリースされるパターンを踏襲し、マイナーアップデートと改良によってプラットフォームをさらに進化させました(59:56)。 Timは、.NETエコシステムにおける継続的な開発と革新に対するMicrosoftのコミットメントを反映したこのバージョンの詳細について説明します。

.NETのバージョンとサポートライフサイクルを理解する
ティム・コーリーは、.NETのバージョンとそのサポートライフサイクルについて、(1:01:27)で詳しく説明しています。 以下は、主要な論点をまとめたものです:
サポートのライフサイクル:STS vs. LTS
ティム・コーリーは、2種類のサポートウィンドウの違いについて説明しています:標準サポート (STS) と 長期サポート (LTS) です。
STS(スタンダード・ターム・サポート):18ヶ月のサポート期間を提供します。 たとえば、2020年11月にリリースされた.NET 5は、2022年5月までサポートされました。2022年11月にリリースされた.NET 7も同様に18ヶ月のサポート期間があり、2024年5月に終了します。
- LTS(長期サポート):3年間の長期サポートを提供します。 2021年11月にリリースされた.NET 6は、2024年11月までサポートされます。2023年11月にリリースされる.NET 8が次のLTSバージョンとなり、2026年11月までサポートされます。
ティム氏は、動きの速いアプリ開発者は最新機能にアクセスするためにSTSバージョンを好むかもしれないが、企業は安定性とサポート期間の長さからLTSバージョンを好むことが多いと指摘する。
アップグレードパスとバージョンリリース
Tim Coreyは、.NETバージョンのアップグレードパスの概要を説明します:
.NET 5から.NET 6へ:両方のバージョンがサポートされている重複期間が1年間あります。
.NET 6から.NET 8へ:.NET 6のサポートが終了する前に、.NET 6から.NET 8にアップグレードする期間が1年間あります。
- 将来のアップグレード:このパターンに従い、.NET 8(現時点では最新リリース)は.NET 10が登場するまでサポートされるため、アップグレードするのに十分な時間があります。
ティム氏は、この予測可能なリリースサイクルによって、企業は安心してアップグレードを計画できると強調する。

マイクロソフトのサポート戦略
ティムは、サポートと開発に対するマイクロソフトのアプローチについて説明します:
コストと複雑さ: 古いバージョンのサポートを拡張することは、複数のバージョンにわたってセキュリティアップデートを維持する必要があるため、コストがかかり、複雑になる可能性があります。 これが、マイクロソフトがより予測可能で管理しやすいサポート戦略を採用した理由です。
- モジュラーフレームワーク: .NET Coreと.NETのモジュラーアプローチは、迅速な機能更新と管理しやすいサポートライフサイクルを可能にします。
.NETフレームワークと.NET Coreのどちらを選ぶか
ティム・コリーは、.NETのバージョンを使い分けるタイミングについてアドバイスしています:
.NETフレームワーク:既存のプロジェクトや、Windows XPのような古いオペレーティングシステムをサポートする場合に使用してください。
- .NET Core(現在 for .NET):新しいプロジェクトでは、.NETの最新バージョンから始めましょう。 旧バージョン for .NET Frameworkから.NETにアップグレードすると、パフォーマンスが大幅に向上します。
ASP.NETとASP.NET Coreの比較
ティムは、ASP.NETと.NET Coreの違いを説明しています:
ASP.NET:.NET Framework上に構築され、Webフォーム、MVC、Web APIをサポートしています。 特にWeb Formsは.NET Coreには含まれていません。
- ASP.NET Core:.NET Core上でWebアプリケーションを構築するためのモジュール式フレームワーク。 Blazor Pages、MVC、API、Blazor Server、Blazor WebAssembly が含まれます。 .NET Coreは、以前のものと比べてより柔軟で現代的に設計されています。
1:21:00のティムは、ASP.NET Coreが新機能とより大きなモジュール性でWeb開発をサポートし続けるのに対し、ASP.NET(Framework)はより伝統的で、古い.NETバージョンに限定されていることを明らかにしています。
結論
ティム・コリーは、.NET Frameworkの歴史的背景から.NET Core以降の最新機能まで、.NETエコシステムをナビゲートするための明確で洞察に満ちたガイドを提供します。 動画では、.NETバージョンの進化、.NET Coreの必要性、モジュール性とクロスプラットフォーム互換性の利点を説明しています。 .NET Frameworkと.NET Coreのどちらを選択するにしても、さまざまな.NETバージョンのサポートライフサイクルを理解するにしても、ティムの説明は、十分な情報に基づいた開発決定を行うための貴重なロードマップを提供します。
より深い議論や実用的なコーディング例については、ティム・コーリーのYouTubeチャンネルIAmTimCoreyをぜひご覧ください。


