.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つのことを念頭に置いておく必要があります。
- Microsoft のバージョン番号は、厳密な「バージョニング」ではなく、単なる名前と考えてください。
バージョン名の一般的な最優良事例は、セマンティック バージョニング 2(SemVer2) に従い、リリースの重要度を名前の数字で示します。通常、大きな変更点があった場合は、新しい主要バージョンとなります(何かが再発明されたときによく使われる「2.0」バージョンのように)。
リリースタイプ | 説明 | 例 |
メジャー | 変更点は以前のバージョンとの互換性がなくなる | 1.0.0 |
マイナー | 下位互換を保ちながら機能を追加する | 1.1.0 |
パッチ | 下位互換性によりバグやセキュリティパッチが修正される | 1.1.1 |
このロジックでは、 .NET Framework 3.5 SP1 は多くの変更点があったため .NET Framework 4 になるべきでした。しかし、パッチとして番号が付けられました。そのため、Microsoft の .NET の番号は厳密なバージョンではなく、名前であると考える方が適切なのです。
- アプリケーションのライフサイクルを意思決定の指針にしましょう。
これらはソフトウェアの一部であって、来年に時代遅れになるファッショントレンドではありません。新しいプラットフォームが出たからといって .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 は避けて通れないソフトウェアアップデートです。この移行をできるだけ苦労せず行えるようガイドをお届けします。
また、ご要望やご意見などございましたら、お気軽にご連絡ください。