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

Nswag C#(開発者向けの動作方法)

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

API は、さまざまなソフトウェアシステムやコンポーネント間のコミュニケーションを促進するため、今日のソフトウェア開発環境において不可欠です。 開発者が API を効率的に利用するためには、徹底的で理解しやすいドキュメントが必要です。 C# API ドキュメントのワークフローを改善できる効果的なツールには、NSwag C# と IronPDF があります。 この投稿では、.NET Core を使用して API 仕様 を生成し、これらの仕様を IronPDF を使用して高品質の PDF ドキュメントにする方法を紹介します。

How to Use NSwag in C#

  1. Swagger UI を使用して RESTful Web API を作成します。
  2. C# コンソールアプリケーションを作成します。
  3. NSwag ライブラリをインストールします。
  4. 名前空間をインポートし、オブジェクトを作成します。
  5. Swagger JSON を C# コードに変換します。
  6. コードを実行し、結果を表示します。

NSwag の理解

NSwag は、ASP.NET Web API、ASP.NET Core、または他の .NET Frameworkを使用して構築された API のために Swagger 仕様、すなわち OpenAPI ドキュメントを作成するプロセスを容易にするために作成された .NET の Swagger ツールチェーンです。

NSwag の特徴

Swagger 仕様の生成

NSwag は、コントローラー、モデル、および .NET アセンブリを使用して Swagger 仕様を自動的に生成できます。 NSwag は API コードの構造を検査することで、API エンドポイント、リクエスト/レスポンス形式、認証手法などをカバーする包括的なドキュメントを生成します。

.NET プロジェクトへの統合

開発者は、NSwag を .NET プロジェクトに統合することで、開発プロセスに Swagger 生成を簡単に組み込むことができます。 開発者は、NSwag を .NET Core プロジェクトに追加することで、コードベースとともにドキュメントが更新されることを確認できます。これにより、プロジェクトが構築されるたびに Swagger 仕様が自動的に生成されます。

カスタマイズと拡張

NSwag が提供する幅広いカスタマイズオプションにより、開発者は生成された Swagger 仕様を簡単に独自のニーズに合わせて調整できます。 開発者は、構成設定や注釈を通じて、生成されたドキュメントの多くのコンポーネント(応答コード、パラメータの説明、ルート命名規則など)を管理できます。

NSwag の始め方

NSwagをC#コンソールアプリで設定する

NSwag ベースクラスライブラリには、コア、注釈、コード生成用の名前空間が含まれており、NuGet からのインストールで入手可能です。 NSwag を C# アプリケーションに統合してコードと Swagger 仕様を生成する方法、および NSwag が開発プロセスの効率をどのように向上させるか。

NSwag C# (開発者向けの作動方法): 図1 - Visual Studio パッケージマネージャで NSwag を検索し、インストールする

Windows コンソールとフォームへの NSwag の実装

自動化されたクライアント生成を通じて、開発者は NSwag を Windows デスクトップ アプリケーションに統合することで、デスクトップ アプリ内から API に直接アクセスするコードを効率的に生成できます。 オンラインサービスや RESTful API と通信するデスクトップアプリを開発する際にとても役に立ちます。

NSwag は、内部 API の API ドキュメントや外部 API を利用するためのクライアントコードを生成するために Web アプリケーションで使用できます。これにより、開発者はアプリケーションのフロントエンドとバックエンドコンポーネントを一貫させることができます。

NSwag C#の例

以下は、NSwag を使用して C# クライアント コードを生成する方法を示すコード例です。

using NSwag.CodeGeneration.CSharp;
using NSwag;
using System.Reflection;
using System.CodeDom.Compiler;
using Microsoft.CodeAnalysis;
using System.Net.Http;
using System.IO;
using System.Collections.Generic;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var wclient = new System.Net.WebClient())
        {
            // Create JSON file data from the Swagger .NET Core web API
            var document = await OpenApiDocument.FromJsonAsync(wclient.DownloadString("http://localhost:5013/swagger/v1/swagger.json"));
            var settings = new CSharpClientGeneratorSettings
            {
                ClassName = "Weather",
                CSharpGeneratorSettings = { Namespace = "Demo" }
            };

            var generator = new CSharpClientGenerator(document, settings);
            var code = generator.GenerateFile();
            var assembly = CompileCode(code);
            var clientType = assembly.GetType("Demo.WeatherClient"); // Replace with your actual client class name
            using (var httpClient = new HttpClient())
            {
                var client = (IApiClient)Activator.CreateInstance(clientType, httpClient);
                var result = await client.GetWeatherForecastAsync();
                foreach (var item in result)
                {
                    Console.WriteLine($"Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}");
                }
            }
        }
    }

    static Assembly CompileCode(string code)
    {
        using (var memoryStream = new MemoryStream())
        {
            var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location);
            var references = new List<MetadataReference>
            {
                MetadataReference.CreateFromFile(typeof(object).GetTypeInfo().Assembly.Location),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "Microsoft.AspNetCore.Mvc.dll")),
                MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Private.CoreLib.dll"))
            };

            var compilation = Microsoft.CodeAnalysis.CSharp.CSharpCompilation.Create("ApiClient")
                .WithOptions(new Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary))
                .AddReferences(references)
                .AddSyntaxTrees(Microsoft.CodeAnalysis.CSharp.SyntaxFactory.ParseSyntaxTree(code));

            var emitResult = compilation.Emit(memoryStream);
            if (!emitResult.Success)
            {
                Console.WriteLine("Compilation errors:");
                foreach (var diagnostic in emitResult.Diagnostics)
                {
                    Console.WriteLine(diagnostic);
                }
                return null;
            }
            memoryStream.Seek(0, SeekOrigin.Begin);
            return Assembly.Load(memoryStream.ToArray());
        }
    }

    public interface IApiClient
    {
        // Replace with your actual method name and return type
        Task<List<WeatherForecast>> GetWeatherForecastAsync();
    }

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

使用したいAPIのために、Swagger仕様のURLを指定します(swaggerUrl)。 次に、生成および実行されるクライアントコードを DLL アセンブリに定義します。 FromJsonAsyncを用います。 生成されたクライアントコードを変更するには、コード生成器の設定を調整します(CSharpClientGeneratorSettings)。 この例では、生成されたクライアントコードのクラス名と名前空間を指定します。

ロードされたSwaggerドキュメントから、CSharpClientGeneratorのインスタンスを構築し、それを使用してクライアントコードを生成します。 作成されたクライアントコードは指定された出力パスに保存されます。 手続き中に発生する可能性のある例外やエラーに対応し、関連する通知をコンソールに表示します。

NSwag C# (開発者向けの作動方法): 図2 - 上記のコードからのコンソール出力

NSwag の操作

クライアントコードの生成

NSwag は Swagger 仕様を使用して、Java、TypeScript、C# など多くの言語でクライアントコードを生成できます。 これにより、開発者は API を簡単にアプリケーションで利用することができます。

サーバーコードの生成

Swagger 仕様を基にして、NSwag は ASP.NET Core コントローラーなどのサーバーコードも生成できます。 これは API 実装のためのサーバーサイドコードを迅速にスキャフォールディングするのに役立ちます。

インタラクティブな API ドキュメントの生成

既存の Swagger 仕様を基にして、NSwag は Swagger UI のようなインタラクティブな API ドキュメントを生成できます。 このドキュメントは API エンドポイントを探検しテストするための使いやすいインターフェースを提供します。

プロキシクラスの生成

SOAP ベースの API と統合するために、NSwag はプロキシクラスを生成できます。 これにより、プログラマーは生成されたクライアントコードを使用してアプリケーション内から SOAP サービスにアクセスできます。

Swagger 仕様の検証

NSwag は Swagger 仕様が OpenAPI/Swagger 標準に従っていることを確認するために検証することが可能です。 これにより API ドキュメント内のエラーや不一致を見つけやすくなります。

NSwag と IronPDF の統合

NSwag を IronPDF と統合することで、両技術の利点を活用して API ドキュメントのワークフローが改善されます。 開発者は、NSwag を使用して Swagger 仕様を生成し、IronPDF を使用してそれらを PDF に変換することによって、オフラインでも利用可能で共有しやすい .NET Web API ドキュメントを作成できます。 統合プロセスは以下の手順で行います。

IronPDF は HTML から PDF への変換に秀でており、元のレイアウトとスタイルを正確に保存します。 これは、レポート、請求書、ドキュメントなどの Web ベースのコンテンツから PDF を作成するのに最適です。 HTML ファイル、URL、または生の HTML 文字列のサポートにより、IronPDF は高品質な 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のインストール

  • Visual Studio プロジェクトを開始します。
  • "ツール">"NuGet パッケージ マネージャー">"パッケージ マネージャー コンソール"を選択します。
  • コマンドプロンプトを開き、パッケージマネージャーコンソールで次のコマンドを入力します。

PM > Install-Package IronPdf

  • または、ソリューションの NuGet パッケージマネージャーを使用して IronPDF をインストールできます。
  • 検索結果から IronPDF パッケージを探して選択し、インストールオプションをクリックしてください。 Visual Studio がダウンロードとインストールを代行します。

NSwag C# (How It Works For Developers): Figure 3 - Install IronPDF using the Manage NuGet Package for Solution by searching "IronPDF" in the search bar of NuGet Package Manager, then select the project and click on the Install button.

  • NuGet が IronPDF パッケージとプロジェクトに必要な依存関係をインストールします。
  • インストール後、IronPDF はプロジェクトで利用できるようになります。

NuGetウェブサイトからのインストール

IronPDF の機能、互換性、およびダウンロードに関する詳細情報については、NuGet 上の IronPDF ページをご覧ください。

DLLを利用したインストール

また、DLL ファイルを使用して IronPDF をプロジェクトに直接組み込むこともできます。DLL を含む ZIP ファイルをダウンロードするには、IronPDF ダウンロードリンクをクリックしてください。 ファイルを解凍してプロジェクトに DLL を追加してください。

ロジックを実装する

NSwag を利用することで、開発者は IronPDF と結合したCodeGeneration.CSharpを使用して、API ドキュメントとクライアントコードをより迅速に作成できます。 統合ワークフローは以下の手順を含みます。

  1. クライアントコードの生成: Swagger スペックから C# クライアントコードを作成するには、NSwag.CodeGeneration.CSharpを使用します。 このステップでは、API エンドポイントとの通信のためのクライアントクラスとメソッドの生成が自動化されます。
  2. NSwagを利用してデータを取得: Swagger スペックから JSON ドキュメントを生成するには、CodeGeneration.CSharpを使用します。 この段階では、リクエスト/レスポンス形式、認証方法、API クライアントエンドポイントを人間が理解できるドキュメントとして作成します。
  3. JSON から PDF への変換: IronPDF を使用して、生成されたコードの結果を PDF ドキュメントに変換します。 この段階では、HTML テキストを共有および配布可能な洗練された PDF ドキュメントに変換します。
  4. PDF ドキュメントの改善: ヘッダー、フッター、透かし、またはユニークなブランドなどのコンテンツを IronPDF を使用して PDF ドキュメントに追加します。 このステージでは、開発者は自身の好みに合わせて PDF ドキュメントの外観とブランディングをカスタマイズできます。
using IronPdf;
using System.Text;
using System.Collections.Generic;

StringBuilder sb = new StringBuilder();

foreach (var item in result)
{
    sb.Append($"<p>Date: {item.Date} F: {item.TemperatureF} C: {item.TemperatureC} Summary: {item.Summary}</p>");
}

var renderer = new HtmlToPdf();
var pdf = renderer.RenderHtmlAsPdf(sb.ToString());
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF generated successfully!");
Console.ReadKey();

上記のコードは、結果オブジェクトから取得したデータにアクセスし、Summaryのフィールドをループ内で段落に追加します。その後、PDFの出力ファイルパスを指定し、PDFの生成が成功したことをユーザーに通知します。

上記コードの結果は以下です。

NSwag C# (開発者向けの作動方法): 図4 - 上記のコードからの出力例

結論

CodeGeneration NSwag テクノロジー(CSharp や IronPDF を含む)は、クライアントコード生成と API ドキュメント化のプロセスを効率化するために優れています。 開発者は、これらのツールを C# アプリケーションに統合することで、API ドリブン ソリューションの作成をスピードアップし、API ドキュメントの作成を自動化し、プロフェッショナルな外観の PDF 出版物を生成できます。 IronPDFを用いたNSwag.CodeGeneration.CSharpは、APIsの効率的なドキュメンテーションとC#でのクライアントコード生成に完全なソリューションを提供します。これはデスクトップ、ウェブ、またはクラウドベースのアプリを開発しているかに関わらず有効です。

Lite バンドルには、永久ライセンス、1 年間のソフトウェア メンテナンス、およびライブラリのアップグレードが含まれています。 IronPDF は、再配布および期間に制限のある無料のライセンスを提供しています。ユーザーは、試用期間中にウィーターマークを視認せずにソリューションを評価できます。 価格とライセンスに関する追加情報は、IronPDFのライセンス情報をご覧ください。 Iron Software の製品ライブラリに関する詳細については、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 Iron Suite
無料のライブデモを予約する
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から