<本記事のターゲット層>
- C#/ASP.NET Coreの初学者
- 「Controllerを使ったAPI開発は難しそう」と感じている人
- Minimal APIの全体像を短時間で理解したい人
- バックエンドエンジニアで.NET未経験の方
- Java/SpringやNode.jsからC#に興味を持ち始めたエンジニア
- 個人開発・小規模チームの開発者
- プロトタイプやマイクロサービスを素早く作りたい人
- .NET 9 での最新開発手法をキャッチアップしたい開発者
- 従来のMVCからの乗り換えを検討している人
はじめに
C#やASP.NET CoreでWeb APIを開発する際、これまで多くの人がController
ベースの構成を使ってきました。しかし.NET 6以降、よりシンプルにAPIを作成できるMinimal APIという新しい選択肢が登場しました。
本記事では、初心者向けに「Minimal APIとは何か?」「何が便利なのか?」「どう使うのか?」「どうやってテストするのか?」を、実例を交えながらわかりやすく解説します。
Minimal APIとは?
Minimal APIは、ASP.NET Coreで導入された最小構成のWeb APIフレームワークです。コントローラーやルーティング属性を使わず、Program.cs
だけで完結するコード構成が特徴です。
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/hello", () => "Hello, World!");
app.Run();
この数行で、ブラウザから/hello
にアクセスすると「Hello, World!」と表示されます。
Minimal APIのメリット
✅ コードが少ない・読みやすい
- 従来のAPIよりもコード量が圧倒的に少なく、シンプル
-
Startup.cs
やController
が不要で、学習コストが低い
✅ パフォーマンスが高い
- ASP.NET Coreのパイプラインに直接アクセスしているため、余計なオーバーヘッドが少ない
- 軽量なマイクロサービスやIoTバックエンドに最適
✅ .NET 9でさらに機能が強化
- OpenAPI (Swagger) との統合
- バリデーションや認証の対応も進化
Minimal APIのデメリット
❌ 大規模開発には不向きな場合も
- コントローラーやサービス層の分離がないとスパゲッティコードになりがち
- 明確なレイヤー構造を求めるチームには不向き
❌ IDEの補助機能が弱いことがある
- ルーティングの属性や明示的なクラスが少ないため、IntelliSenseの恩恵が減ることも
Minimal APIの使い方(ステップバイステップ)
1. Visual Studioでプロジェクト作成
- 「ASP.NET Core 空のWeb API」テンプレートを選択
- .NET 9以上を選ぶ(.NET 6以降でも可)
2. Program.cs
の編集
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// GET
app.MapGet("/todos", () => new[] {
new Todo(1, "牛乳を買う", true),
new Todo(2, "記事を書く", false)
});
// POST
app.MapPost("/todos", (Todo todo) => {
// 実際はDBなどに保存する処理を書く
return Results.Created($"/todos/{todo.Id}", todo);
});
app.Run();
record Todo(int Id, string Title, bool IsDone);
🔍 解説
-
MapGet
,MapPost
などでエンドポイントを定義 -
record
型でデータモデルを定義(C# 9以降)
Minimal APIのテスト方法(xUnit + WebApplicationFactory)
Minimal APIも従来と同様にユニットテスト可能です。
1. テストプロジェクト作成
- 「xUnit Test Project」を追加
-
Microsoft.AspNetCore.Mvc.Testing
パッケージを追加
dotnet add package Microsoft.AspNetCore.Mvc.Testing
2. テストコードを書く
public class TodoApiTests : IClassFixture<WebApplicationFactory<Program>>
{
private readonly HttpClient _client;
public TodoApiTests(WebApplicationFactory<Program> factory)
{
_client = factory.CreateClient();
}
[Fact]
public async Task GetTodos_ReturnsSampleTodos()
{
var response = await _client.GetAsync("/todos");
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Assert.Contains("牛乳を買う", body);
}
}
✅ ポイント
-
WebApplicationFactory
を使うと、Minimal APIでも統合テストが簡単 - HTTPクライアントを使って実際のAPI呼び出しをテスト可能
まとめ
Minimal APIは、軽量・高速・簡単という特徴を持ち、C#初心者にとってもとっつきやすい技術です。
項目 | 内容 |
---|---|
対象者 | 小規模API、マイクロサービス、プロトタイピング |
適していない | 大規模エンタープライズ開発、MVC構造が必要な場合 |
テスト対応 |
xUnit + WebApplicationFactory で対応可能 |
.NET 9時代のAPI開発では、まずMinimal APIを試してみるのがおすすめです!
関連リンク
おわりに
Minimal APIをマスターすれば、C#×Web開発がもっと楽しくなります!
ぜひ自分のプロジェクトで試してみてください。
この記事が参考になったら、いいね・シェア・コメントよろしくお願いします!🎉