C#: 開発環境のセットアップ

開発環境のセットアップは、アトリエの準備に似ています。キャンバス(.NET SDK)と筆(VS Code)が揃えば、創作(C#コードの記述)を始めることができます。

1. .NET SDK のインストール

.NET SDK(ソフトウェア開発キット)は、C# プログラムを開発するための中核となるツールキットであり、コンパイラ、ランタイム、およびプロジェクト管理ツールが含まれています。C# プログラムを作成、コンパイル、実行するには、まずこれをインストールする必要があります。

(1) Windowsへのインストール

  1. https://dotnet.microsoft.com/download/dotnet/8.0 にアクセスして、.NET 8 SDK インストーラーをダウンロードしてください。
  2. インストーラーを実行し、デフォルトの設定のままインストールを完了してください
  3. コマンドプロンプトを開き、以下を確認します:
BASH
dotnet --version
TEXT 📖 参照専用
8.0.xxx

バージョン番号が表示されていれば、インストールは正常に完了しています。

(2) macOSへのインストール

Homebrew を使ってインストールする:

BASH
brew install dotnet-sdk

または、公式サイトからmacOSのインストーラをダウンロードしてください。確認方法は以下の通りです:

BASH
dotnet --version

(3) Linuxへのインストール

Ubuntu/Debian:

BASH
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

CentOS/RHEL:

BASH
sudo dnf install -y dotnet-sdk-8.0

インストールを確認してください:

BASH
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 を自動的に検出します。設定が正しいかどうかは、次の方法で確認できます:

  1. Ctrl+Shift+P を押し、.NET: New Project と入力します。プロジェクトテンプレートのリストが表示されれば、設定は成功です。
  2. 下部のステータスバーには、.NET SDK のバージョン番号が表示されるはずです

⚠️ 注意: VS Code でフォルダを開く際は、専用のフォルダ(例:csharp-learn)を作成し、単一のファイルではなくそのフォルダ全体を VS Code で開いてください。これは、C# Dev Kit が正常に動作するために必要です。


3. 初めてのプログラム:「Hello World」

▶ サンプル

dotnet CLI を使用して、初めてのコンソールアプリケーションを作成します:

BASH
dotnet new console -n MyFirstApp
TEXT 📖 参照専用
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring packages...
Determining projects to restore...
Restored MyFirstApp.csproj (in 1.2s).

プロジェクトディレクトリに移動して、以下を実行してください:

BASH
cd MyFirstApp
dotnet run
TEXT 📖 参照専用
Hello, World!

これがあなたの最初のC#プログラムです!dotnet new consoleコマンドを実行すると、プロジェクト構造とコードが自動的に生成されます。

(1) プロジェクトの構成

作成後、プロジェクトフォルダには以下のファイルが含まれます:

TEXT 📖 参照専用
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

▶ サンプル

BASH
dotnet build
TEXT 📖 参照専用
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 を生成します:

CSHARP
System.Console.WriteLine("Hello, World!");

たった1行――名前空間も、クラスも、Mainメソッドもありません。コンパイラが自動的に、これを生成された Main メソッドでラップします。

(2) 伝統的なプログラム。主な様式

C# 9以前のアプローチでは、すべてのコードをMainメソッド内に記述する必要がありました:

CSHARP
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) トップレベル文によるコマンドライン引数の取得

CSHARP
if (args.Length > 0)
{
    System.Console.WriteLine($"Hello, {args[0]}!");
}
else
{
    System.Console.WriteLine("Hello, World!");
}
BASH
dotnet run -- Alice
TEXT 📖 参照専用
Hello, Alice!

-- の後の引数は、プログラムに渡されます。最上位の文では、args はコンパイラによって自動的に挿入されます。


6. よくあるコンパイラのエラー

初心者であれば、間違いなくコンパイラのエラーに遭遇することになるでしょう。慌てないでください。エラーメッセージを読み解くことを学ぶことの方が、エラーを避けることよりも重要です。

(1) CS1002: セミコロンが必要です

CSHARP
System.Console.WriteLine("Hello, World!")
TEXT 📖 参照専用
Program.cs(1,40): error CS1002: ; expected

エラーの形式は ファイル名(行,列): エラーコード: 説明 です。この行の末尾にセミコロンが欠けています。C# の文はすべて、末尾にセミコロンで終わらなければなりません。

(2) CS0103: 現在のコンテキストにその名前が存在しません

CSHARP
Console.WriteLine("Hello, World!");
TEXT 📖 参照専用
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: 定義が含まれていない

CSHARP
System.Console.WritLine("Hello, World!");
TEXT 📖 参照専用
Program.cs(1,17): error CS0117: 'Console' does not contain a definition for 'WritLine'

WriteLine のスペルが WritLine と間違って記述されています。コンパイラは、Console クラスに WritLine という名前のメンバが存在しないことを指摘しています。スペルを確認してください。

(4) CS0120: 非静的フィールドにはオブジェクト参照が必要です

CSHARP
namespace MyApp
{
    class Program
    {
        string name = "C#";
        static void Main(string[] args)
        {
            System.Console.WriteLine(name);
        }
    }
}
TEXT 📖 参照専用
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番号をオンラインで検索すると、詳細な説明を確認できます。

❓ よくある質問

Q .NET SDK をインストールした後、コマンドラインで「dotnet はコマンドとして認識されません」というメッセージが表示されます。どうすればよいですか?
A これは、.NET のインストールディレクトリがシステムの PATH に含まれていないことを意味します。 Windows では、通常、SDK インストーラーを再実行することで自動的に解決します。それでも解決しない場合は、dotnet ディレクトリ(例: C:\Program Files\dotnet)をシステムの PATH に手動で追加し、コマンドラインを再起動してください。
Q C# Dev Kitと旧バージョンのC#拡張機能の違いは何ですか?
A C# Dev Kitは、マイクロソフトが2023年にリリースした新しい拡張機能です。プロジェクト管理、ソリューションエクスプローラー、テストエクスプローラーなどが統合されており、Visual Studioに近い操作感を実現しています。 従来のC#拡張機能は、基本的な言語機能のみを提供しています。C# Dev Kitの使用をお勧めします。
Q トップレベル文と従来のスタイルでは、パフォーマンスに違いはありますか?
A 全くありません。 トップレベルステートメントは単なる構文上の糖衣に過ぎず、コンパイラがそれらを標準的なMainメソッドに変換します。生成されるILコードと実行時のパフォーマンスは全く同じです。コードの可読性やプロジェクトの規模に合わせて、どちらのスタイルでも構いません。
Q dotnet rundotnet build の違いは何ですか?
A dotnet build は、プロジェクトをコンパイルして DLL ファイルを生成するだけで、実行は行いません。 dotnet runは(必要に応じて)コンパイルを行い、その後自動的にプログラムを実行します。開発時のデバッグを容易にするにはdotnet runを、より制御されたCI/CDビルドにはdotnet buildを使用してください。

📖 まとめ

📝 練習問題

  1. お使いのコンピュータに .NET 8 SDK をインストールし、dotnet --version が正しく出力されることを確認してください。バージョン番号を記録しておいてください。
  2. dotnet new console -n Homework02 を使用してプロジェクトを作成します。Program.cs を編集して、自分の名前と挨拶文(例:「Hello, I'm Alex, starting to learn C#!」)を出力するようにし、実行してスクリーンショットを撮ってください。
  3. 演習2のトップレベル文のバージョンを、従来の Program.Main スタイルで書き直し、両者が同じ出力を生成することを確認してください。
  4. 意図的に3つのコンパイラエラー(セミコロン漏れ、スペルミス、usingの省略)を発生させ、C#のコードとエラーの説明を記録し、エラーメッセージの読み方を練習する
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%