Web フォーム、そのままで大丈夫?ついに来た .NET 5+ 時代に備えるべきこととは?

2020年11月、ついに .NET 5 がリリースされました。これに伴い、「ウチ、Web フォーム使ってるけど、このままで大丈夫かな……でも、よくわからないし、面倒くさいし……」と思っている方もいると思います。
この記事では、.NET5 時代の Web フォームについてと、よくある疑問点についてわかりやすく解説します。
今から疑問点を解消して準備しておけば、後々楽できますので、ぜひご覧ください。

さて、まず一番気になっているであろう疑問点、「Web フォーム、これからどうなるの?」ですが、結論から言うと ASP.NET Web フォームを使用したアプリケーションは、新しい .NET がリリースされた後でも使い続けられます。でも、ちょっと待って下さい。確かに使い続けられますが、今後色々な制限が考えられますし、考えるべきことはたくさんあります。そのため、自分の組織が今後も同じような運用を続けられるのか、はたまた変える必要があるかは、この記事を最後まで読んでから判断しても遅くありません。下記では、まず、「そもそも Web フォームってどうなるの?」といったことから、今後起こりうること、そしてこれらに対してよく寄せられている質問に答えていきます。

そもそも、Microsoft は Webフォームを廃止するのか?

結論から言えば、NO です。Web フォームがなくなるわけではありません。

.NET 5 以降、Microsoftは.NET Core へと軸足を移しており、Web フォームのある .NET Framework からは離れています。そのため、.NET Core ランタイムを使用した ASP.NET Web フォームは実行できません。しかし、これは「Microsoft が Web フォームを廃止しつつある」ということではありません。

Microsoft の新しい開発プラットフォーム(.NET 5 以降)のリリースのスピードは、以前よりも早く、間隔も短くなっています。たとえば、.NET 8 は 2023 年にリリースされる予定ですが、そのサポートは 2026 年までで(参照:Demystifying Microsoft .NET Long-term Support (LTS) )、.NET Framework 4.8 よりも早く終了します。つまり、Microsoft が今後 7 年間にリリースされるプラットフォームは、20 年前にリリースされたプラットフォームよりも早くサポートが終了してしまうということです。

情報シェアサイトMedium の寄稿者 Matthew MacDonald の記事から引用:「ASP.NET Web フォームは、今後開発に使用されることはないでしょう。とはいうものの、完全になくなるわけではありません。というのは、レガシーなプロダクトに対しては引き続きサポートされるからです。しかし、最終的にはそれらも将来の .NET  シリーズへ取って代わられていくことでしょう。ここで一番重要なのは、Web フォームが最終的になくなることではありません。Microsoft が、代替プラットフォームを用意する一方で、この先何十年にわたって ASP.NET  も延命させるという決断をしたことです。」

オペレーティングシステムに関連付けられていることから、Web フォーム アプリケーションは今後数十年なくなることはありません。そして、.NET Framework と同様、Web フォーム は .NET Framework に深く関わっているため、Microsoft から公式に廃止されることはないでしょう。そのため、Microsoft がサポートしている限り、Web フォームを用いたアプリケーションを使い続けることは可能です。しかしながら、Classic ASP を使用したアプリケーションと同様、時間が経てば経つほど不安定になっていきます。

どういう影響があるのか?

MVC(または Blazor)用の ASP.NET Web フォーム全体を書き直すという作業は、そのコード量もすでに膨れ上がっている場合が多いことから、非常に手間がかかります。膨大な労力、時間、トレーニング、費用を覚悟しなければなりません。そのうえ、書き直した後に出てくるであろう変化やバグに、開発者が頭を抱えたり、エンドユーザーから不満が噴出したりする可能性も高いでしょう。

このように、リスクは大きく、緊急性もありません。しかし、それでも行うべきなのは、次のような事例があるからです。

事例:Classic ASP

緊急性がない事例としては、Classic ASP を用いたアプリケーションについて説明するのが良いでしょう。

「問題がないから変える必要がない」という理由で、一部の組織では Classic ASP を用いたアプリケーションを未だに使用しています。 そして、実際ソフトウェアは問題なく動作しています。また、、(導入するための作業の手間を惜しまなければ) Azure を搭載した Windows 10で Classic ASP を使用することも可能です(参照:Run Classic ASP on Windows 10 and Azure App Service)。

しかし、Classic ASP を用いたアプリケーションは20年前の技術で実行されるため、今日では次のようなリスクがあります。

  • アプリケーションのコードの中身を把握している人がほとんどいないことから、ソフトウェアの変更には大きなリスクを抱えることになり、多大なコストもかかります。また、コードを変更すると新しいバグが発生する可能性もあります。
  • アプリケーションの維持を行う人材を探すのが、ほぼ無理です。なぜなら、Classic ASP を扱える人材の数は非常に限られているからです。また、経験のない人や過去に使用したことのある人に対してトレーニングを行ったとしても、不慣れなことからミスが発生する可能性があります。
  • 仮に良い人材が見つかったとしても、大抵の場合その人に対して高い報酬を払わなければなりません。魅力的な新しい技術ではなく、古い技術を用いた仕事をしたいと思う人は、ほとんどいないからです。

ASP.NET Web フォームアプリケーションを .NET5 時代に(安全に)維持するには?

1.セキュリティリスクについて考える

Web フォームアプリケーションがインターネット上に公開されていない場合、古いアプリを維持するリスクはほとんどありません。それでも、内部アプリケーションが危険にさらされる可能性があり、脆弱性が発見された場合は、それを変更する必要があります。しかし、この変更にかかるコストは時間が経つにつれて、どんどん高くなっていきます。

2.JavaScript のコード量と、アプリケーションが使用するブラウザの種類を確認する

Web アプリケーションの実行に古いブラウザ(例:Internet Explorer のみ、など)が必要な場合は、デスクトップも制御する必要があります。これは大きな問題ではありませんが、アプリケーションを使用する上で対応すべきことであり、追加コストもかかるため見過ごせません。

JavaScript のリスクを軽減するには、ASP.NET Web フォームアプリケーションを最新の Web ブラウザで動作させるのがおすすめです。アプリケーションを最新の Web ブラウザで問題なく実行できれば、以後も正常に動作するはずです。

3.将来、担当者が変わっても維持できるよう準備しておく

Google が存在する限り、20 年後であっても知りたいことを検索すれば、インターネット上にある数多の Web フォームに関するドキュメントにアクセスできるでしょう。しかし、Web フォームを組織独自の方法で使用している場合は、検索しても解決することはないでしょうし、アプリケーションについて詳しい担当者がずっと同じ会社にいるとも限りません。

そのため、アプリケーションが使用している Web フォームの機能や、それがどのように Web フォームの機能を利用しているのか(もしくはどのような問題を発生させるのか)についてを説明したドキュメントの作成に時間を投資しましょう。こうしたドキュメントを作成しておくことで、Web フォームになじみのない人でも、短時間で効率的に学べます。

Web(HTTP と HTML / CSS / JavaScript)は、20年後もおそらく今と大きく変化はないでしょう。しかし、Web フォームのプログラミングの形については、そうではありません。したがって、Web フォームの使用方法についてほんの数時間かけて書き残しておくことで、将来の誰かが「昔の技術について調べたい」と思ったときに、その人の手間を大幅に節約できます。

自分のWeb フォームアプリケーションが最新のブラウザで正常に動作する場合、アプリケーションを書き直す必要はないかもしれません。しかし、まだ疑問がある方のために、下記では Web フォームの「終わり」に関する Q&A を記載します。。

ASP.NET Web フォームに関する Q&A

Microsoft は ASP.NET Web フォームの代わりに、何の使用を推奨していますか?

MVC または Blazor です。

しかし、MVC または Blazor を使用すると、アプリケーション全体の書き直し、スタッフの再トレーニング、組織が裏でアップデートを行った際に発生する UI(ユーザーインターフェイス)変更による対応も行う必要があります。したがって、組織にそれら全てを行うための余裕がない場合、MVC や Blazor の使用はおすすめできません。

今すぐ書き直す必要がありますか?

Web フォームアプリケーションを今すぐ書き直す必要はありません。 Classic ASP と同様、適切な人材とドキュメントがある場合、Web フォームアプリケーションは2030年代まで維持できる可能性が高いでしょう。

すべて書き直す必要がありますか?

おそらくそうなるでしょう。アプリケーションはそれぞれ異なるため、一概には言えません。ですが、決める際は以下の点を考慮してください。

  • アプリケーションは、どのオペレーティングシステムで実行されているのか(Webフォームの機能は OS に関連付けられています) ?
  • スタッフの(再)トレーニングに、どのくらいの時間と予算を費やせるのか?
  • アプリケーションを書き直すのに、どれくらいの時間がかかるのか?
  • 最重要:アプリケーションが使用される期間はどのくらいか?20年は使用されることを見込んだ新しいアプリケーションの場合、これから古くなっていく技術を使用して開発するのは良い方法とは言えません。

新しいアプリケーションでは ASP.NET Web フォームを避けた方が良いですか?

避けておいた方が良いでしょう。アプリケーションはそれぞれ異なるため、一概には言えません。
しかし、「.NET を用いた開発は .NET 5+(.NET Core の後継)を主流にしていく」という方針が Microsoft から明確に打ち出されています。すぐこれに対処する必要はありませんが、この方向性が変わることはないので、将来的なことを考えると .NET 5+ へと切り替えていくほうが良いでしょう。その際は、次のことを確認して下さい。

  • アプリケーションは、どのオペレーティングシステムで実行されているのか(Webフォームの機能は OS に関連付けられています) ?
  • スタッフの(再)トレーニングに、どのくらいの時間と予算を費やせるのか?
  • アプリケーションを書き直すのに、どれくらいの時間がかかるのか?
  • 最重要:アプリケーションが使用される期間はどのくらいか?20年は使用されることを見込んだ新しいアプリケーションの場合、これから古くなっていく技術を使用して開発するのは良い方法とは言えません。

Microsoft が心変わりして ASP.NET Web フォームが復活することはありますか?

わかりません。Microsoft は過去に決定事項を覆したことがあります。Windows 8 時代の「ユニバーサル Windows アプリ(UWPs)」がそれです。Microsoft は UWPs を「次世代のアプリ」にしたかったようですが、開発者から不満が噴出したため、決定を覆しました(参照:Microsoft Confirms UWP is Not the Future of Windows Apps)。

しかしながら、 「Web フォームについてはそうならない」と思っても差し支えありません。なぜなら、Web フォームは .NET Framework に深く関わっており、このような判断を行う際は、「Microsoft が計画を覆すかどうか」が大きな問題にはならないからです。

これら全て情報を踏まえて決断する

重要なポイント:

  • Web フォームはなくなりません。使い続けられます。 Web フォームはすでにレガシーな技術です。そして、Microsoft が .NET5 を搭載した .NET Core vNext に移行するにつれて、これはより古いものとなっていきます。
  • 組織で中長期に Web フォームを使い続けたい場合でも、色々な方法があります。したがって、現在のアプリケーションを長期間に渡り継続して使用できます。ただし、それを維持するための人材を見つける難しさと、時の経過とともに高まる脆弱性に対処できることが前提です。ASP.NET アプリケーションについては、「10年は持つように計画しておけばいいが、20年は覚悟しておけ」という風に考えておきましょう。
  • 常に長期的な視点を持って、さまざまなシナリオを想定しましょう。自分自身がこのような変更を行う可能性は低いでしょう。しかし、自分が組織を去った後にそのポジションを引き継ぐ人のことを考えておくことで、組織に対して貢献できます。

ベストな方法は、自分のアプリケーションですべきことを棚卸しして、大まかな計画を立てることです。 以前の.NET5 の記事では、移行を計画する際におすすめな方法として、次の 5 つの手順を紹介しています。

  1. 既存のアプリケーションでやることの棚卸しをする
  2. 廃止となるコンポーネントを確認する
  3. 利害関係者と一緒にやることの優先順位を決める
  4. 大まかな移行スケジュールを決める
  5. リリースの速度を上げる

ASP.NET Web フォームに関しては、最初の 3 つの手順に焦点を当てます。利害関係者と一緒に、書き直しを行うスケジュールのざっくりとしたものを作成します。このスケジュールについては、自分がいなくなった後でも進められるようにしておいてください。

自分が組織で働いている間に、ASP.NET Web フォームアプリケーションを書き直す必要性が出ることはないかもしれません。しかし、長期的な視点を持って計画しておくことで、組織の今後の発展に貢献できます。

.NET 5 移行をお考えの場合、.NET 5 移行ガイドを入手しましょう

Web フォームアプリケーションを使用している組織の場合、.NET Framework または .NET Core から .NET 5 へ移行を検討されていると思います。現在 Inedo では .NET 5 へスムーズに移行する方法をまとめたガイドを作成しています。ニュースレターにご登録いただくと、ガイドをいち早く入手できます。また、ご要望やご意見などございましたら、お気軽にご連絡ください。