Skip to main content
.NETの過去と現在
株式会社SAKURUG
エンジニアリングユニット
草場 友光
.NET ラボ 2021年10月
自己紹介
• 普段は主にWebFormsアプリの
保守のお仕事をしてます。
• 古めのシステムが多いので時
代に取り残されぬよう新しい
技術を一つでも入れるよう
日々努力しています。
• tomo_kusaba
宣伝
【VISION】ひとの可能性を開花させる企業であり続ける
VISIONに共感できる仲間募集中。
注意
• 個人の見解・解釈が多分に入っています。
• 見解の相違・事実誤認などありましたらご指摘ください。
今回の目標
• 主目標
• .NETの過去を通じて現在の位置づけを知る
• 来月に.NET 6がリリースされます
• これまでの.NETについて振り返りをしましょう
代表的な実装
名称 動作プラットフォーム 主なアプリケーションタイプ
.NET Framework Windows WinForms,ASP.NET(WebForms,MVC),WPF
.NET(.NET Core) Windows,MacOS,iOS,Android,L
id,Linux
WinForms,ASP.NET(MVC,Blazor),WPF,UWP,MAU
P,MAUI
Mono Windows,MacOS,iOS,Android,L
id,Linux
Xamarin
.NET Frameworkのはじまり
• 2002年1月5日 .NET Framework1.0リリース
• Windows98、NT4.0、2000、XP向け
• 今から考えるといろいろないないづくしの
• ジェネリックコレクションもない
• LINQもない
• 挿入文字列もない
• 自動プロパティもない
• 拡張メソッドもない
• ラムダ式もねー
• おらおこんなふれーむわーくいやだ
当時のJavaとの比較
• 2002年当時のJavaは1.4
• ジェネリックコレクションなし
• Linqなし
• その他諸々なし
• 当時のライブラリ水準とすれば劣っていたわけじゃない
.NET Mono
• 2004年12月15日 Mono1.0リリース
• プロジェクトの目標
• FreeBSD、Windows、MacOSXで動作するオープンソースのクロスプ
ラットフォーム.NET Framewrok実装を実現する
• 後に.NET Coreの立ち上げによりプロジェクトとしての存在意義は
失っていく
• 事実上、Xamarinで広く使われているプラットフォーム
.NET Frameworkの強化(実行環境)
バージョン 内容
1.1 バグ修正のみ
2.0 ジェネリック関連の命令追加
4.0 性能改善
4.5 性能改善とWinRTへの対応
4.8 JITコンパイラの最適化
大きな修正があったのは2.0のみ
.NET Frameworkの強化(ライブラリその他)
バージョン 内容
1.1 バグ修正 IPv6
2.0 ジェネリックコレクション追加 ClickOne ASP.NETでの新しいコンポーネント
64ビットサポート
3.0 WPF、WCF、WFなど追加
3.5 LINQ追加、ASP.NET AJAX追加
3.5SP1 ADO.NET Entity Framework追加
4 dynamic関連 並列関連の追加
4.5 async/await関連の追加
4.6 WPFのHDPIサポート強化
4.7 WinFormsの高DPIサポート
4.8 WPFの高DPI機能強化
実質的に.NET Frameworkのフラッグ
シップ言語であるC#の歩みと同期して
る
.NET Frameworkの強化(C#と対比)
.NET Framework .NET (Core) C# Visual Studio
1.0 1.0 .NET 2002
1.1 1.1 .NET 2003
2.0 2.0 2005
3.5 3.0 2008
4 4.0 2012
4.5 .NET Core Profile 5.0 2013
4.6 1.0 6.0 2015
4.7 7.0 2017
2.0 7.1 2017 15.5
2.1 7.2 2017 15.8.6
4.8 2.2 7.3 2017 15.9
.NET Frameworkの強化2(C#と対比)
.NET Framework .NET (Core) C# Visual Studio
3.0 8.0 2019 16.0
5.0 9.0 2019 16.8
6.0 10.0 2022
Nuget
• .NET環境で用いられるパッケージマネージャ
• 2010年Nupackから改称されApacheライセンスに基づいて配布
されている
• Visual Studio2012以降は標準で含まれている
• パッケージの探索や取得、手元の開発環境への展開や最新版へ
の更新や任意のバージョンへの更新などを容易に行うことがで
きる
.NET Frameworkのバージョン互換性
CLR .NET Framework
1.0 1.0
1.1 1.1
2 2.0/3.0/3.5
4 4/4.5/4.6/4.7/4.8
IISにおいても現状アプリケーション
プールの設定で.NET Framework4系
および2系のバージョンに対応してる。
.NET Core系はマネージコードなしで
動作する
.NET私的ないと困る機能 ベスト10
1 ジェネリックコレクション List<T>など C#2.0
2 自動プロパティ public string Name {get; set;} C#3.0
3 LINQ C#3.0
4 暗黙的型付け var C#3.0
5 ラムダ式 C# 3.0
6 Nullable型 int? C#2.0
7 非同期処理(async/await) C#5.0
8 文字列挿入 C#6.0 →C#10.0で特定条件で高速化
9 拡張メソッド C#3.0
10 タプル C#7.0
.NET 私的NO.1フレームワーク
• ASP.NET Web Forms
• もともと、Borland Delphiの開発部隊がMicrosoftに移籍して.NET
Frameworkを作ったという歴史的経緯としてWindowsFormsこそ原点
• WindowsFormsの開発平易性をWebの世界に持ち込んだWebFormsは
非常に画期的であったといえる。
• とはいえ、今となってはUnitTest、自動テストがやりにくいフレーム
ワークというのも確か
.NET Frameworkの終わり
• .NET Framework4.8が2019年4月18日にリリース。
• 本バージョンにてメジャーアップデート終了
• バグ修正やセキュリティ修正は継続
• Windowsへの搭載は継続
• Windows Server2023へも搭載継続
• まだ少なくとも10年間はバグ修正・セキュリティ修正のサポートあり
• →あえて.NET Frameworkで塩漬けという選択肢もある
• メインストリームとしては.NET5へ統合
• 本来はMonoの統合も.NET5でされる予定だったが、COVID-19および
そのほかの問題で延期
.NET Coreのはじまり
• 2016年6月27日 .NET Core1.0 リリース
• 名称が示すとおり.NET Frameworkのサブセットとして開発が進めら
れた
• 当面はサーバーサイドでの利用を想定されていた(ASP.NET Core)
.NET Coreの機能強化
2.0 ランタイムおよびフレームワークの性能向上
C#7.1のサポート
2.1 ビルドパフォーマンス向上
Windows互換機能パック
Span<T>
Blazor
2.2 JITコンパイラの機能強化
3.0 WinFormsおよびWPF、UWPのサポート
Blazor Server
ReadyToRunイメージ
C#8.0のサポート
3.1 マイナー強化 LTS
(Blazor WebAssembly)
5.0 .NET Frameworkとの統合
C#9.0
.NET 5での機能強化
• .NET Frameworkと.NET Coreを統合
• Entity Framework Core 5.0
• C#9.0のサポート
• System.Text.Jsonの新機能
• F#の更新
• VisualBasicの更新
• パフォーマンス向上
.NET Coreから.NETへ
• 名前から「Core」が取れた
• もともと、.NET Frameworkの「Core」な部分を移植してマ
ルチプラットフォーム化したもの
• 「Core」が取れたことで主要な機能を移植完了した宣言
そして.NET6へ
• Xamarinから.NET MAUIへ
• ただし、.NET MAUIのGAは2022年第2四半期
• NET マルチプラットフォーム アプリ UI (.NET MAUI) の更新 -
.NET ブログ (microsoft.com)
• .NET Framework・Monoを.NET6へ統合
• ついに「One .NET」
.NET MAUI
• .NET Mulit-Platform App UI
• 単一のソースコードでWindows、macOS、iOS、Androidのネイティ
ブユーザインターフェースを実現
• Xamarinの後継
• Blazor desktop apps
• BlazorのWeb技術でアプリケーションを構築しWebViewコンポーネン
トの上で実行することでネイティブアプリのような使い勝手を実現
Coming Soon .NET 6
• .NET Conf 2021で。。。
参考
• .NET Framework のバージョン対応表
• .NET Core
• .NET Framework
• Mono (ソフトウェア)
• C# によるプログラミング入門
• .NET のドキュメント
• .NET Framework ドキュメント
おしまい
おしまい