
C#を学んでいくに当たって、.NETとは?と疑問に感じたので自分なりに調べたものをまとめました。
C#と.NETは別物です。C#はプログラミング言語で.NETは実行環境です。
公式では「アプリケーションプラットフォーム」という言い方をしています。
アプリケーションプラットフォームとはプログラミング言語とライブラリがセットになったものとされています。
C#ではソースコードを実行する前にコンパイルをする必要があります。C#で書いたソースコードをコンパイルすると中間言語(ILコード)が作成され、.NETアセンブリファイルに保存されます。
その.NETアセンブリファイルを.NETランタイムが実行します。
つまり.NETとはC#などで作成したアプリケーションを実行するための環境のこととも言えます。
.NETランタイムではC#以外にもF#やVisual Basicという言語もサポートしています。
C#と.NETの関係を例えるなら
-
C#=> 楽譜 -
.NET=> ピアノ
みたいな感じですかね。
SDK(Software Development Kit)のことで、.NETでの開発で必要なものがまとまったもので以下のようなものが含まれています。
- .NETランタイム(プログラム実行用)
- コンパイラー(C#コードを中間言語に変換)
- 開発ツール(dotnetコマンドなど)
- 基本ライブラリ(文字列操作、ファイルI/Oなど)
C#で開発するのであれば必ず.NET SDKをインストールして環境を構築していきます。
かつて.NETには複数の実装がありました:
- .NET Framework:Windows専用のアプリケーションプラットフォーム
- .NET Core:クロスプラットフォーム対応のアプリケーションプラットフォーム
- Mono:軽量・モバイル向けのアプリケーションプラットフォーム
.NET 5からこれらが統合されて単に.NETとなっています。
.NET上で作成する様々なアプリモデル(Webアプリ、ゲーム開発、デスクトップアプリなど)に対応したフレームワークが用意されています。
| カテゴリ | フレームワーク名 | 説明 |
|---|---|---|
| Web | ASP.NET Core | サーバー側ロジックを作成するためのフレームワーク |
| Web | ASP.NET Core MVC | Web ページまたは Web API のサーバー側ロジックを作成するためのフレームワーク |
| Web | ASP.NET Core Razor Pages | サーバーで生成される HTML を作成するためのフレームワーク |
| Web クライアント | Blazor | ASP.NET Core の一部。2つのモード(サーバー側通信またはWebAssembly)でブラウザのDOM操作が可能 |
| デスクトップ | .NET for Mac | ネイティブ UI と API アクセスを使って、Mac デバイス用のアプリを構築 |
| デスクトップ | WinForms | Windows で “battleship gray(鈍いグレー)” スタイルのアプリケーションを作成 |
| デスクトップ | Windows Presentation Foundation (WPF) | 動的デスクトップアプリケーション構築。豊富なアニメーション機能を提供 |
| モバイル | .NET for Android | ネイティブ UI と API アクセスを使って、Android デバイス用のアプリを構築 |
| モバイル | .NET for iOS | ネイティブ UI と API アクセスを使って、iOS と iPadOS 用のアプリを構築 |
| マルチプラットフォーム | .NET MAUI | 1つの共有コードベースから iOS、Android、Mac、Windows 用のアプリを構築 |
.NETとは「プラットフォーム全体」の名前
- プログラミング言語(C#、F#、Visual Basic)
- ランタイム(実行環境)
- 開発ツール(SDK、コンパイラー)
- ライブラリ群(Base Class Library)
- フレームワーク(ASP.NET Coreなど)
Javaと比較すると例えるとこんなイメージ
Java = プラットフォーム全体の名前
├── Java言語
├── JVM(実行環境)
├── JDK(開発キット)
└── Spring等のフレームワーク
.NET = プラットフォーム全体の名前
├── C#言語
├── .NETランタイム(実行環境)
├── .NET SDK(開発キット)
└── ASP.NET Core等のフレームワーク
参考資料
Views: 0

