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
260
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
Part1 GitHubってなんだろう?その1
tomokusaba
3
790
Part1 GitHubってなんだろう?その2
tomokusaba
2
760
Part2 GitHub Copilotってなんだろう
tomokusaba
2
800
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
770
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
210
Generative AI for Beginners .NETの紹介
tomokusaba
1
300
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
400
.NET Frameworkでも汎用ホストが使いたい!
tomokusaba
0
360
ASP. NET CoreにおけるWebAPIの最新情報
tomokusaba
0
440
Other Decks in Programming
See All in Programming
読書シェア会 vol.4 『ダイナミックリチーミング 第2版』
kotaro666
0
110
Instrumentsを使用した アプリのパフォーマンス向上方法
hinakko
0
250
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
890
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
2
590
データと事例で振り返るDevin導入の"リアル" / The Realities of Devin Reflected in Data and Case Studies
rkaga
3
2.1k
リアーキテクチャの現場で向き合う 既存サービスの読み解きと設計判断
ymiyamu
0
120
OpenTelemetry + LLM = OpenLLMetry!?
yunosukey
1
130
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
1.4k
設計の本質:コード、システム、そして組織へ / The Essence of Design: To Code, Systems, and Organizations
nrslib
10
3.8k
個人開発の学生アプリが企業譲渡されるまで
akidon0000
2
1.2k
Storybookの情報をMCPサーバー化する
shota_tech
3
1.2k
The New Developer Workflow: How AI Transforms Ideas into Code
danielsogl
0
130
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
120
52k
Adopting Sorbet at Scale
ufuk
76
9.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
A Tale of Four Properties
chriscoyier
159
23k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Statistics for Hackers
jakevdp
799
220k
The Cult of Friendly URLs
andyhume
78
6.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Embracing the Ebb and Flow
colly
85
4.7k
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にモダナイゼーションしていこう • とはいえ、そのシステムが続く限り(おそらく)いつかは通る道。や るかやらないかではなく何時やるかの問題
おしまい おしまい