NTTデータ先端技術株式会社 MS基盤担当 鈴木 友宏 .NET アップグレード アシスタントで 簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション Microsoft MVP for Developer Technologies
Agenda  Introduction  本セッションのゴール  .NET 6 への移行の基本的な手順と問題点  ツールを活用し、移行計画を作成するメリット  ツールを活用した .NET 6 への移行の基本的な手順  Windows Form アプリのテスト移行のデモ  ポイントとまとめ
Introduction .NET に限らず、アプリを最新の環境に移行する場合に最も重要なことは ①作業内容 ②リスク ③実施計画 ④コストを ステークホルダーにわかりやすく説明し、理解と承認を得ることですが… 移行計画 移行先の環境の知見が少ない段階で、これらを調査・理解し、 移行計画を作成するのは困難です… 本セッションでは、 ① .NET Portability Analyzer や .NET アップグレード アシスタントを使い ② .NET Framework アプリを .NET 6 へテスト移行を実施し ③ その結果から移行計画を作成する 基本的手順をデモを交えながらご説明します。
本セッションのゴール ツールを活用してテスト移行を実施し 「移行計画」を作成する手順を理解します ツールを活用した場合の 「移行の基本的な手順」を理解します 移行に際し押さえておくべき ポイントを理解します
.NET 6 への移行の基本的な手順と問題点 移行計画 • .NET 6 で動作しない API の調査 • 移行に必要な作業のリストアップ • 移行に必要な作業量(作業時間)の見積もり 移行実施 • csproj ファイルを .NET 6 対応に書換え • コードを .NET 6 対応に書換え テスト • 自動テスト、手動テストの実施 • 正常動作しないコードの修正 ドキュメントベースの調査は 時間がかかり、低精度になりがち 精度の低い移行計画では 承認をとれず移行を進められません 問題点 少ない手間で可能な限り精度の 高い移行計画を作成する方法は.. 作業内容と作業量が見えず 移行計画を立てるのが困難です 移行計画の承認を取らないと 移行を進められません
ツールを活用し、移行計画を作成するメリット ツールでできること 手作業で行う必要があること .NET Portability Analyzer ・.NET 5 で使用できない(ビルドが通らず代替が必要な) API を特定(現状 .NET 6 未対応) .NET アップグレード アシスタント ・syntax や名前空間の問題でビルドが通らないコードを .NET 6 の新しい構文に変換 • ツールで変換できなかった サポートされていない 構文を修正 • テストが通らない(正常動作しない)コードを修 正 必要な手作業がリストアップされ 移行作業の大まかな見積もりができます ツールでの処理後にビルドが通らないコード 基本的に「手作業が必要な部分」
ツールを活用した .NET 6 への移行の基本的な手順 準備と 調査 • アプリのモダン化、自動テスト作成 • 移行先プラットフォーム(.NET 6)の API の対応状況を .NET Portability Analyzer で確認 テスト 移行 • .NET アップグレード アシスタントでプロジェクトの変換 移行計 画作成 • 「調査」「テスト移行」の結果を活用し移行計画を作成 計画に基 づく移行 • 作成した移行計画に基づき移行を実施 テスト • 自動テスト、手動テストの実施 • 正常動作しないコードの修正 主にこの部分をデモします
Windows Form アプリのテスト移行のデモ 例として、Windows Form アプリを実際にテスト移行しながらツールを活用し た .NET 6 への移行計画を作成する手順の詳細をご説明します。 なお、WPF、ASP.NET、コンソールアプリの移行の場合も手順や考え方は変わ りません。
テスト移行の準備と調査 アプリのモダン化、自動テスト作成 アプリを移行したのち、必ず全てを網羅したテストが必要になります。また、.NET 6 に移行後も 2 年に 1 回最新の .NET への移行が必要になるため、アプリのモダン化(最低でも自動テストが可能な View と ロジックの分離)と自動テスト作成を行うことをお勧めします。 移行先プラットフォーム(.NET 6)の API の対応状況確認 移行先で使用できないクラス・メソッドや UI コントロールを Excel ファイルで出力できます。 (この作業は Visual Studio 上で .NET Portability Analyzer により可能です。※現状 .NET 6 未対応) 調査結果の非対応API を確認することで、移行の難易度、作業量の見当をつけることが可能です。
テスト移行の準備と調査のデモ
ツールによる移行 .NET アップグレード アシスタントによるプロジェクトの移行 コマンドベースの対話形式のツールでステップバイステップの移行ができます。 移行前のプロジェクトもバックアップできるため、何度でもやり直し可能です。 このツールでできることは基本的に以下の3つです。 ・xxx.csproj ファイルのフォーマットとその設定値を新しい形式に変換します ・起動プロセスなどの定型的なコードを .NET 6 の新しい構文に変換します ・名前空間の変更などによる足りない参照を追加します ツールで移行することで、正常動作するかは別として、手作業でビルドエラーを修正しなければいけ いない箇所がわかります。
ツールによる移行のデモ
移行計画の作成 「調査」「テスト移行」の結果を活用し移行計画を作成 ツールでの変換後にビルドエラーが出ている箇所、警告が出ている個所は API の互換性がないなど、 手作業での移行が必要な場所です。 エラーや警告をリストアップし、それぞれに応じた対応策を検討していきます。
ポイントとまとめ ① おおまかでよいので、根拠のある移行計画を作成することで移行を進 めやすくなります ② 机上の調査を実施するより、ツールを利用したテスト移行を実施した 方が簡単に具体的な情報が手に入るので、まずは実施します ③ .NET 環境では LTS でも3年のサポートとなり、自動テストが導入さ れていない場合、移行後のメンテナンス負担が大きいので、少しづつ でも導入をお勧めします
【付録】今回使用したツール・リポジトリ .NET Portability Analyzer Visual Studio Extension https://marketplace.visualstudio.com/items?itemName=ConnieYau.NETPortabilityAnalyzer GitHub リポジトリ https://github.com/microsoft/dotnet-apiport .NET アップグレード アシスタント(コマンド実行でインストール) dotnet tool install -g upgrade-assistant デモのリソース一式 https://github.com/TomohiroSuzuki128/net-upgrade-assistant-tutorial
以上となります。 ご視聴ありがとうございました。
◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に 対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。 ◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 ◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うこと は、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではあり ません。 ◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給さ れる場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 ◼ Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。

【BS15】.NET アップグレード アシスタントで簡単にできます! .NET Framework アプリの .NET 6 へのマイグレーション