1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Program.csの目的

• ASP.NET Core アプリケーションのエントリーポイント(起動ファイル)です。
• サーバーの立ち上げ処理、
• サービス(DIコンテナ)の設定、
• ミドルウェア(リクエストの処理パイプライン)の設定、
• APIルーティングの設定、

をまとめて記述します。

• ここを修正・拡張することで、アプリ全体の動作や提供する機能を制御します。

DIコンテナとは

Dependency Injection (依存性の注入) を実現するためのフレームワーク

Program.cs ファイルの解説(行ごと)

Program.cs
using InsuranceProductManager;
using Microsoft.EntityFrameworkCore;

• ① 名前空間の読み込み。
• InsuranceProductManager はあなたのプロジェクトのルート名前空間。
• Microsoft.EntityFrameworkCore はEntity Framework Core(DB操作ライブラリ)を使うため。

Program.cs
var builder = WebApplication.CreateBuilder(args);

• ② ASP.NET Core のWebアプリケーションを作成するためのビルダーを初期化。
• args はコマンドライン引数。
• ここからアプリのサービス登録や設定を始める。

Program.cs
// 1. 必要なサービスを登録(Controllers, Swagger, DbContextなど)
builder.Services.AddControllers();

• ③ MVCやAPIのコントローラー機能をサービスコンテナに登録。
• これで [ApiController] 属性のついたクラスが動作可能になる。

Program.cs
builder.Services.AddEndpointsApiExplorer();

• ④ Swagger(OpenAPI)でAPIエンドポイントの情報を生成・収集するためのサービスを登録。

Program.cs
builder.Services.AddSwaggerGen();

• ⑤ Swagger UI(ブラウザでAPI仕様を確認・操作する画面)を生成するためのサービスを登録。

Program.cs
// ✅ AppDbContext を登録(必要に応じて接続文字列を調整)
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseInMemoryDatabase("InsuranceProductsDB")); // SQLite や SQL Server に変更も可

• ⑥ あなたが定義した AppDbContext (データベース操作の窓口)をサービスに登録。
• 今回はメモリ上のDB(永続化しないテスト用DB)を使っている。
• 本番ではここをSQL ServerやSQLiteなど実DBに切り替え可能。

Program.cs
var app = builder.Build();

• ⑦ ここまでで登録したサービスや設定を使って実際のアプリケーションインスタンスを生成。

Program.cs
// 2. ミドルウェアの設定
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

• ⑧ アプリが開発環境のときだけSwaggerを有効化。
• UseSwagger() はSwagger仕様のJSONを出すミドルウェア。
• UseSwaggerUI() はSwaggerのWeb画面を提供するミドルウェア。

Program.cs
app.UseHttpsRedirection();

• ⑨ HTTPアクセスを自動でHTTPSにリダイレクトするミドルウェアを有効化。

Program.cs
app.UseAuthorization();

• ⑩ 認可(Authorization)ミドルウェアを有効化。
• ただし認証ミドルウェアはこのコードには含まれていないため、今は認可機能は限定的。

Program.cs
// 3. コントローラールートのマッピング
app.MapControllers();

• ⑪ コントローラークラスで定義したAPIのルーティングを有効化。
• これにより [Route] 属性がついたコントローラーのメソッドにリクエストを振り分ける。

Program.cs
app.Run();

• ⑫ アプリケーションを起動し、リクエストの受け付けを開始。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?