.NET Core、.NET Framework のサポートってややこしくないですか?「何がサポートされているんだろう?今のものは、いつまでサポートされるんだろう?長期サポート (Long-term Support: LTS) って何?というか移行しなきゃだめなの?」といったような疑問、たくさんわきますよね。
この記事では、マイクロソフトの .NET LTS について、わかりやすく説明します。これを読み終える頃には、今後何をすれば良いのか (何をしなくて良いのか) が理解でき、プラットフォームの移行を効率的に行えることでしょう。
さて、まず一番気になる疑問である「今すぐ移行しなきゃダメ?」ですが、結論から言うと、その必要はありません。すでにサポートが切れた .NET プラットフォームで実行されている、とても古いレガシーアプリケーションを除くと、最も早くサポートが終了するプラットフォームでも、 2 年間の猶予があるからです。したがって、余裕を持って移行のスケジュールを立てられます。

LTS を利用して .NET の移行のスケジュールを立てる
.NET 5 がリリースされたことに伴い、 .NET プラットフォームが変更されました。下記の5つのステップに従うことで、「いつ」「どれに」移行すれば良いのかが簡単にわかります。
- すでにあるアプリケーションを棚卸しする
- 廃止されるコンポーネントが何かを調べる
- 利害関係者と優先順位を相談する
- 大まかな移行スケジュールを立てる
- リリース速度を上げる
移行のスケジュールを決めるには、多くの要素が絡んできます。しかし、LTS のサポートの有無がわかったら、上記のステップ 1、2 に取り組むことができます。
近年の多くの組織では、色々な .NET プラットフォームを異なるアプリケーションで使用しています。そのため、下記のことを理解する必要があります。
- 色々なアプリケーションを異なる .NET プラットフォームに移行させることがある
- それぞれのアプリケーションがライフサイクル上で異なる地点にいる
しかし、ここでは注意すべきなのは、そもそも、すべてのアプリケーションを移行する必要はないということです。また、すべて同時に移行する必要もありません。なぜなら、プラットフォームのサポートが終了する前にアプリケーションのエンド・オブ・ライフ (End of Life: EOL) の方が先に来る可能性があるからです。加えて、.NET プラットフォームの EOL はそれぞれ異なり、場合によっては古い .NET バージョンの方がサポートが長いこともあるので、必ずしも「移行先は新しいプラットフォームの方が良い」というわけでもありません。
Microsoft の .NET プラットフォームには、下記の 3 つのタイプがあります。
- オペレーティングシステム (Operating system: OS)。サポート期間はとても長く (多くが10年以上)、オペレーティングシステムのライフサイクルと同じです。
- 長期サポート (Long-term Support: LTS)。プラットフォームの最初のリリースから3年です。
- Current リリース。LTS のリリース後か、次のCurrent リリース後のどちらか早い方から 3 ヶ月間のみサポートされます。
つまり、移行先としてオペレーティングシステムか LTS を選ぶことで、新しいプラットフォームに移行するまでのアプリケーションのライフサイクルを長くできます。
Microsoft LTS サポート期間の早見表
下記の表で、どのバージョンの .NET Framework/Core から、どのバージョンの .NET に移行すれば良いかがわかります。
当然ながら、移行はサポートの有無や長さだけでは判断できません。しかし、.NET 5 以降のバージョンを選択することでたくさんのメリットを享受できます。
.NET Framework
バージョン | 既存アプリケーションのサポート状況 | アプリケーションの移行先にすべきか |
1.x | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
2.x | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
3.x | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
3.5 | ✓ オペレーティングシステム (2029年までサポート) | ⚠️オペレーティングシステム (2029年までサポート) – 移行には注意が必要 |
4.0 to 4.5.1 | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
4.5.2 to 4.7 | ⚠️オペレーティングシステム (ミックス) – 各バージョンのポリシーを確認する必要あり | ⚠️オペレーティングシステム (ミックス) – 移行には注意が必要 |
4.8 | ✓ オペレーティングシステム (2029年までサポート) | ✓ オペレーティングシステム (サポート終了は未定) |
Microsoft からは、「.NET Framework4.8 は .NET Framework の最新バージョンであり、Windows の将来のリリースで引き続き配布される予定です。サポートされているバージョンの Windows にインストールされている限り、.NET Framework4.8 も引き続きサポートされます」とのアナウンスが出ています。
そのため、 .NET 5 より古いプラットフォームである .NET Framework 4.8 への移行を検討するのも一つの手です。最新のものに移行しないのは、一見おかしいのですが、上記のアナウンスの通り、.NET Framework 4.8 は .NET 5 より長くサポートされます。また、.NET Framework 4.8 は、.NET 5 よりすでに長く使用されているので、移行に伴うスタッフの再トレーニングにかかるコストを抑えられるという利点もあります。つまり、浮いた時間とお金を他のアプリケーションの移行計画に充てられるということです。
.NET Core
バージョン | 既存アプリケーションのサポート状況 | アプリケーションの移行先にすべきか |
1.x | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
2.0 and 2.2 | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
2.1 | ⚠️LTS (2021年8月21日まで) | ⚠️LTS (2022年12月3日まで) – 長期で使用するアプリケーションに対しては移行する必要なし |
3.0 | ✘サポート終了 – できるだけ早く移行する必要あり | ✘サポート終了 – 移行する必要なし |
3.1 | ✓ LTS (2022年12月3日まで) | ⚠️LTS (2022年12月3日まで) – 長期で使用するアプリケーションの場合、注意が必要 |
Microsoft は .NET 5 以降を「.NET Core v.Next.」と位置づけています。そうした理由から、Core に対する LTS は (オペレーティングシステムに関連付けられている) .NET Framework 4.8 より短くなっています。
.NET 5 以降
プラットフォーム | リリース (予定) 日 | アプリケーションを移行すべきか |
5 | 2020 年 11 月 | ⚠️現在のリリースのみ – 移行には注意が必要 |
6 | 2021 年 11 月 | ✓ LTS |
7 | 2022 年 11 月 | ⚠️現在のリリースのみ – 移行には注意が必要 |
8 | 2023 年 11 月 | ✓ LTS |
.NET 5 以降、奇数番号のリリースはすべて Current リリースのみになります。一方、.NET 6 以降は偶数番号のリリースがすべて LTS になります。
.NET LTS に関するよくある質問
新しいアプリケーションの場合、いつ新しいプラットフォームに移行すべきですか?
色々考えるべきことはたくさんありますが (ガイドで詳しく説明しています)、サポートのことを考慮する場合、 .NET Framework、.NET Core、.NET 5 以降のチャートを確認して決めましょう。
プラットフォームのマイナーバージョンは、いつアップグレードすべきですか?
.NET Framework、.NET Core のどちらも、早ければ早いほど良いです。サポートされているのは各プラットフォームの最新バージョン (.NET Framework4.8および.NETCore 3.1) のみで、どちらも LTS です。それ以外のバージョンでも変わらず使用できますが、セキュリティ上の問題が放置されたり、バグが修正されなかったりするので注意が必要です。また、Framework4.8 と Core3.1 は少なくともあと 2 年間は LTS でサポートされるため、「2021 年 11 月に予定されている次の LTS リリース (.NET 6) までは移行しない」という選択もありです。
プラットフォームのパッチバージョンはいつアップグレードすべきですか?
早ければ早いほど良いですが、注意が必要です。「リリースされたパッチをすぐに適用したら不具合が発生した」ということがあったからです。そのため、急ぐ理由が特になければすぐにアップグレードする必要はありません。
しかし、長期間アップグレードを避けるのはおすすめしません。セキュリティ上のリスクが上がったり、移行やアップグレードの手間が増えるためです。
色んなアプリケーションを異なる .NET プラットフォームに移行できますか?
Yes とも No とも言えます。
Framework 4.8 と Core 3.2 の EOL までは、必要に応じてそれらに移行できます。そして、全くおすすめしませんが、サポートされていない .NET プラットフォームに対しても、厳密に言えば可能です。
しかし、先ほど説明した通り、.NET は今後平行展開することはありません。したがって、メジャーな番号の .NET プラットフォームを使用する以外の選択肢はありません。また、奇数番号のリリースのサポートは 3 ヶ月と短く、LTS でサポートが長いのは偶数番号のリリースであることも留意してください。
LTS のまとめ
現在サポートが終了したプラットフォームを使用していたとしても、今すぐ移行する必要はありません。しかし、現在の .NET Framework と .NET Core は、いわば延命措置を施されている状態です。今から移行のスケジュールを組み立てておくことで、後々色々楽になります。
まずは、既存のアプリケーションの棚卸しから始めて、どのコンポーネントが廃止されるのかを確認しましょう。そして、現在のプラットフォームのサポートが終了した後も使用したいアプリケーションをリストアップできたら、さっそく移行のスケジュールを立ててみましょう。
.NET 5 移行ガイドを入手する
現在、Inedo では .NET 5 へ移行するためのガイドを作成しています。今すぐサインアップすることで、ガイドを早期に入手したり、それに対するフィードバックを送ったりできます。