Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASP.NETアプリケーションのモダナイゼーションについて
Search
tomokusaba
April 26, 2025
Programming
0
110
ASP.NETアプリケーションのモダナイゼーションについて
ASP.NETアプリケーションのモダナイゼーションについて
.NETラボ 勉強会 2025年4月
https://dotnetlab.connpass.com/event/350190/
tomokusaba
April 26, 2025
Tweet
Share
More Decks by tomokusaba
See All by tomokusaba
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
200
Generative AI for Beginners .NETの紹介
tomokusaba
1
280
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
380
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
340
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
440
Semantic Kernelのネイティブプラグインで知識拡張をしてみる
tomokusaba
0
240
.NET Conf 2024の振り返り
tomokusaba
0
300
.NET Conf 2024 .NETラボ 勉強会 2024年12月
tomokusaba
1
55
C#/.NETのこれまでのふりかえり
tomokusaba
1
270
Other Decks in Programming
See All in Programming
The Evolution of the CRuby Build System
kateinoigakukun
0
720
Road to RubyKaigi: Making Tinny Chiptunes with Ruby
makicamel
4
440
Vibe Coding の話をしよう
schroneko
12
2.9k
Ruby's Line Breaks
yui_knk
2
1.3k
Making TCPSocket.new "Happy"!
coe401_
1
1.9k
Bedrock×MCPで社内ブログ執筆文化を育てたい!
har1101
6
1.1k
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
680
「”誤った使い方をすることが困難”な設計」で良いコードの基礎を固めよう / phpcon-odawara-2025
taniguhey
0
170
個人開発の学生アプリが企業譲渡されるまで
akidon0000
0
900
VitestのIn-Source Testingが便利
taro28
7
2.2k
On-the-fly Suggestions of Rewriting Method Deprecations
ohbarye
1
3.3k
Lambda(Python)の リファクタリングが好きなんです
komakichi
3
220
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
BBQ
matthewcrist
88
9.6k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
GraphQLの誤解/rethinking-graphql
sonatard
71
10k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
The Cult of Friendly URLs
andyhume
78
6.3k
A Tale of Four Properties
chriscoyier
158
23k
Practical Orchestrator
shlominoach
186
11k
Transcript
ASP.NETアプリケーションの モダナイゼーションについて 草場 友光 .NETラボ勉強会2025年04月
自己紹介 • コミュニティ活動を通じて知識をアッ プデートしています。 • 2022/08-2025 Microsoft MVP (Developer Technologies)
• tomo_kusaba • ドラクエ大好き ドラクエ10のプレイ時間→ 1キャラ目:2615時間 2キャラ目:891時間 3キャラ目:768時間 4キャラ目:190時間(配信用)
注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。 • #dotnetlabでtweetすると左側に表示されます
今日の目的 • まだまだ.NET Frameworkベースのアプリケーションが世の中 にはいっぱいあると思います。 • これらを最新の.NETにモダナイゼーションする動機や手法につい て学んでいきたいと思います。
モダナイゼーションとは? • 老朽化した既存システムを現在のニーズに合うように刷新するこ と • ここでは、.NET Frameworkで構築されたシステムを.NETベー スに刷新し必要に応じてUIを刷新します。
.NET Frameworkベースのアプリケーション • 移行が比較的容易なグループ(.NETにも同様のフレームワークが ある) WindowsForm, コンソール, MVC... • 移行が難しいグループ(.NETに同様のフレームワークがない)
WebForms....
なんで、モダナイしなければならないか? • コストの明瞭化(主にクラウドに移行する場合) • 最新の機能を使用したい • セキュリティの問題 • パフォーマンスの問題
.NET Frameworkにとどまる選択 • メリットを十分に感じられない場合は.NET Frameworkのまま塩漬 けにする選択も • .NETにモダナイズするにはそれなりに開発費用がかかる • メリットによって得られる利益と開発費用によってかかるコストとのバ
ランスによって選択 • とはいえ、そのシステムが未来永劫続くとしたらどこかの時点で.NET にモダナイゼーションすることにはなるかも →やるかやらないかではなく何時やるかの選択
クラウドアプリケーションの場合 • .NET Frameworkのままの場合例えば、コンテナー化するとし てWindowsコンテナーですか?? • App Serviceの場合今はよい。だが、いつまでホストできるの か?? •
セキュリティ面での不安はないか?? • 様々な自動化を推進する上で障害にならないか?
最新の機能を実装したい場合 • AIに関する機能を実装したい場合 一応、Microsoft.Extensions.AIは.NET Framework4.6.1 以降で対応だが言語機能的にいろいろ難しいところも。。。 サンプルなどはたいていC#12以降を念頭に書かれたものが多 く読み替えが必要 たとえば、ストリーミングするのにawait foreachしたいけども
C#8.0など。
.NET Aspireとか使いたいですよね • ローカルの開発段階でダッシュボードがあるだけでもデバッグや テレメトリー情報を使った性能分析ができて便利。 • 開発初期で遅いところを潰しておける効率的な開発ができる。
パフォーマンス改善 • .NETは毎年多くのパフォーマンス改善がされています。 • 特に大規模システムの場合はサーバーのサイジングを小さくでき ることによって得られるコストメリットが大きい
.NETのサポート期間について • .NET FrameworkはOSのサポート期間に準じる • .NETはLST(.NET 8など)はリリースより36ヶ月、STSは (.NET 9など)は18ヶ月
モダナイズにあたってやりたいこと • 既存機能の断捨離 業務プロセスの変化によって必ずしも全機能が使用されていると は限りません。 費用圧縮のためにも機能の見直しは必ず行いましょう。 • 新規機能のフリーズ モダナイズにあたって機能追加などは一旦フリーズしましょう。 モダナイズと設計変更を同時に行うと既存機能を完璧に満たしな
がら機能追加かつモダナイゼーションしなければならなくなり難 易度が上昇します。
モダン化方法の選択肢 • .NET Upgrade Assistant tool ASP.NET(MVC, API), Azure Functions,
WPF, WinForms あたりが対応 必ずしもすべてうまくいくとは限らない • 手動で頑張る Copilotで今はある程度頑張れるかも。。。
.NET Upgrade Assistant tool • 自動で.NET Framework→.NETや.NETのバージョンアップ、 診断などをしてくれるツール • MVC、API、Windows
Forms、WPFが対象 • 独自のコンポーネント・商用コンポーネントを使用しているとまあ まあ手作業が増える
手動で頑張る • 主に、Web Formsで構築されたシステムはこっちで頑張らなけ れば! • とはいえ、最近はGitHub Copilotもあるのでうまく立ち回れば 省力化くらいはできるかも・・・ •
とはいえ、クラス設計とかその辺は人間駆動設計で頑張らないと ぐだぐだに・・・
WebFormsのモダナイゼーションについて • このパターン多い! • 推奨はBlazor Web Apps とはいえ事実上フルスクラッチ Entra IDのテンプレもまだない
つらみ・・・
WebFormsのモダナイゼーションについて • 既存の設計書 or ソースコードをインプットに内部仕様を参考にし てフルスクラッチで設計し直すしか • 既存設計に引っ張られる and 基本設計はある程度Passできる
ので工数的にほぼ新規開発とかわらないレベル感 • 画面設計は再設計を考えた方がいい
クラウドアプリケーションの考慮事項 • 多くのリソースはUTCで動作しています。 JSTを前提にして動作してるアプリケーションは時刻について混 乱します。 • ノンカルチャーで動作します。 日本語カルチャーに依存するメソッドは動作しない・動作が変化す る可能性があります。
タイムゾーンについての設計 • 内部的には日時をUTCで扱う →あらゆるシステムからUTCで日時が取得できるので自然 • 日時を表現する型はDateTimeOffsetを使用する →時差を考慮した表現をしなければいけないので必然 また、TimeProviderから返される型もDateTimeOffsetに なっているので事実上標準 •
表示する時にViewまたはViewに近いところでJSTに変換する
カルチャーについて • stringクラスについては特に要注意 • ローカルの単体テストを単純に実行しただけでは実行結果が変わ ることがある →カルチャーを意識した単体テストの実施が必要
認証・認可における考慮事項 • 古いイントラの中だけで使われていたようなシステムの中には認 証とも言えないようなIDを識別するような仕組みが入っているこ とがままある。
まとめ • 費用対効果を考えて.NETにモダナイゼーションしていこう • とはいえ、そのシステムが続く限り(おそらく)いつかは通る道。や るかやらないかではなく何時やるかの問題
おしまい おしまい