1. C#プロジェクトの全体構成
君のプログラムは、ただの1ファイルじゃなくて、いろんなファイルやフォルダ、設定が集まったものなんだ。C#は厳密な型付け言語で、大きなアプリを作るなら全部きっちり整理するのが大事。プロジェクトの構成を無視すると、コードがすぐに電子迷路みたいになって、自分の"Hello, World!"の出力すら見つけられなくなるよ。
それに、プロジェクト構成を理解してるってのは面接でも評価されるスキル。家の中で鍵やテレビのリモコンの場所を知ってるのと同じで、生活がめっちゃ楽になる!
イメージしやすいように、C#プロジェクトを仕切り付きの箱だと思ってみて:
MyFirstConsoleApp/
├── MyFirstConsoleApp.csproj
├── Program.cs
├── Properties/
│ └── launchSettings.json
├── bin/
│ └── ... (ここにコンパイル済みプログラムが入る)
├── obj/
│ └── ... (ここはコンパイル中の中間ファイル置き場)
構成の詳細:
| 名前 | 何のため? |
|---|---|
|
プロジェクトファイル:プログラム全体の「パスポート」。ここに全部の設定が書いてある。 |
|
エントリーポイント(Main)があるメインファイル。最初のコードはだいたいここに書くよ。 |
|
プロジェクトの設定フォルダ。例えばIDEからの起動方法とか。 |
|
「完成品のゴミ箱」―ビルドされた実行ファイルがここに入る。 |
|
コンパイル中の作業ファイル(小説の下書きみたいなもんで、普通はあんまり見ない)。 |
2. プロジェクトファイル (.csproj)
.csproj拡張子のファイルは、プロジェクトの心臓であり頭脳。ここに全部のグローバル設定が書いてある:言語バージョン、依存関係、どのファイルをコンパイルするか、どのパッケージを使うか、などなど。Solution ExplorerでFilesタブに切り替えてみて。
コンソールアプリ用のファイル例:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
- <TargetFramework>net9.0</TargetFramework> ― このプロジェクトは.NET 9用ってこと。
- <OutputType>Exe</OutputType> ― 実行ファイル(Windowsなら.exe)ができるよ、って意味。
- <PropertyGroup>ブロックにメインのパラメータが入ってる。
- このファイルでNuGetパッケージ追加したり、コンパイル設定変えたり、機能のON/OFFもできる。
3. プログラムのメインファイル:Program.cs
プロジェクトを劇場に例えるなら、Program.csはステージで、他のファイルは舞台裏。ここにアプリの「エントリーポイント」―Mainメソッドがあるんだ。
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("こんにちは、世界!");
}
}
}
- namespace ― 名前空間。クラスをグループ化して名前の衝突を防ぐ。
- class Program ― Mainメソッドがあるメインのクラス。
- static void Main(string[] args) ― 必須のエントリーポイント。ここからプログラムが始まる。
- Console.WriteLine() ― もうおなじみ、世界にメッセージを伝えるやつ。
アプリをアップデートしよう
前のレクチャーで、ユーザーの名前を聞いて挨拶するミニアプリを作ったのを思い出して。こんな感じ:
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.Write("名前を入力してください: ");
string name = Console.ReadLine();
Console.WriteLine($"ようこそ、{name}さん!長生きして繁栄を。");
}
}
}
プロジェクトを実行しよう:緑の▶️ Runボタンをクリック!
うまくいけば、下にRunタブが出てくるよ。プログラムが起動して、名前を入力してください:って聞いてくる。好きな名前(例えば「Cat」)をコンソールに入力して、Enterキーを押してみて。
Enterを押したら、プログラムが入力を処理して、君の名前入りのメッセージを表示するよ。これでプログラムは終了、結果が見えるはず。
4. コードを書くときの基本ルール
どこにコードを書く?
最初はProgram.csのMainメソッドにロジックを書こう。アプリが大きくなったら新しいファイルやクラスを作ればいいけど、今はここがメインステージ!
Mainでできること・できないこと
- できること:変数宣言、計算、メソッド呼び出し、データの入出力。
- できないこと:メソッドやクラスの外にコードを書く(例えばConsole.WriteLine("Hello");をMainの外に書くのはNG!)。
コメント
自分や他の人のためにコメントを書こう。1行コメントは//、複数行は/* ... */。後で「なんでこの謎コード書いたんだっけ?」ってならないように、シンプルに説明しよう。
// これは1行コメント
/*
これは
複数行コメント
*/
5. プログラムの実行フローは?
プログラムは必ずMainメソッドから始まる。それより前の行は無視される。起動時に何かしたいなら、Mainに書こう。
例 ― シンプルなフローチャート(コード→実行):
プログラム開始
|
v
Mainメソッド
|
v
Main内の命令を順番に実行
|
v
プログラム終了
6. アプリが成長したら:新しいファイルの追加
新しいファイルを作るタイミングは?
コードが1画面に収まらなくなったり、変数が頭に入りきらなくなったら、分割のタイミング!
例:電卓アプリを作るなら、Calculator.csという別ファイルにクラスを移すのもアリ。
MyFirstConsoleApp/
├── Program.cs
├── Calculator.cs // 電卓ロジック用の新ファイル
Riderで新しいファイルを追加する方法
- Solution Explorerのツリーでプロジェクトを右クリック→「Add」→「New File」(または「New Class」)。
- 分かりやすい名前を付けよう。
- 新しいクラスや関数を書こう。
// Calculator.cs
namespace MyFirstConsoleApp
{
class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
}
これをProgram.csから使ってみよう:
// Program.cs
using System;
namespace MyFirstConsoleApp
{
class Program
{
static void Main(string[] args)
{
int sum = Calculator.Add(2, 3); //CalculatorクラスのAdd関数を使う
Console.WriteLine($"2 + 3 = {sum}");
}
}
}
7. 「ビルド」と「実行」―裏で何が起きてる?
Run(またはF5)を押すと、IDEは:
- 構文チェックして、コードをバイナリファイル(.exeや.dll)にビルドして、bin/Debug/net9.0/やbin/Release/net9.0/に入れる。
- ビルド済みファイルを実行する。
- 結果をターミナル/コンソールに表示する。
bin/とobj/:このフォルダの意味は?
- bin/ ― 完成品(ビルド済みプログラム)がここにある。
- obj/ ― コンパイラが中間計算に使う一時ファイル置き場。
普通はこのフォルダは気にしなくてOK。中身は必要なら自動で再生成されるから。
8. コードやプロジェクトでよくあるミス
コードを書くのは、手当たり次第キーボードを叩くことじゃない。CS5001: Program does not contain a static 'Main' method suitable for an entry pointみたいなエラーが出たら、みんな一斉にググり始めるし、IDEもさらに難しい言葉で怒ってくる。
- よくあるミスの1つは、メソッドやクラスの外にコードを書くこと。C#では、プログラムファイルに直接式を書くのはダメ。全部クラスとメソッドの中に入れよう!
- ファイル名とクラス名がバラバラ。できなくはないけど、同じで分かりやすい名前にした方が自分も(将来の同僚も)楽だよ。
- 名前空間で迷子。別のnamespaceでクラスを作ったら、usingでちゃんと参照しよう。
- エントリーポイントを忘れる。Mainメソッドを消したり名前を変えたら、プログラムは起動しないよ。
GO TO FULL VERSION