IRONSOFTWAREHOME
開発者向けアップデート

Swashbuckle ASP .NET Core (開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

Swashbuckleは、C# .NET CoreのNuGetパッケージで、RESTful Web APIのドキュメントを自動生成するのに役立ちます。このブログでは、Swashbuckle ASP.NET CoreとIronPDFインストール手順NuGetパッケージを探り、ASP.NET Core Web APIの最新の開発を可能にします。これらは、最小限のコードで達成できる多数の機能を提供します。

APIの文書ページは、Web APIプロジェクトから生成されたswagger.jsonファイルを使用するSwagger UIツールを使用して表示されます。 生成されたJSONドキュメントは、Open API標準に従います。 Swashbuckleは、Swashbuckle.AspNetCoreというNuGetパッケージとして利用可能で、インストールおよび設定すると、自動的にSwagger JSONを公開します。 Swagger UIツールは、APIに記述されたXMLコメントから生成されたSwagger JSONファイルを読み込みます。さらに、プロジェクト設定ファイルで有効にすることでXMLドキュメントファイルを作成できます。XMLコメントはXMLドキュメントファイルに変換され、Swagger JSONが生成されます。 その後、SwaggerミドルウェアはJSONを読み込み、Swagger JSONエンドポイントを公開します。

.NET Core Web APIプロジェクトにおける実装

Web APIプロジェクトから始めましょう。

dotnet new webapi -n SwashbuckleDemo
cd SwashbuckleDemo
dotnet build
dotnet add package Swashbuckle.AspNetCore --version 6.5.0
dotnet build
SHELL

ここでは"SwashbuckleDemo"という名前のWeb APIプロジェクトを作成し、パッケージマネージャーコンソールを使用してSwashbuckleパッケージを.NET Core Web APIプロジェクトにインストールします。

Swaggerミドルウェアの設定

SwaggerサービスをStartup.csファイルで構成します。

using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // Other service configurations...

        // Register the Swagger generator
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

            // Optionally, include XML comments for additional information
            var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
            var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
            c.IncludeXmlComments(xmlPath);
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        // Other app configurations...

        // Enable middleware to serve generated Swagger as a JSON endpoint.
        app.UseSwagger();

        // Enable Swagger UI (HTML, JS, CSS, etc.), specifying the Swagger JSON endpoint.
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
        });
    }
}

ToDoリストAPIのためのコントローラーを追加します。

using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

// Example to define an entity class
public class Todo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsComplete { get; set; }
}

// Example to define a DbContext class
public class TodoDb : DbContext
{
    public DbSet<Todo> Todos => Set<Todo>();
}

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "SwashbuckleDemo!");

app.MapGet("/todoitems", async (TodoDb db) =>
    await db.Todos.ToListAsync());

app.MapGet("/todoitems/complete", async (TodoDb db) =>
    await db.Todos.Where(t => t.IsComplete).ToListAsync());

app.MapGet("/todoitems/{id}", async (int id, TodoDb db) =>
    await db.Todos.FindAsync(id) is Todo todo
        ? Results.Ok(todo)
        : Results.NotFound());

app.MapPost("/todoitems", async (Todo todo, TodoDb db) =>
{
    db.Todos.Add(todo);
    await db.SaveChangesAsync();
    return Results.Created($"/todoitems/{todo.Id}", todo);
});

app.MapPut("/todoitems/{id}", async (int id, Todo inputTodo, TodoDb db) =>
{
    var todo = await db.Todos.FindAsync(id);
    if (todo is null) return Results.NotFound();
    todo.Name = inputTodo.Name;
    todo.IsComplete = inputTodo.IsComplete;
    await db.SaveChangesAsync();
    return Results.NoContent();
});

app.MapDelete("/todoitems/{id}", async (int id, TodoDb db) =>
{
    if (await db.Todos.FindAsync(id) is Todo todo)
    {
        db.Todos.Remove(todo);
        await db.SaveChangesAsync();
        return Results.Ok(todo);
    }

    return Results.NotFound();
});

app.Run();

次のようにコントローラーを追加することも可能です。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System;
using System.Linq;

namespace RestFullMinimalApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// Retrieves WeatherForecast
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public string Summary { get; set; }
    }
}

上記のコードはGitHub - Swashbuckle Demoにあります。

Swashbuckleが提供する機能

Swagger UIツール

Swashbuckle ASP .NET Core(開発者向けの仕組み):図1 - Swagger UI ツール

Swagger UIはWeb APIアプリケーションのベースURLから"/swagger/index.html"で利用可能です。 コードからすべてのREST APIをリスト表示します。 SwaggerジェネレーターはJSONファイルを読み込み、UIを生成します。

Swagger JSON

Swashbuckle.AspNetCoreは、APIの構造に関する情報(エンドポイント、リクエストおよびレスポンスタイプなどの詳細を含む)を含むSwagger JSONファイルを自動生成します。 このJSONファイルは、Swagger/OpenAPI標準をサポートする他のツールやサービスで使用可能です。

Swagger JSONファイルはWeb APIアプリケーションのベースURLから"/swagger/v1/swagger.json"で利用可能です。

Swashbuckle ASP .NET Core(開発者向けの仕組み):図2 - Swagger JSONファイル。

コードアノテーション

開発者はXMLコメントや属性をASP.NET Coreコントローラー内で使用し、Swaggerドキュメントの為の追加情報を提供できます。 これには説明、例、および生成されたSwaggerドキュメントを強化する他のメタデータが含まれます。

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    private readonly ILogger<WeatherForecastController> _logger;

    public WeatherForecastController(ILogger<WeatherForecastController> logger)
    {
        _logger = logger;
    }

    /// <summary>
    /// Retrieves WeatherForecast
    /// </summary>
    /// <remarks>Awesomeness!</remarks>
    /// <response code="200">Retrieved</response>
    /// <response code="404">Not found</response>
    /// <response code="500">Oops! Can't lookup your request right now</response>
    [HttpGet(Name = "GetWeatherForecast")]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        })
        .ToArray();
    }
}

設定オプション

Swashbuckle.AspNetCoreは、Swaggerドキュメントの生成方法をカスタマイズできるさまざまな設定オプションを提供します。 開発者はどのAPIをドキュメント化するかを制御し、命名規則を設定し、他の設定を調整できます。

Swashbuckle.AspNetCoreが提供する主要な設定オプションをいくつか紹介します。

SwaggerGenオプション

c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });

この行はSwaggerドキュメントのバージョンを指定し、APIのタイトルやバージョンなどのメタデータを含みます。

c.IncludeXmlComments(xmlPath);

このオプションを使用することで、コードからのXMLコメントがSwaggerドキュメントに追加情報として含まれるようにできます。 xmlPath変数は、XMLコメントファイルの位置を指す必要があります。

c.DescribeAllParametersInCamelCase();

このオプションは、Swagger ジェネレーターがパラメータ名に camelCase を使用するように構成します。

c.OperationFilter<CustomOperationFilter>();

特定の操作のためのSwaggerドキュメントを変更するためにカスタム操作フィルタを登録できます。 IOperationFilterを実装するクラスです。

Swagger UIオプション

c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");

この行はSwagger UIを設定してドキュメントを表示します。 最初のパラメータはSwagger JSONファイルのURLであり、2番目のパラメータはAPIバージョンのユーザーフレンドリーな名前です。

c.RoutePrefix = "swagger";

Swagger UIのルートプレフィックスを設定することもできます。 この例では、Swagger UIは/swaggerで利用可能になります。

c.DocExpansion(DocExpansion.None);

このオプションはSwagger UIがAPIドキュメントをどう表示するかを制御します。 DocExpansion.Noneはデフォルトですべての操作を折りたたみます。

SwaggerOptions

c.SerializeAsV2 = true;

このオプションはSwagger文書をバージョン2.0形式(false)でシリアライズするかどうかを指定します。 Swagger 2.0を使用したい場合はtrueに設定します。

c.DisplayOperationId();

このオプションは操作IDをSwagger UIに表示させ、デバッグとAPI構造の理解に役立ちます。

c.OAuthClientId("swagger-ui");

APIがOAuth認証を使用する場合は、Swagger UIのOAuthクライアントIDを設定可能です。

これらは利用可能な設定オプションのほんの一例です。 Swashbuckle.AspNetCoreライブラリは非常にカスタマイズ性が高く、さまざまなオプションやフィルタを組み合わせて特定のニーズに合わせてSwaggerドキュメントを調整できます。 常に公式ドキュメントや開発環境でのIntelliSenseで利用可能なオプションに関する最新かつ包括的な情報を参照してください。

IronPDFの紹介

IronPDF製品概要は、Iron Software WebsiteのC# PDFライブラリで、PDFドキュメントの読み取りと生成に役立ちます。 スタイル情報付きのフォーマットドキュメントを簡単にPDFに変換できます。 IronPDFはHTMLコンテンツから簡単にPDFを生成できます。 URLからHTMLコンテンツをダウンロードし、PDFを生成します。

IronPDFは、HTMLを忠実に再現するWebページやURL、HTMLをPDFに変換する素晴らしいツールです。 レポートや請求書など、オンラインコンテンツのPDF生成に最適で、任意のウェブページのPDFバージョンを簡単に作成します。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

インストール

IronPDFをNuGet経由でインストールし、NuGetパッケージマネージャー詳細Visual Studioインストールガイドのパッケージマネージャーコンソールで使います。

パッケージマネージャーコンソールで次のコマンドを入力します:

PM > Install-Package IronPdf

Visual Studioを使用する

Swashbuckle ASP .NET Core (開発者向けのしくみ): 図3 - プロジェクトをVisual Studioで開く。 "ツール"メニューから"NuGetパッケージマネージャー"を選択し、"ソリューションのNuGetパッケージを管理"を選択します。 NuGet パッケージ マネージャー インターフェイスで、[参照] タブで"IronPDF"パッケージを検索します。 そして、IronPDFの最新バージョンを選択してインストールします。

では、ウェブサイトコンテンツをPDFファイルとしてダウンロードする機能を追加するためにアプリケーションを修正しましょう。

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using IronPdf;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

namespace RestFullMinimalApi.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        /// <summary>
        /// Retrieves WeatherForecast
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }

        /// <summary>
        /// Retrieves WeatherForecast as Pdf
        /// </summary>
        /// <remarks>Awesomeness!</remarks>
        /// <response code="200">Retrieved</response>
        /// <response code="404">Not found</response>
        /// <response code="500">Oops! Can't lookup your request right now</response>
        [HttpGet("download", Name = "DownloadWeatherForecast")]
        public IActionResult GetWeatherPdf()
        {
            var results = Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            }).ToArray();

            var html = GetHtml(results);
            var renderer = new ChromePdfRenderer();
            var pdf = renderer.RenderHtmlAsPdf(html);
            var fileName = "WeatherReport.pdf";
            pdf.SaveAs(fileName);

            var stream = new FileStream(fileName, FileMode.Open);
            // Return the PDF file for download
            return new FileStreamResult(stream, "application/octet-stream") { FileDownloadName = fileName };
        }

        private static string GetHtml(WeatherForecast[] weatherForecasts)
        {
            string header = @"
<html>
<head><title>WeatherForecast</title></head>
<body>
<h1>WeatherForecast</h1>
";

            var footer = @"
</body>
</html>";

            var htmlContent = header;
            foreach (var weather in weatherForecasts)
            {
                htmlContent += $@"
    <h2>{weather.Date}</h2>
    <p>Summary: {weather.Summary}</p>
    <p>Temperature in Celsius: {weather.TemperatureC}</p>
    <p>Temperature in Fahrenheit: {weather.TemperatureF}</p>
";
            }
            htmlContent += footer;
            return htmlContent;
        }
    }

    public class WeatherForecast
    {
        public DateTime Date { get; set; }
        public int TemperatureC { get; set; }
        public string Summary { get; set; }
        
        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    }
}

ここでは、天気データを使用してHTML文字列を生成し、それを使用してPDFドキュメントを作成します。

HTMLコンテンツ

Swashbuckle ASP .NET Core(開発者向けの仕組み):図4 - 天気予報のHTMLコンテンツ。

そしてPDFレポートは次のようになります。

Swashbuckle ASP .NET Core(開発者向けの仕組み):図5 - HTMLからPDFへの出力ファイル:WeatherReport.pdf

完全なコードはGitHub - Swashbuckle Demoソースコードにあります。
ドキュメントには、試用ライセンス用の小さな透かしがありますが、有効なライセンスで削除可能です。

ライセンス (無料トライアル利用可能)

上記のコードを機能させるには、ライセンスキーが必要です。 このキーをappsettings.jsonファイルに配置します。

{
    "IronPdf": {
        "LicenseKey": "your license key"
    }
}
JSON

試用ライセンスは、IronPDFの試用登録に登録すると開発者向けに利用可能です。 試用ライセンスにはクレジットカードは不要です。 メールアドレスを登録して無料の試用版を取得してください。

結論

SwashbuckleとIronPDFを理解することで、ASP.NET CoreアプリケーションにAPIドキュメントとPDF生成機能を効果的に統合できます。 IronPDFでは、はじめにのための包括的なドキュメントと、さまざまなPDF生成のためのコード例も提供しています。

また、Iron Softwareの関連ソフトウェア製品を探求することで、コーディングスキルを向上させ、現代のアプリケーション要件を満たすことができます。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から