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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
tomokusaba
April 26, 2025
Programming
430
0
Share
ASP.NETアプリケーションのモダナイゼーションについて
ASP.NETアプリケーションのモダナイゼーションについて
.NETラボ 勉強会 2025年4月
https://dotnetlab.connpass.com/event/350190/
tomokusaba
April 26, 2025
More Decks by tomokusaba
See All by tomokusaba
薬屋のひとりごとからみるプロジェクトにおけるコミットの方法
tomokusaba
1
32
Webアクセシビリティは“もしも”に備える設計
tomokusaba
0
180
WebアクセシビリティをCI/CDで担保する ― axe DevTools × Playwright C#実践ガイド
tomokusaba
2
290
Azure Portalのアクセシビリティを探ってみた
tomokusaba
1
74
聲の形にみるアクセシビリティ
tomokusaba
1
220
Webアクセシビリティ技術と実装の実際
tomokusaba
0
300
プロダクトでもバイブコーディングしようぜ!
tomokusaba
0
37
M5Stackで猫耳光らせよう!
tomokusaba
0
130
コンピューティングリソース何を使えばいいの?
tomokusaba
1
53
Other Decks in Programming
See All in Programming
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
110
Redox OS でのネームスペース管理と chroot の実現
isanethen
0
550
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
250
飯MCP
yusukebe
0
490
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
130
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
190
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
220
의존성 주입과 모듈화
fornewid
0
110
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
610
Running Swift without an OS
kishikawakatsumi
0
680
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
230
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
370
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Paper Plane
katiecoart
PRO
1
49k
Crafting Experiences
bethany
1
110
Unsuck your backbone
ammeep
672
58k
Practical Orchestrator
shlominoach
191
11k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
4 Signs Your Business is Dying
shpigford
187
22k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
510
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
330
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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にモダナイゼーションしていこう • とはいえ、そのシステムが続く限り(おそらく)いつかは通る道。や るかやらないかではなく何時やるかの問題
おしまい おしまい