Microsoft主力言語。.NET・Unity・Azure
26年進化するMicrosoft主力言語。.NET・Unity・Azureを縦断
2000年に Anders Hejlsberg(Delphi/Turbo Pascal の作者)が Microsoft で公開したオブジェクト指向言語。ECMA-335(Common Language Infrastructure)に準拠し、JIT コンパイルで動く .NETMicrosoft のアプリケーションプラットフォーム。CLR(共通言語ランタイム)+ 標準ライブラリ群。現行は .NET 8 LTS。.NET Framework(Windows のみ)は廃止予定 プラットフォームの主力言語として設計された。Visual Studio と .NET Framework(Windows 専用・レガシー)の組み合わせで Windows デスクトップ開発の標準となり、2014年の .NET Core(クロスプラットフォーム・OSS)公開以降は対応プラットフォームとOSS化が急速に進み、2020年の .NET 5 で両者を統合して単一の .NET に統一された(偶数番号が LTS・奇数番号が STS)。 現在(2026年)は .NET 8 LTS / .NET 9 / .NET 10 世代で C# 14 が最新。Nullable Reference TypesC# 8 で導入された null 安全機能。string(非 null)と string?(null 許容)を型システムで区別し、コンパイル時に警告(null安全)・async/await(非同期)・LINQLanguage Integrated Query。C# 言語に統合されたクエリ構文。コレクション・DB・XML を統一的な記法で扱える(Select/Where/OrderBy)(コレクション関数型操作)・record 型(イミュータブルデータ)・Source Generator など、Java や Kotlin と並ぶ近代的な機能を備える。 用途は ASP.NET Core(Web API)・Unity(ゲーム・世界で最も使われているゲームエンジン)・.NET MAUI(モバイル/デスクトップ)・Azure 連携(クラウド)と極めて広く、Microsoft エコシステムの中心。
Web API(ASP.NET Core):ASP.NET Core は高パフォーマンスなクロスプラットフォーム Web フレームワーク。Microsoft の docs で『最速の .NET Web フレームワーク』とされ、**Minimal API**・**gRPC**・**SignalR** まで一通り揃う。
ゲーム開発(Unity):Unity は C# を公式スクリプト言語として採用。世界シェア最大級のゲームエンジンで、スマホ・インディー・VR/AR まで C# で開発される。**Unity 6** が現行(2025年公開)。
クラウド / Azure 連携:Azure SDK for .NET・**Aspire**(クラウドネイティブアプリスタック)・Azure Functions・Cosmos DB 等、Microsoft Azure サービス群のファーストクラス言語。
デスクトップ・モバイル(.NET MAUI):.NET MAUI で Windows / macOS / iOS / Android を単一コードでターゲティング。レガシーでは WPF / WinForms も現役。
CLI / Worker Service / IoT:.NET は **Ahead-of-Time コンパイル(NativeAOT)** 対応で、シングルバイナリの CLI や Linux Worker Service を高速起動できる。ML.NET で機械学習も .NET 完結。
| 観点 | C# | Java | TypeScript |
|---|---|---|---|
| 言語の歴史 | 26年(2000-)・MS主力 | 31年(1995-)・JVMの原点 | 13年(2012-)・JS拡張・MS製 |
| 型システム | 強い静的型・null安全(NRT) | 強い静的型・null安全(@NotNull等) | 構造的型・any/unknown |
| クロスプラットフォーム | .NET 8+で完全対応(Win/macOS/Linux) | JVMで完全対応 | ブラウザ+Node.js/Deno/Bun |
| ゲーム開発 | Unity公式・世界最大シェア | 非対応(libGDX等は代替) | 非対応(Phaser等は代替) |
| エコシステム規模 | 巨大(NuGet・MS支援) | 最大(Maven Central・25年蓄積) | 巨大(npm) |
| Web フレームワーク | ASP.NET Core(高パフォーマンス) | Spring Boot(業界標準) | Next.js / Express 等 |
| 向いている場面 | Microsoft/Azure環境・Unity・Web API | 大規模基幹・Android(既存) | Webフロント・フルスタック |
選ぶ理由:
Microsoft エコシステム(.NET・Azure・Visual Studio・Unity)との統合度が最強クラス。ASP.NET Core は TechEmpower ベンチマークで常に最上位。Nullable Reference Types による null 安全性・async/await の言語サポート・LINQ の表現力・record 型 の簡潔さはモダンな書き心地を実現。Unity 公式・Azure ファーストクラス採用・NativeAOT で起動高速。Visual Studio のデバッグ体験は業界屈指。
選ばない理由:
Microsoft エコシステム外では .NET の恩恵が薄く、Linux サーバ運用は依然 Java/Go/Rust に劣る場面も。.NET Framework(Windows のみ)は廃止予定で新規採用不可、.NET 8 以降を選ぶ必要。Mono は歴史あるが .NET 主流への移行が推奨。学習コストは中程度(Java/C++ 経験者には馴染みやすい)。
パッケージマネージャ:NuGet(.NET の公式パッケージマネージャ・公式 registry は nuget.org)
主要フレームワーク:
主要ライブラリ:
ランタイム:
Hello World(クラス + Main)
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, C#!");
}
}
async/await(非同期処理)
using System.Net.Http;
using System.Threading.Tasks;
async Task<string> FetchAsync(string url)
{
using var client = new HttpClient();
string body = await client.GetStringAsync(url);
return body;
}
LINQ(コレクション関数型操作)
using System.Linq;
var topScorers = users
.Where(u => u.IsActive)
.OrderByDescending(u => u.Score)
.Take(10)
.Select(u => u.Name)
.ToList();
record 型(イミュータブルデータ・C# 9+)
public record Point(int X, int Y);
public record User(string Name, int Age);
var p = new Point(1, 2);
var p2 = p with { X = 3 }; // with 式で非破壊更新
インターフェース + DI(ASP.NET Core風)
public interface IUserRepository
{
Task<User?> GetByIdAsync(int id);
}
public class UserService(IUserRepository repo)
{
public async Task<string> GetNameAsync(int id)
{
var user = await repo.GetByIdAsync(id);
return user?.Name ?? "anonymous";
}
}
// Program.cs(DI 登録)
builder.Services.AddScoped<IUserRepository, UserRepository>();
初級(目安: 〜2-3週間)
中級(目安: 〜1-3ヶ月)
上級(目安: 〜3-6ヶ月)