プログラミング言語

C#

Microsoft(Anders Hejlsberg) / 2000年登場

Microsoft の .NET 言語。言語機能が豊富で書きやすく、業務アプリ・Web バックエンド・ゲーム(Unity)まで幅広い。

3つの要点
TL;DR
  1. Microsoft の .NET 製マルチパラダイム言語。
  2. 言語機能が豊富で生産性が高い。
  3. Unity でゲームを作るなら C# が定番。

基本情報

仕様と特徴

C# のロゴ
製品・技術の概要C#Microsoft の .NET 言語。言語機能が豊富で書きやすく、業務アプリ・Web バックエンド・ゲーム(Unity)まで幅広い。
型付け
静的強い型付け
実行方式
.NETJIT / AOT)
パラダイム
マルチパラダイムOOP + 関数)
登場
2000年Microsoft(Anders Hejlsberg)
この言語の強み
言語機能が豊富で生産性が高い.NET の高性能・統合エコシステム
活躍する領域
業務アプリWebASP.NET)ゲーム(Unity) / デスクトップアプリ

選定ガイド

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

採用に向く条件

選ぶ理由

  1. 言語機能が豊富で生産性が高い
  2. .NET の高性能・統合エコシステム
  3. Unity でゲーム開発の定番

事前に確認する条件

考慮すべき点

  1. 歴史的に Windows 寄り(現在はクロスプラットフォーム)
  2. ランタイムが大きめ

向いている用途

こんな用途に向く

業務アプリ・Web(ASP.NET)ゲーム(Unity)デスクトップアプリ

詳しい解説

もっと詳しく

どんな言語か

C#(シーシャープ)は 2000 年に Microsoft が公開した言語で、設計は Anders Hejlsberg が主導しました。.NET というプラットフォーム上で動くことを前提に作られ、Java の影響を受けつつ、より新しい言語機能を積極的に取り込んできた点が特徴です。

C# の核心は「言語機能の豊富さと生産性」です。プロパティ、async/await による非同期処理、LINQ によるデータ操作など、よく使う処理を言語レベルで簡潔に書ける仕組みが揃っています。書きたいことを少ないコードで安全に表現できるため、業務アプリ開発で高い効率を発揮します。

横にスクロール

C# ソースを Roslyn が CIL とメタデータへ変換し、CLR が読み込み、JIT と GC を使って実行する経路、および通常配布と Native AOT の違い
C# は通常、CIL とメタデータを含むアセンブリを CLR が読み込み、必要なメソッドを JIT で機械語化します。GC と資源解放を分け、配布方式は起動・サイズ・動的機能の要件で選びます。

仕組み・特徴(.NET / CLR)

  • CLR 上で実行: 中間言語(IL)にコンパイルされ、共通言語ランタイム(CLR)が JIT で機械語化して実行。GC によりメモリは自動管理。
  • 豊富な言語機能: LINQ(コレクションを SQL 風に操作)、async/await(非同期を同期的な見た目で)、パターンマッチ、record、nullable 参照型など。
  • クロスプラットフォーム: 現在の .NET は Windows / macOS / Linux で動く。AOT コンパイルで起動の速いネイティブ実行も可能。
var names = new[] { "Aoi", "Ren" };
// 配列から条件で絞り込み、新しい列を作る
var shorts = names.Where(n => n.Length <= 3).ToList();

どこで活躍するか

  • Unity と組み合わせたゲーム開発の定番言語。
  • Windows のデスクトップ/業務アプリ。
  • Web API・サーバーサイド(ASP.NET Core)。

かつては Windows 専用の印象が強い言語でしたが、今の .NET はクロスプラットフォームです。

Java との違い

観点C#Java
基盤CLR(.NET)JVM
言語機能LINQ/async/record 等が先行堅実・近年追随
ゲームUnity で定番限定的
エコシステムMicrosoft 中心+OSS 化進む巨大・中立的

Microsoft 製ツール(とくに Visual Studio)との統合が強力で、補完やデバッグの体験が良いのが強みです。一方、周辺の選び方に Windows / .NET の前提が残る場面もあります。

つまずきやすいところ

null と .NET 世代

null 参照例外は nullable 参照型の有効化で早期に検知できます。旧来の .NET Framework と現行の .NET(.NET 5 以降)は別系統で、対象ランタイムやライブラリの対応世代を取り違えないよう注意します。

総じて C# は、豊富な言語機能と .NET の生産性・クロスプラットフォーム性を備え、業務アプリから Unity ゲームまで幅広く使われる言語です。

言語選定

C#を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

業務アプリ・Web(ASP.NET)

比較で見る軸

型付け: 静的・強い型付け / 実行方式: .NET(JIT / AOT) / パラダイム: マルチパラダイム(OOP + 関数)

導入後に効く点

.NET の高性能・統合エコシステム

先に潰すリスク

歴史的に Windows 寄り(現在はクロスプラットフォーム)

数字・仕様の読み方
型付け
静的・強い型付け
実行方式
.NET(JIT / AOT)
パラダイム
マルチパラダイム(OOP + 関数)
登場
2000年
Microsoft(Anders Hejlsberg)

判断チェックリスト

  • 自社の用途が「業務アプリ・Web(ASP.NET) / ゲーム(Unity)」に近いか確認する。
  • 強みである「言語機能が豊富で生産性が高い」が本当に評価軸になるか確認する。
  • 注意点の「歴史的に Windows 寄り(現在はクロスプラットフォーム)」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

業務アプリ・Web(ASP.NET)ゲーム(Unity)デスクトップアプリ

最初の一歩

Hello, World!

Console.WriteLine("Hello, World!");
公式ドキュメント