← 語彙帳トップに戻る
💎

C#

Microsoft主力言語。.NET・Unity・Azure

✅ Web API(ASP.NET Core)✅ ゲーム開発(Unity)✅ Microsoft/Azure環境 ⚠ 超軽量スクリプトには過剰⚠ .NET Framework(Windowsのみ)は新規非推奨
📌 一言で言うと

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#JavaTypeScript
言語の歴史 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++ 経験者には馴染みやすい)。

💬 よくある会議での質問と答え方
Q.C# と .NET の違いは何ですか?
A.**C# は言語**、**.NET は実行プラットフォーム(CLR + ライブラリ群)** です。.NET 上で動く言語は C# の他に **F#**(関数型)・**VB.NET**(レガシー)等があります。.NET の現在の主流実装は **.NET 8 LTS / .NET 9 / .NET 10**(.NET Core 系)。.NET Framework は Windows のみの旧実装で現在 **廃止予定(out of support)**。
Q.ASP.NET Core と ASP.NET(Framework)の違いは?
A.**ASP.NET Core** は **.NET Core 系(.NET 8+)** で動くクロスプラットフォーム・OSS の現行フレームワーク。**ASP.NET Framework**(旧)は **.NET Framework** 上で動く Windows 専用で、新規開発は非推奨です。新規プロジェクトは必ず ASP.NET Core を選んでください。
Q.Unity で C# を使う時の注意点は?
A.Unity は独自バージョンの C#(Unity 6 では **C# 9** 相当)を採用しており、最新機能(records・init-only 等)はすぐには使えません。Unity 標準ライブラリは .NET Standard 2.1 プロファイルで、.NET 標準 API の一部は利用不可。**async/await・LINQ は使える**ので基本機能は揃います。
Q..NET のバージョンはどれを選べばいいですか?
A.新規プロジェクトは **.NET 8 LTS**(長期サポート・2026年11月までサポート)または最新 LTS を選んでください。**.NET 9 / 10** は STS(短期サポート)で 18ヶ月サポート。**.NET Framework(4.x)は新規開発不可**。Microsoft のリリースポリシーは毎年11月に新バージョンが公開され、偶数番号が LTS・奇数番号が STS。
Q.NativeAOT とは何ですか?
A.**.NET 9 で正式サポート**された **Ahead-of-Time コンパイル**。ビルド時にネイティブバイナリを生成し、**.NET アプリ起動を数十ms** に短縮・メモリ使用量を大幅に削減できる。CLI・サーバーレス・コンテナ・Worker Service で有利。EF Core や ASP.NET Core の一部は NativeAOT 対応済み。
🌐 エコシステム

パッケージマネージャ:NuGet(.NET の公式パッケージマネージャ・公式 registry は nuget.org)

主要フレームワーク

  • ASP.NET Core — Microsoft公式の高パフォーマンス Web フレームワーク。**Minimal API**・MVC・Razor Pages・gRPC・SignalR を内蔵(.NET 8+ で現行)
  • .NET MAUI — マルチプラットフォーム UI フレームワーク。Windows / macOS / iOS / Android を単一コードでターゲティング(Xamarin.Forms の後継)
  • Blazor — C# で **SPA・インタラクティブ Web UI** を書くフレームワーク。**Blazor United**(SSR + インタラクティブ統合)が現行
  • Unity — 世界シェア最大級のゲームエンジン。**C# を公式スクリプト言語**として採用。2D/3D・VR/AR・モバイル・コンソール対応
  • WPF / WinForms — Windows デスクトップアプリの伝統的フレームワーク。レガシー Windows アプリ保守では現役(.NET 8 で Windows 専用継続)
  • Entity Framework Core — Microsoft公式 ORM。LINQ で DB クエリを書け、Code First / Database First 両対応(EF Core 9 が現行)

主要ライブラリ

  • xUnit / NUnit / MSTest — .NET 公式・第三者製の単体テストフレームワーク。**xUnit** がモダン・.NET チーム推奨。NUnit はレガシー資産に豊富
  • MediatR — **CQRS / Mediator パターン**のデファクトライブラリ。ASP.NET Core のクリーンアーキテクチャで頻出
  • Serilog / NLog — 構造化ロギングライブラリ。**Serilog** が .NET 8+ で人気、sink 拡張で ElasticSearch / Seq / コンソールに出力
  • AutoMapper — オブジェクトマッピングライブラリ。DTO ⇔ EntityModel の変換を簡略化
  • FluentValidation — 流れるようなインターフェースでバリデーションルールを定義。ASP.NET Core と組み合わせて入力検証
  • Polly — **レジリエンス(リトライ・サーキットブレーカー・タイムアウト)**ライブラリ。HTTP 呼び出しの堅牢化に必須

ランタイム

  • .NET 8 LTS — 現行 LTS。**2023年11月公開・2026年11月までサポート**。本番新規プロジェクトの第一推奨
  • .NET 9 / .NET 10 — 現行 STS。.NET 9 は **2024年11月公開・2026年5月までサポート**。.NET 10 は **2025年11月公開**(LTS に昇格予定)
  • .NET Framework 4.x — Windows のみの旧実装。**新規開発不可・廃止予定**。既存資産の保守目的のみ
  • Mono — クロスプラットフォームの旧ランタイム。**Unity が内部利用**。Xamarin モバイルも Mono ベースだったが .NET 8 + MAUI に統合
💻 コード例

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週間)

  • 基本文法(変数・制御構文・メソッド) — int/string/配列・if/for/while・メソッド定義・Main
  • クラスとオブジェクト指向 — class・フィールド・コンストラクタ・アクセス修飾子(public/private)・this
  • プロパティ・自動実装プロパティ — get/set・自動実装・init-only・records 入門
  • ビルドツール基礎 — dotnet CLI(dotnet new / build / run)・.csproj・NuGet パッケージ参照

中級(目安: 〜1-3ヶ月)

  • コレクションと Generics — List<T> / Dictionary<TKey, TValue> / IEnumerable<T>・LINQ 基礎
  • 例外処理 — try-catch-finally・throw・カスタム例外・using ステートメント
  • async/await と Task — Task・async・await・ConfigureAwait・HttpClient の使い方
  • Nullable Reference Types(NRT) — ? 演算子・! 演算子・null 安全性・null forgiving 演算子

上級(目安: 〜3-6ヶ月)

  • ASP.NET Core 実践 — DI コンテナ・ミドルウェア・Minimal API・EF Core・Authorization
  • async best practices(Stephen Cleary) — ConfigureAwait・ValueTask・キャンセル・並列制御・async void の罠
  • Source Generators — コンパイル時コード生成・Roslyn・partial class・自動実装
  • .NET internals — CLR・GC(ワークステーション/サーバー)・JIT・Tiered Compilation・NativeAOT