Unity & C# 学習教材

C# と .NET の基本

学習目標


1. プログラムはどう動くか

コンピューターが直接実行できるのは機械語(マシンコード) と呼ばれる、0と1の命令だけです。

一方、私たちが書く C# は人間が読み書きしやすいように設計された言語です。このような言語を高水準言語と呼びます。

1
Debug.Log("Hello, Unity!");

この C# のコードをそのままコンピューターは実行できません。機械語に変換する処理が必要です。この変換処理をコンパイル(compile)、変換を行うプログラムをコンパイラー(compiler)と呼びます。


2. .NET とは

.NET(ドットネット) は Microsoft が開発した、プログラムを実行するためのプラットフォームです。C# で書いたプログラムを動かすために必要な仕組みがまとまっています。

役割 説明
ランタイム コンパイルされたプログラムを実際に実行する環境
クラスライブラリ ファイル操作・ネットワーク・計算など、よく使う機能をあらかじめ用意したコード集

.NET の特徴として、次の2点も押さえておきましょう。

クロスプラットフォーム:Windows・macOS・Linux など、異なる OS の上で同じプログラムを動かせます。C# で書いたコードがどの環境でも動く理由は、後述の「中間言語」の仕組みによります。

オープンソース:.NET の実装は GitHub 上で公開 されており、誰でもソースコードを確認したり改善に参加したりできます。

複数の言語が .NET を利用できる理由:C# だけでなく、F# や VB.NET など複数の言語が .NET の上で動きます。それぞれの言語のコンパイラーが共通の中間形式に変換するしくみがあるため、異なる言語でも同じ .NET のランタイムやライブラリを使うことができます。この中間形式については 中間言語と JIT コンパイル で詳しく解説します。


3. C# と .NET の関係

C# は「書く言語」、.NET は「動かす環境」です。両者はセットで使われます。

flowchart LR
    src["C# ソースコード (.cs)"]
    compiler["⚙️ .NET コンパイラー"]
    runtime[".NET ランタイム"]
    result["✅ 実行結果"]

    src --> compiler --> runtime --> result

この図では「コンパイル → 実行」を1ステップのように描いていますが、実際には内部でさらに段階があります。詳しくは 中間言語と JIT コンパイル で解説します。


4. Unity と .NET

Unity も内部で .NET を使っています。Unity スクリプトは C# で書き、.NET の仕組みで実行されます。

Unity はエディター上の実行と、ゲームのビルド(最終成果物)で異なる実行方式を採用しています。エディターでは素早く動作確認できるよう、ビルドでは配布先プラットフォームに最適な形式が選ばれます。

この仕組みの詳細は 中間言語と JIT コンパイル で解説します。


まとめ


理解度チェック

  1. 「コンパイル」とは何ですか?
  2. .NET の主な役割を2つ挙げてください。
  3. .NET がクロスプラットフォームを実現できる理由を一言で説明してください。
  4. C# 以外に .NET を使える言語を1つ挙げてください。
解答を見る
  1. ソースコードをコンピューターが実行できる形式(機械語)に変換する処理。
  2. ランタイム(プログラムを実行する環境)とクラスライブラリ(よく使う機能のコード集)。
  3. 各言語のコンパイラーが共通の中間言語に変換するしくみがあるため。
  4. F# や VB.NET など(どちらか一方でよい)。

次のステップ

.NET の内部でどのようにコードが処理されるか、より深く知りたい場合は 中間言語と JIT コンパイル へ。