クラウドネイティブな「.NET 5」が既存の.NET Frameworkアプリにもたらすインパクト.NET 5モダナイズ入門(1)

既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項やレガシーアプリのモダナイゼーションについて解説する連載。初回は、.NET統合の現状や.NET 5のリリースにおけるキャッチアップすべきことなどについて。

» 2020年11月10日 05時00分 公開
[鈴木友宏NTTデータ先端技術株式会社]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

2020年11月、「.NET 5」リリース

 企業向けアプリや社内システムで多く使われている「.NET Framework」。その最新版「.NET 5」が2020年11月にリリースされることをご存じでしょうか。一方、.NET Frameworkは、2019年リリースの「.NET Framework 4.8」が最終メジャーアップデートとなり、以降は新機能の追加は行われずメンテナンスのみとなることが決まっています。

 しかしながら、企業向けアプリや社内システムにおいては、新規開発時に安定性が最優先されることや、関連するシステムとの統一性を考慮し、最近まで枯れたテクノロジーである.NET Frameworkが採用される事例も少なくありませんでした。また、過去のバージョンも含め、.NET Framework上で稼働している多くのアプリが、大きく手を入れられることなくいまだ稼働中であると考えられます。

 2021年にリリースされる「.NET 6」がLTS(Long-Term Support、長期サポート)となるため、まだ、約1年の猶予がありますが、.NET 5のリリースが迫った今、新規アプリ開発や、「既存の.NET Framework上で稼働しているアプリを今後どう維持管理していくか」について、その方針の決定と計画を先延ばしにするのが難しい時期に来ているのです。

 なお、アプリは必ずしもフルスクラッチのまま維持することにこだわる必要はありません。アプリの立ち位置や規模などに応じて、各種SaaSや「Microsoft Power Apps」といったローコード開発プラットフォームなどに移行することも効果的です。また、オンプレミスのアプリの場合、クラウドへの移行を進めるべきかオンプレミスにとどまるべきかという選択も重要です。

 既存アプリに対して、上記を含めた「モダナイゼーションをどこまで実施するか」、または「投資効果を判断して、あえて実施しない」「現状のコードを破棄し新規開発を行う」といった戦略を適切に立案するためにも、既存の.NET Frameworkアプリの.NET 5への移行やクラウドへの移行に関する考慮事項について総合的に理解することが重要になってきています。

 そこで本連載「.NET 5モダナイズ入門」では、「企業向けアプリの開発において、.NET 5のリリースにおけるキャッチアップすべき事項」「既存の.NET Frameworkアプリの.NET 5への移行に関する考慮事項」「レガシーアプリのモダナイゼーション」といったことを解説します。なお本連載では、他に情報が多数あることが予想されるため、「C# 9.0」の新機能については触れません。あらかじめご了承ください。

.NET統合の現状

 2019年、下記の.NETチームのブログにある通り、「One .NET」という.NETの今後のビジョンが発表されました。

 .NETチームは、.NET 5において.NET Framework、「.NET Core」「Mono/Xamarin」の実装を1つの基本クラスライブラリ(BCL)とツールチェーン(SDK)に統合することを計画しているのです。

 なお、以下のアナウンスの通り、.NET Frameworkについては4.8が最後のメジャーバージョンになり、今後は新機能を追加しません。バグやセキュリティのアップデートについては、Windows Updateなどを通じて、アプリが稼働しているOSのサポート期限まで継続します。

 このうち、.NET Frameworkと.NET Coreの統合を順調に進めており、予定通り、.NET 5のリリースをもって完了する予定です。ただし、これは「統合」というより、「.NET Frameworkが終了となり.NET Coreがその後継となる」といった方が正しいでしょう。ユーザーが可能な限りスムーズに移行できるように、.NET Frameworkで提供していた機能のほとんどを、.NET Coreでも提供するようになりました。

 一方、残念ながら、.NET CoreとMono/Xamarinの統合は延期となっています。2019年8月時点では、これらの機能は2020年11月までにプレビューできるようになり、統合については、LTSリリースの.NET 6で完了する予定です。

 こちらは、下記の.NETチームのブログで参照できます。

 .NET 6のリリース時点で、「.NET Multi-platform App UI(.NET MAUI)」もリリースすると発表しており、これをもって、.NET CoreとMono/Xamarinの統合が完了します。そして、この時点でXamarin.Formsもメンテナンスフェーズに入り、Xamarin.Formsは.NET 6のリリースから12カ月間は従来同様メンテナンスされます。その後、Xamarin.Formsは終了となる予定です。

 なお.NET 5は、2020年11月11日現在で既に正式リリースとなっており、「Visual Studio」および、「Visual Studio for Mac」で利用可能です。

.NET Frameworkから.NET 5への移行の必要性

 .NET Frameworkについては、今後セキュリティアップデートが提供されますが、サポート終了となるまで利用し続けるのはお勧めできません。新機能のリリースが終了してしまった時点で将来的なリスクを抱えることに留意が必要です。

 昨今、特にセキュリティについては、非常に速い速度で進歩しており、現在「問題ない」とされることが将来も問題ないとは限りません。影響範囲が狭い脆弱(ぜいじゃく)性の場合は、セキュリティアップデートによって保護される可能性が高いでしょう。しかし、アプリパターンや何らかの機能自体がセキュリティ観点から突然非推奨となった場合は、機能自体の大きな変更や別の機能での代替が必要となります。場合によってはセキュリティアップデートでは保護が難しく、.NET 5への移行なしには根本的解決が不可能な事態になる可能性があるのです。

 このような事態はいつ発生するか分からず、また、事態が発生してから準備を始めても、日本のビジネス慣習上、リリースまでに時間がかかり過ぎて対応が間に合わなくなります。よって、いまだ発生していない問題に対し、リスクが存在する状況になったことを認識し、早い段階から準備することが重要です。

 もちろん、いまだ発生していない事態への対処であるため、準備には限界があるでしょう。まずは、.NET Frameworkと.NET 5の違いを把握することが重要です。それによって、維持管理しているアプリ上で今後発生する可能性があるリスクについて、.NET Frameworkのまま解決できる問題(つまり比較的短期間で対処できる問題)と.NET 5への移行が必須になる問題(対処に費用と時間がかかる問題)が明確になります。

 そして、それらの問題の対処方針についてもあらかじめ関係者に周知し理解を取り付けておくことで、問題発生時にスムーズな対処が可能となります。

将来のクラウドへの移行に対する考慮

 現実に.NET 5への移行を考えた場合、一般的には現在の情勢から考えて、オンプレミスで運用しているアプリにおいても、将来的なクラウドへの移行を一切考慮しないのは難しい状況といえるでしょう。.NET 5自体がクラウドネイティブを強く意識した構成となっているためです。

 とはいえ、全てのアプリをクラウドにデプロイするのは現実的ではなく、情報保護や可用性を自社で掌握する観点などからオンプレミスで維持するアプリも少なくないはずです。そういった場合でも、クラウドへの移行を意識した構成とモダナイゼーションは重なる部分が多く、プライベートクラウドの選択肢もあるので、クラウドネイティブへの考慮が重要であることは変わりません。

 また、クラウドが注目されるようになったのは、2006年辺りのことで、クラウドサービスの一つ「Microsoft Azure」が正式にサービスを開始したのは2010年ごろ。クラウドの利用が顕著に増えたのは2015年ごろです。従って、.NET Frameworkで開発したアプリのうち、2015年以前のものは、クラウドへの移行をほとんど考慮していないことでしょう。これらのアプリを.NET 5へ移行することを考える場合、当面の間オンプレミスでの運用を続けるとしても、関連するアプリのクラウド移行といった出来事が移行のきっかけになる可能性があります。

 また、現在のIaaSにはオンプレミスの環境をできるだけそのまま移行するソリューションもありますが、それらは最終的にはクラウドネイティブへ移行するための経過措置となるソリューションです。

 アプリが自社のビジネスへの重要度が高い場合は将来的なクラウドネイティブへの移行を念頭に置くことをお勧めします。

CI/CDの重要性

 企業向けアプリでは、いまだに手作業によるテストや、申請および手順書ベースによる手作業でのデプロイが行われている場合がありますが、.NET 5への移行を機に、CI/CD(継続的インテグレーション/継続的デリバリー)の導入もお勧めします。

 その理由としては、オンプレミス、クラウドにかかわらず、前述したように「セキュリティに関するアップデートの頻度が高まっていること」「アプリ改修のスピードがビジネスのスピードに直結していること」「クラウドを利用する上で最も総合的なメリットを享受できるPaaSでは、プラットフォームのアップデートやメンテナンスがオンプレミスの常識では考えられないくらい頻繁に行われること」があります。

 それらの影響がアプリに及ぶ際に、毎回手作業でテストを行い、手作業でデプロイするのは工数的にも現実的ではなく、ミスも起こりやすくなります。

.NET 5のリリースによって変わるもの

 ここまで述べてきたことは、今回.NET 5のリリースに伴い新たに出てきた考え方や手法ではありません。過去10年程度にわたる、アプリとそのエコシステムをモダナイズする流れの中で段階的に導入されてきたものが、.NET 5のリリース、そしてその裏にある.NET Frameworkの段階的な終了というイベントをきっかけに、総合的に検討するのに最適なタイミングが訪れただけのことです。つまり、.NET 5のリリースは、アプリのモダナイゼーションをある程度の余裕を持って推し進める最後のタイミングといえます。

 なお繰り返しになりますが、これまで通りフルスクラッチのまま維持することにこだわる必要はありません。各種SaaSや、ローコード開発プラットフォームなどに移行することも効果的です。またアプリを改修する場合も「どこまでモダナイゼーションを行うか」、デプロイ先についても「オンプレミスを維持するか、クラウドへの移行を考慮するか」を総合的に選択することが重要です。

 本稿を読んだ方は、自社で運用、維持しているさまざまな既存の.NET Frameworkアプリについて、将来の方向性を検討してみてはいかがでしょうか。

筆者紹介

鈴木友宏

NTTデータ先端技術株式会社

Microsoft MVP for Developer Technologies


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。