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
340
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
GitHub Copilot の概要
tomokusaba
1
160
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
450
Azure AI Foundry Agent Serviceを使用してコードファースト アプリを構築する
tomokusaba
1
290
Part1 GitHubってなんだろう?その1
tomokusaba
3
950
Part1 GitHubってなんだろう?その2
tomokusaba
2
920
Part2 GitHub Copilotってなんだろう
tomokusaba
2
1k
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
930
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
270
Generative AI for Beginners .NETの紹介
tomokusaba
1
320
Other Decks in Programming
See All in Programming
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
360
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
1k
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
640
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
170
VS Code Update for GitHub Copilot
74th
2
640
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
140
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
13
3.5k
5つのアンチパターンから学ぶLT設計
narihara
1
170
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
770
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
130
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
220
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
510
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Docker and Python
trallard
44
3.5k
Git: the NoSQL Database
bkeepers
PRO
430
65k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Typedesign – Prime Four
hannesfritz
42
2.7k
Become a Pro
speakerdeck
PRO
29
5.4k
GitHub's CSS Performance
jonrohan
1031
460k
Bash Introduction
62gerente
613
210k
Scaling GitHub
holman
460
140k
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にモダナイゼーションしていこう • とはいえ、そのシステムが続く限り(おそらく)いつかは通る道。や るかやらないかではなく何時やるかの問題
おしまい おしまい