2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#初心者でもわかる!ASP.NET Core Minimal APIのメリット・使い方・テスト方法を徹底解説

Last updated at Posted at 2025-06-19

<本記事のターゲット層>

  • 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.csControllerが不要で、学習コストが低い

✅ パフォーマンスが高い

  • 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開発がもっと楽しくなります!
ぜひ自分のプロジェクトで試してみてください。


この記事が参考になったら、いいね・シェア・コメントよろしくお願いします!🎉

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?