本当に.NET 5 に移行すべき?

.NET 5 は「.NET Core vNext」であり、.NET 開発のワクワクする未来です。しかし、いますぐ .NET 5 に切り替えるのは間違った選択になる恐れがあります。.NET Framewort の以前のメジャーバージョン(4.0 のような)の更新とは異なります。おそらく現状維持で、.NET 6 または .NET 8 を待っても大丈夫です。

.NET 5 は、Microsoft のピカピカの最新版 .NET です。しかし、非常に新しいということは、新しい問題、不確かな品質、さまざまなトラブルを引き起こす可能性を意味します。望まぬ時間のロスになるかもしれません。

しかし、朗報があります。.NET 6 または .NET 8 まで 待っても大丈夫どころか、それが最善策である可能性が濃厚です。

この記事では、その理由を説明します。

.NET リリースの紆余曲折した歴史

Mono、Standard、Framework、Core、そして現在は 5+、これだけで、もう頭がクラクラします。新しい .NET はそれぞれ、過去のプラットフォームを完全に再発明したものであることがよくあります。

すべて「.NET」と呼ばれます。しかし、相互互換性があるというには、それぞれの .NET プラットフォーム(Framework、Standard など)は、あまりにも異なります。たとえば、.NET Framework は .NET Core とは異なるため、マルチターゲットでない限り、NuGet ライブラリは相互間で共有できません。(参照:.NET 5+ Migration Strategies for Your NuGet Package Libraries

さらに複雑なのは、同じ .NET プラットフォームでも問題が起こる場合です。メジャーバージョンとマイナーバージョンの違いで、深刻な問題を引き起こす可能性があります。たとえば、.NET Framework 1 と .NET Framework 2.0 の違いは、多くの重大な変更があり、ユーザーは移行に非常に苦労しました。(参照:Breaking Changes in .NET Framework 2.0

まだそこまで複雑ではないですか?マイナーなバグ修正やセキュリティアップデートだけの「パッチ」リリースでさえ、影響があります。複数の重大な変更によりコードが台無しになる場合があります(.NET Framework 3.5 SP1 のリリースを覚えている私たちのメンバーにはこのトラウマがあります)。(参照:Changes in .NET Framework 3.5 SP1

.NET 5 +:完全に新しい .NET

.NET 5 は、理論的には他の .NET プラットフォームが提供する最高のものから Microsoft が作成した全く新しいものです。さらに、これまでにない新機能が搭載された .NET プラットフォームです。

Microsoft によると、「.NET 5では、どのタイプのアプリを作成しても、コードとプロジェクトファイルの外観と操作感は同じになります。」(参照:Introducing .NET 5).NET 5 は、Windows OS のコンポーネントではなく、書き直された .NET Core です。プログラムの両方を共存させるサイド・バイ・サイド・インストールとクロスプラットフォームでの開発が可能になりました。そしてもちろん、新しい .NET は、単一で統一されたプラットフォームを維持することで Microsoft に利益をもたらします。

利用者にとってどういう影響があるのか

Microsoft の .NET に関しては、常に2つのことを念頭に置いておく必要があります。

  1. Microsoft のバージョン番号は、厳密な「バージョニング」ではなく、単なる名前と考えてください。

バージョン名の一般的な最優良事例は、セマンティック バージョニング 2(SemVer2) に従い、リリースの重要度を名前の数字で示します。通常、大きな変更点があった場合は、新しい主要バージョンとなります(何かが再発明されたときによく使われる「2.0」バージョンのように)。

リリースタイプ説明
メジャー変更点は以前のバージョンとの互換性がなくなる1.0.0
マイナー下位互換を保ちながら機能を追加する1.1.0
パッチ下位互換性によりバグやセキュリティパッチが修正される1.1.1

このロジックでは、 .NET Framework 3.5 SP1 は多くの変更点があったため .NET Framework 4 になるべきでした。しかし、パッチとして番号が付けられました。そのため、Microsoft の .NET の番号は厳密なバージョンではなく、名前であると考える方が適切なのです。

  1. アプリケーションのライフサイクルを意思決定の指針にしましょう。

これらはソフトウェアの一部であって、来年に時代遅れになるファッショントレンドではありません。新しいプラットフォームが出たからといって .NET を変更するのはおすすめできません。なぜなら、ほとんどのアプリケーションは、現在使用中の .NET プラットフォームで問題なく実行し続けられるからです。

特に最新の .NET Framework のライフサイクルは非常に長いです。古い .NET プラットフォームを、2030年代までに新しい .NET に変更した方が良い理由は特にありません。

長期サポート(LTS)に関する記事のこの表が示すように、.NET 5 以降の .NET のリリースは、間隔が短くなります。(参照:Demystifying Microsoft .NET Long-term Support)それだけでなく、長期サポートバージョンでも、古いバージョンよりもライフサイクルが大幅に短くなります。.NET Framework バージョンは問題なく機能します。それを使用するアプリケーションをわざわざ .NET 5+ に切り替えるのは時間の無駄であり、不必要なリスクを伴います。

要するに、Microsoft の .NET のバージョンは実際には名前であって、ライフサイクルは大きく異なります。.NET Framework などから .NET 5+ への変化は、メジャーバージョン番号の変更という理由だけです。過去の更新よりも信頼性があるとは限りません。

実際のところ、.NET Framework 4.5 と 4.6 の間はおよそ5年ありました。しかし、.NET 5 と .NET 8 の間隔はたった3年(そしておそらく重大な変更はより少ない)とされます。

.NET 5 をスキップするべき理由

新しい .NET プラットフォームに切り替えるには、常に手間がかかります。これは .NET のほぼ 1 ページ分の書き換えなので、.NET 5 で問題が発生する可能性は計り知れません。待てば、これらの問題の影響を最小限に抑えられます。

.NET 6 または .NET 8 を待つことで、.NET 5 の予期せぬバグや問題がすでに改善されたものを導入できます。また、偶数の .NET 5+ リリースは長期サポートです。つまり、.NET 6、8、10 などを使用するアプリケーションのライフサイクルは、短命の .NET 5、7 などよりも長くなります。

さらに、待つことで、新しい .NET プラットフォームを使用する必要があるかどうかを評価する猶予ができます。アプリケーションの中には、.NET プラットフォームの終了前に、さきに寿命を迎えるものもあるでしょう (たとえば、多くの ASP.NET Web Forms アプリケーションのように)。古いライブラリやアプリケーションが役に立たなくなったら、放棄するのが最善の選択なこともあります。古いものを何とかして将来に適応させようとしないのです。その代わり、Microsoft が .NET 5+ で行ったように、時が来たらアプリケーションを「ゼロから」書き直すのを待ちます。

.NET 5 を使うべき理由とタイミング

.NET 5 を使用するべき理由は間違いなくあります。明らかなのは、最終的には誰もが何らかの形の .NET 5+ を使用する必要があるということです。

組織内で .NET 5 の「ベータテスト」を検討してみてください。新しいプラットフォームを積極的に試してみたいという開発者がいる場合は、.NET 5 で使用してもよい低リスクのアプリケーションを割り当てましょう。このような実験は、ローリスクでハイリターンなので、あまり費用やリスクをかけずに貴重な情報を得られます。

リスクの低いアプリケーションのいくつかで .NET 5 をテストすることにより、新しい .NET プラットフォームを使用する時に直面するであろう問題を事前に知れます。クロスプラットフォームなど、.NET 5+ の中心的な機能を利用する予定なら、その時はすぐにやってくるかもしれません。

待っていても大丈夫

Microsoft の「バージョン番号」は単なる名称であることを覚えておいてください。.NET Framework 4.5 から .NET 8 への移行は、ほぼ4つの主要バージョンをスキップすることになります。これには不安に思われるかもしれません。しかし、実際には、.NET Framework 4.5 から .NET 5 よりも、.NET 8 は .NET 5 に似ています。4.5 から 8 への変化は、数字の見た目よりも実際には大きな変化ではありません。

アプリケーションのライフサイクルステージを評価して、将来の計画を立てる際には、新しいリリースのペースと LTS バージョンが意思決定の指針となるはずです。時間の経過とともにアプリケーションをどのように最新化する方法について、習得と計画を今日から始めましょう。

.NET 5 移行ガイドで習得と計画を

Inedo では .NET 5+ への移行を成功させる方法についてガイドを作成しています。組織のアプリケーションに最適な判断を下すのに役立ちます。今すぐ登録して、いち早くガイドをご覧ください。どうぞお気軽にご意見やご感想をお聞かせください。

.NET 5 移行で苦労しなくて済むように

.NET 5 は避けて通れないソフトウェアアップデートです。この移行をできるだけ苦労せず行えるようガイドをお届けします。

また、ご要望やご意見などございましたら、お気軽にご連絡ください。