C#: 開発環境のセットアップ
開発環境のセットアップは、アトリエの準備に似ています。キャンバス(.NET SDK)と筆(VS Code)が揃えば、創作(C#コードの記述)を始めることができます。
1. .NET SDK のインストール
.NET SDK(ソフトウェア開発キット)は、C# プログラムを開発するための中核となるツールキットであり、コンパイラ、ランタイム、およびプロジェクト管理ツールが含まれています。C# プログラムを作成、コンパイル、実行するには、まずこれをインストールする必要があります。
(1) Windowsへのインストール
- https://dotnet.microsoft.com/download/dotnet/8.0 にアクセスして、.NET 8 SDK インストーラーをダウンロードしてください。
- インストーラーを実行し、デフォルトの設定のままインストールを完了してください
- コマンドプロンプトを開き、以下を確認します:
dotnet --version
8.0.xxx
バージョン番号が表示されていれば、インストールは正常に完了しています。
(2) macOSへのインストール
Homebrew を使ってインストールする:
brew install dotnet-sdk
または、公式サイトからmacOSのインストーラをダウンロードしてください。確認方法は以下の通りです:
dotnet --version
(3) Linuxへのインストール
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
CentOS/RHEL:
sudo dnf install -y dotnet-sdk-8.0
インストールを確認してください:
dotnet --version
💡 ヒント: この本では .NET 8 (LTS — 長期サポート版) を使用しています。ランタイムだけでなく、必ず SDK もインストールしてください。SDK には、開発に必要なすべてのツールが含まれています。
(4) SDKに含まれる主要コンポーネント
| コンポーネント | 役割 |
|---|---|
| Roslyn コンパイラ | C# コードを中間言語 (IL) にコンパイルします |
| dotnet CLI | プロジェクトの作成、ビルド、実行を行うコマンドラインツール |
| .NET ランタイム | コンパイル済みのプログラムを実行する |
| NuGet パッケージマネージャー | サードパーティ製ライブラリの依存関係を管理 |
2. VS Code の設定
VS Code は、マイクロソフトが開発した無料のコードエディタです。C# 拡張機能と組み合わせることで、強力な C# 開発環境を実現します。
(1) VS Code のインストール
https://code.visualstudio.com にアクセスして、ダウンロードおよびインストールを行ってください。
(2) 必要な拡張機能のインストール
VS Code を起動し、Ctrl+Shift+X を押して拡張機能マーケットプレイスを開き、以下の拡張機能を検索してインストールしてください:
| 拡張機能 | 目的 |
|---|---|
| C# 開発キット (Microsoft) | 構文強調表示、IntelliSense、デバッグ、プロジェクト管理をすべて網羅したオールインワンサポート |
| C# (Microsoft) | C# 基本言語サービス(通常、開発キットとともに自動的にインストールされます) |
(3) C# 開発キットの設定
C# Dev Kit をインストールすると、拡張機能がインストール済みの .NET SDK を自動的に検出します。設定が正しいかどうかは、次の方法で確認できます:
Ctrl+Shift+Pを押し、.NET: New Projectと入力します。プロジェクトテンプレートのリストが表示されれば、設定は成功です。- 下部のステータスバーには、.NET SDK のバージョン番号が表示されるはずです
⚠️ 注意: VS Code でフォルダを開く際は、専用のフォルダ(例:csharp-learn)を作成し、単一のファイルではなくそのフォルダ全体を VS Code で開いてください。これは、C# Dev Kit が正常に動作するために必要です。
3. 初めてのプログラム:「Hello World」
▶ サンプル
dotnet CLI を使用して、初めてのコンソールアプリケーションを作成します:
dotnet new console -n MyFirstApp
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring packages...
Determining projects to restore...
Restored MyFirstApp.csproj (in 1.2s).
プロジェクトディレクトリに移動して、以下を実行してください:
cd MyFirstApp
dotnet run
Hello, World!
これがあなたの最初のC#プログラムです!dotnet new consoleコマンドを実行すると、プロジェクト構造とコードが自動的に生成されます。
(1) プロジェクトの構成
作成後、プロジェクトフォルダには以下のファイルが含まれます:
MyFirstApp/
├── MyFirstApp.csproj
├── Program.cs
└── obj/
└── ...
| ファイル | 目的 |
|---|---|
Program.cs |
プログラムのエントリポイント。メインコードが含まれています |
MyFirstApp.csproj |
プロジェクト設定ファイル。SDKやターゲットフレームワークなどを定義します。 |
obj/ |
中間ビルドの出力ディレクトリ |
4. 一般的な .NET CLI コマンド
dotnet CLIは、.NET開発の中核となるコマンドラインツールです。これを使いこなす方が、IDEに頼るよりも効率的です。
(1) プロジェクト管理コマンド
| コマンド | 用途 | 例 |
|---|---|---|
dotnet new console |
コンソールプロジェクトを作成する | dotnet new console -n MyApp |
dotnet new classlib |
クラスライブラリプロジェクトを作成する | dotnet new classlib -n MyLib |
dotnet new list |
利用可能なテンプレートをすべて表示 | dotnet new list |
-n パラメータは、プロジェクト名を指定します。省略した場合は、現在のフォルダ名が使用されます。
(2) ビルド、実行、公開
| コマンド | 用途 | 例 |
|---|---|---|
dotnet build |
プロジェクトをコンパイルする(実行はしない) | dotnet build |
dotnet run |
プロジェクトをコンパイルして実行する | dotnet run |
dotnet publish |
プロジェクトを公開(デプロイ用) | dotnet publish -c Release |
▶ サンプル
dotnet build
MSBuild version 17.8.xxxx
Determining projects to restore...
Restored MyFirstApp.csproj (in 102 ms).
MyFirstApp -> G:\csharp-learn\MyFirstApp\bin\Debug\net8.0\MyFirstApp.dll
Build succeeded.
0 Warning(s)
0 Error(s)
🔥 ヒント: dotnet run = dotnet build +自動実行。開発中のクイックテストには dotnet run を、正式なビルドでのコンパイルエラーの確認には dotnet build を使用してください。
5. トップレベル文と従来のプログラム。メイン
C# 9 では トップレベル文 が導入され、コンソールプログラムの構文が劇的に簡素化されました。両方のスタイルを理解しておくことで、異なる時代の C# コードを読み解くのに役立ちます。
(1) トップレベルステートメント(C# 9以降、デフォルト)
dotnet new console は、デフォルトでトップレベルのステートメントを使用する Program.cs を生成します:
System.Console.WriteLine("Hello, World!");
たった1行――名前空間も、クラスも、Mainメソッドもありません。コンパイラが自動的に、これを生成された Main メソッドでラップします。
(2) 伝統的なプログラム。主な様式
C# 9以前のアプローチでは、すべてのコードをMainメソッド内に記述する必要がありました:
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
(3) 2つのスタイルの比較
| 特集 | トップレベルの声明 | 従来のプログラム.Main |
|---|---|---|
| コード量 | ごくわずか | 定型コードが多い |
| 入力方法 | コンパイラによる自動生成 | 手動定義 static void Main |
using 宣言 |
省略可能(完全修飾名を使用) | 通常は using System; が必要 |
| 名前空間 | 宣言不要 | 宣言必須 |
| コマンドライン引数 | args 変数による直接アクセス |
Main(string[] args) パラメータ経由 |
| 用途 | 簡単なプログラム、学習、スクリプト作成 | きめ細かなアクセス制御が必要な大規模プロジェクト |
| C# バージョン | C# 9+ | すべてのバージョン |
📌 要点: トップレベル文と従来の記述スタイルは機能的に同等です。トップレベル文は単なる構文上の簡略化に過ぎず、生成されるILコードは本質的に同じです。プロジェクト内でトップレベル文を使用できるのは、1つのファイルのみです。
(4) トップレベル文によるコマンドライン引数の取得
if (args.Length > 0)
{
System.Console.WriteLine($"Hello, {args[0]}!");
}
else
{
System.Console.WriteLine("Hello, World!");
}
dotnet run -- Alice
Hello, Alice!
-- の後の引数は、プログラムに渡されます。最上位の文では、args はコンパイラによって自動的に挿入されます。
6. よくあるコンパイラのエラー
初心者であれば、間違いなくコンパイラのエラーに遭遇することになるでしょう。慌てないでください。エラーメッセージを読み解くことを学ぶことの方が、エラーを避けることよりも重要です。
(1) CS1002: セミコロンが必要です
System.Console.WriteLine("Hello, World!")
Program.cs(1,40): error CS1002: ; expected
エラーの形式は ファイル名(行,列): エラーコード: 説明 です。この行の末尾にセミコロンが欠けています。C# の文はすべて、末尾にセミコロンで終わらなければなりません。
(2) CS0103: 現在のコンテキストにその名前が存在しません
Console.WriteLine("Hello, World!");
Program.cs(1,1): error CS0103: The name 'Console' does not exist in the current context
using System; や完全修飾名 System.Console を使用せずに Console を使用しました。解決策は 2 つあります。using System; を追加するか、System.Console を使用してください。
(3) CS0117: 定義が含まれていない
System.Console.WritLine("Hello, World!");
Program.cs(1,17): error CS0117: 'Console' does not contain a definition for 'WritLine'
WriteLine のスペルが WritLine と間違って記述されています。コンパイラは、Console クラスに WritLine という名前のメンバが存在しないことを指摘しています。スペルを確認してください。
(4) CS0120: 非静的フィールドにはオブジェクト参照が必要です
namespace MyApp
{
class Program
{
string name = "C#";
static void Main(string[] args)
{
System.Console.WriteLine(name);
}
}
}
Program.cs(8,37): error CS0120: An object reference is required for the non-static field, method, or property 'Program.name'
静的メソッド Main から、非静的フィールド name にアクセスしました。静的メソッドはクラス自体に属しますが、非静的メンバーはクラスのインスタンスに属します。そのため、まずオブジェクトを作成する必要があります。
⚠️ エラーメッセージの読み方のヒント: 表示される行番号は、実際の誤りの後の位置を指している場合があります。 行にエラーが表示された場合は、その行とその直上の行について、スペル、セミコロン、括弧の有無を確認してください。CSコードはマイクロソフトの公式エラーコードです。CS番号をオンラインで検索すると、詳細な説明を確認できます。
❓ よくある質問
dotnet run と dotnet build の違いは何ですか?dotnet build は、プロジェクトをコンパイルして DLL ファイルを生成するだけで、実行は行いません。 dotnet runは(必要に応じて)コンパイルを行い、その後自動的にプログラムを実行します。開発時のデバッグを容易にするにはdotnet runを、より制御されたCI/CDビルドにはdotnet buildを使用してください。📖 まとめ
- .NET 8 SDK は C# 開発の中核となるツールキットであり、Windows/macOS/Linux にインストール可能で、
dotnet --versionによって検証済みです。 - C# Dev Kit 拡張機能を搭載した VS Code は、軽量でありながら強力な C# 開発環境を提供します
- dotnet CLI は、プロジェクト管理の中核となるツールです。
dotnet newで作成、dotnet buildでコンパイル、dotnet runで実行します。 - トップレベル文(C# 9+)は、従来の
Program.Mainと機能的に同等の、簡略化された記述形式です。初心者は、まずトップレベル文から始めることをお勧めします。 - コンパイラのエラーメッセージには、ファイル名、行番号、C#コード、および説明が含まれています。これらを読み解く方法を学ぶことは、重要なスキルです
📝 練習問題
- お使いのコンピュータに .NET 8 SDK をインストールし、
dotnet --versionが正しく出力されることを確認してください。バージョン番号を記録しておいてください。 dotnet new console -n Homework02を使用してプロジェクトを作成します。Program.cs を編集して、自分の名前と挨拶文(例:「Hello, I'm Alex, starting to learn C#!」)を出力するようにし、実行してスクリーンショットを撮ってください。- 演習2のトップレベル文のバージョンを、従来の Program.Main スタイルで書き直し、両者が同じ出力を生成することを確認してください。
- 意図的に3つのコンパイラエラー(セミコロン漏れ、スペルミス、usingの省略)を発生させ、C#のコードとエラーの説明を記録し、エラーメッセージの読み方を練習する