これまでの業務でC#を使用してきて「.NET」という単語は耳にしていましたが、「.NETって何?」「C#とどんな関係があるの?」とわからない部分が多かったため、調べてまとめてみました。
.NET初心者の方向けに分かりやすく解説していきます。
「.NET」とは、Microsoftが開発したアプリケーション開発プラットフォームです。Windowsだけでなく、複数のOSで動作するクロスプラットフォームの仕組みとなっています。
主な特徴とメリット
.NETの主な特徴とそのメリットを以下にまとめてみました。
- クロスプラットフォーム対応
-
特徴:上でも触れましたが、現在の.NETはクロスプラットフォームに対応しており、Windowsだけでなく、Linux、macOS、Android、iOSでも動作します。
メリット:複数のプラットフォームをターゲットにした開発が可能になり、一度書いたコードを多くの環境で実行できます。
- 多言語対応
-
特徴:複数言語に対応しており、主にC#、F#、VB.NETなどを使っての開発が可能です。
メリット:複数の言語間での互換性を保てるため、言語間の移行がスムーズになります。
- 高パフォーマンス
-
特徴:JIT(Just-In-Time)コンパイルにより最適化され、高速に動作します。
メリット:サーバーサイドの処理や大量のデータを扱うようなパフォーマンスが重要なシステムで力を発揮します。
デメリット
.NETには多くのメリットがある反面、デメリットもあります。
- ランタイム依存
-
.NETアプリケーションは、実行時に.NETランタイム(実行環境)が必要です。
ユーザーのPCに.NETランタイムがない場合は動作しないため、インストールする必要があります。 - オープン性に劣る
-
.NETはオープンソースとして公開されていますが、開発の方向性などの決定権はMicrosoftにあります。
そのため、システムの変更や終了などのリスクがあり、「今後も安心して使えるか?」という長期的な技術選定への不安要素となり得ます。
何が作れるの?
.NETは複数のプログラミング言語に対応していることや、拡張性が高いことから様々な開発に使用されています。主な使用例は以下です。
・Webアプリケーション
・デスクトップアプリ
・モバイルアプリ
・クラウドアプリ
・ゲーム
.NETの進化
.NETについて調べていく中で、「”.NET” と “.NET Framework” と “.NET Core”って何が違うの?」と疑問に思ったのでこちらで少し説明していきます。
- ①.NET Framework
- まず初めに生まれたのが、「.NET Framework」です。
2002年にリリースされ、2022年までの間バージョンアップを重ねてきました。
こちらはWindows専用で、マルチプラットフォームには非対応となっています。 - ②.NET Core
- 「.NET Core」は2016年にリリースされました。
従来の「.NET Framework」とは別物として開発されており、ここでマルチプラットフォーム(Windows / Linux / macOS)への対応が可能になりました。 - ③.NET
- 2020年には既存の「.NET Framework」と「.NET Core」を統合し、「.NET 5」がリリースされました。以降は、「.NET + バージョン番号」でバージョンアップされています。
現在は.NET 9までリリースされています。
「.NET Core」は現行の「.NET」に統合されましたが、
「.NET Framework」は今も現役で動いています。
(将来的にはすべて「.NET」に移行される予定です。)
.NETの構成要素は大きく分けて以下の4つです。
.NETではC#、F#、VB.NETなどの複数言語での開発が可能なため、ルールを決めておくことによって各言語の互換性を保っています。
CLRとは、.NETアプリケーションを実行するための仮想マシンのことで、コードを中間言語にコンパイルしてから実行します。
一度共通の中間言語にコンパイルされることによって、プログラミング言語に依存しない開発や実行が可能になります。
フレームワーク | 用途 |
---|---|
ASP.NET | Webサイト、WebAPI |
Blazor | Web UI |
Windows Forms | デスクトップアプリ |
WPF(Windows Presentation Foundation) | 高機能デスクトップアプリ |
.NET MAUI(Multi-platform App UI) | クロスプラットフォームアプリ |
Console App | バッチ処理、ツール作成 |
Unity | ゲーム開発 |
.NETの概要をつかんだところで、C#と.NETの関係性について考えていきます。
これまで自分は「C#=.NET」という認識でいましたが、そうではありません。
上で説明してきたとおり、
C# = プログラミング言語であり、.NET = 開発プラットフォームです。
ただ、もともとC#はMicrosoftが.NET上で使うことを想定して作った言語であるため、
普通通り開発を行う場合は C#.NET(.NET上で動くC#プログラム) の環境になります。
概念として、C# = C#.NET ではないが、C#と言ったらほぼほぼC#.NETだと考えて問題ないと思われます。
ここまで、.NETの概要とC#との関係性について説明してきました。
.NETを学ぶことで、さまざまな開発分野に対応できるスキルを身につけることができ、クロスプラットフォーム対応のアプリ開発やクラウド技術、ゲーム開発など、多岐にわたる分野で生かすことができます。
この記事が自分と同じような「そもそも.NETってなに?」というような疑問を抱えている方の助けになれば幸いです!
Views: 2