.NET 6の現状を把握し、具体的な移行方法を学ぶ連載。今回は、.NET 6で新規開発、移行できるアプリの技術についてまとめる。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
.NET Framework が2002年にリリースされてから20年という歳月が流れ、当初はWindows専用でコンソールアプリやデスクトップアプリ、Webアプリのみ開発可能だったものが、.NET 6では、WindowsやLinux、macOS、iOS、Androidなど多様なプラットフォーム上で、Webアプリ、IoT、ゲームといったアプリを開発できるようになりました。さらに、例えばWebアプリを開発する場合でも、複数の技術を利用できます。
その半面、あまりにできることが多過ぎて、アプリを開発するときに自分のシナリオに合った技術を選択するために全貌を把握するのが困難になっています。
.NET 6の現状を把握し、具体的な移行方法を学ぶ本連載「.NET 6移行入門」。今回は新規アプリを開発するシナリオでも.NET Frameworkから.NET 6に移行するシナリオでも、どのワークロードを利用すればよいか迷わないように、ワークロードの種類と特徴について概要を整理します。
逆にワークロードごとの詳細な情報は公式ドキュメントも充実しており、検索できるので、そちらを参照していただければと思います。
下記の表の通り、.NET 6は、ほとんどの.NET Frameworkのワークロードに対応していますが、一部対応していないワークロードがあります。また.NET 5や.NET 6で新規に登場したワークロードもあります。
以降、ワークロードごとの特徴を解説します。なお、移行についても述べますが、ここでの「移行」とは、あくまでも.NET Frameworkアプリのソースコードを.NET 6でビルドして動かせるようにする最低限度の移行作業を意味します。アプリのモダナイゼーションを本格的に進める場合、さらに追加の作業が必要となるのでご留意ください。
コンソールアプリは.NET 6でも引き続きサポートされます。「最上位レベルのステートメント」「暗黙的なusingディレクティブ」「グローバルusingディレクティブ」といった新機能によって、.NET Framework時代より簡潔にアプリのコードを記述できます。
もちろん、以前と同じスタイルでもコードを記述できます。.NET Upgrade Assistantに対応しており、.NET Frameworkアプリから移行する手間が少なく、比較的容易な移行が可能です。
.NET Framework時代はWindows専用でしたが、.NET 6ではWindows、Linux、macOSで利用できます。
Windowsフォームアプリは既に過去のものというイメージがあるかもしれませんが、.NET 6世代でも新規コントロールの追加や新機能の追加など手厚くサポートされており、現役で利用可能です。
Windowsフォームの利点は何といっても初心者でも素早くアプリを開発できることなので、「WPF(Windows Presentation Foundation)やWinUI 3の難易度が高い」と感じた場合や、小規模のアプリなら、Windowsフォームを新規アプリに使用しても全く問題ありません。
MVVM(Model View ViewModel)のようなUIとロジックの分離についても公式のライブラリがないので多少手間がかかりますが、検索すれば多くの情報があるので、それを参考にCommandやViewModelのベースを自前実装してしまえば分離可能です。
.NET FrameworkのWindowsフォームアプリからの移行先としても、.NET 6のWindowsフォームアプリを第一選択肢としてお薦めします。.NET Upgrade Assistantに対応しているので移行の一部を自動化できます。
.NET FrameworkのWindowsフォームアプリを.NET 6のWPFに移行する場合、結局大幅な改修となるので、移行ではなく新規で開発した方がよいでしょう。
Windowsデスクトップアプリを新規で開発する場合、WPFとWinUI 3のどちらを使うか選択することになります。公式の推奨はWinUI 3ですが、UWP(Universal Windows Platform)系のGUIライブラリの方針が短期間で変わっているといった理由から、WinUI 3が今後も安定してサポートが継続されるかどうかは少し疑問があります(新たなライブラリが発表され、WinUI 3が更新されなくなってしまう懸念)。
逆にWPFは今後も長期間にわたってサポートされ続けることが予想されるので、PC上でマウス操作するアプリを開発するならWPFが無難といえます。なおWPFは、タッチ操作が一般的になる前にリリースされたライブラリなので、タッチ操作にフレンドリーな設計になっていません。タブレットでタッチ操作する前提のアプリを開発する場合、WinUI 3の方がお薦めです。
.NET FrameworkのWPFアプリの移行先としては.NET 6のWPFアプリが推奨されます。
これからUWPアプリを新規で開発するなら、UWPアプリではなくWinUI 3アプリが推奨となります。UWPはPC以外のWindowsデバイスでの動作も視野に入れていましたが、Windows Phoneが終了し、Surface Hubもあまり普及していないので、UWPを新規で採用する理由はほぼありません。
MicrosoftもUWPが実質的に互換性維持のために提供される状態になったことを意図する説明をしています。既存アプリのアップグレードをする場合は、WinUI 3に移行します。
WinUI 3は2022年現在でアプリ開発に採用する場合、少し慎重な判断が必要です。
WinUI 3はWindowsデスクトップアプリとUWPアプリを開発できます。公式の推奨はWinUI 3ですが、UWP系のGUIライブラリは短期間で繰り返し方針が見直されていることから、WinUI 3が今後も長期間安定して利用できるかどうか疑問です。ユーザーに受け入れられず、さらに新たなライブラリが発表されて更新されなくなる懸念があるので、ユーザーに受け入れられてしっかり普及するかどうか、もうしばらく様子見でもよいと考えます。
WinUI 3はUWPをベースにしており、使い勝手がWPFとは違う部分があるので、WPFに慣れていてWPFで事足りる場合、WPFを採用する方が無難です。
ASP.NET Web Formsは、.NET Frameworkでのみ開発できます。.NET 6に後継はありません。現在、新規のWebアプリを開発する場合、ASP.NET Web Formsを選択することはありません。
ASP.NET Web Formsアプリを.NET 6に移行する場合、移行先としてはBlazor Serverアプリが案内されていますが、「移行」という範囲を超えたコードの書き換えが必要になります。あくまでも「これまでASP.NET Web Formsで開発してきた人にとって、Blazor Serverアプリの設計思想は理解しやすい」という意味での案内です。
ASP.NET Web Formsは今後も.NET Framework 4.8のサポートが終了するまでサポートされるので、可能な限り現行のアプリを延命することが第一の選択肢です。
どうしてもASP.NET Web Formsアプリを.NET 6に移行したい場合、ASP.NET Core MVCアプリ、Blazor Serverアプリ、Blazor WebAssemblyアプリのどれかに移行することになります。
ASP.NET Core MVCアプリを新規で開発する場合、.NET 6でもASP.NET Core MVCアプリとしてサポートされているので問題なく開発できます。
ただし、新規アプリを開発する場合、最初にサーバ上でロジックを実行し、Webページのレンダリング結果をクライアントに送信する従来型のWebアプリかブラウザでUIロジックの大部分を実行し、Web APIを介してサーバと通信するシングルページアプリ(SPA)を選ぶ必要があります。その上で、従来型のWebアプリならASP.NET Core MVCを、SPAならBlazor ServerアプリまたはBlazor WebAssemblyを選択します。
Webアプリのテクノロジーの選択については下記も参考になります。
移行の場合、.NET Upgrade Assistantに対応しているので、移行プロセスの一部は自動で実行できます。なおASP.NET Core MVCでは、起動プロセスの取り扱いとJavaScriptやCSSの配置方法が変更されているので、書き換えが必要です。
Copyright © ITmedia, Inc. All Rights Reserved.