比較

Spire.PDFとIronPDFの比較:技術比較ガイド

Spire.PDFとIronPDFの比較:.NET PDF生成比較ガイド

.NET開発者がPDFの生成と操作ライブラリを評価するとき、Spire.PDFとIronPDFは文書の品質と使いやすさに重要な意味を持つ根本的に異なるアプローチです。 Spire.PDFはE-iceblueオフィススイートの包括的なPDFライブラリを提供し、IronPDFは最新のChromiumベースのHTML-to-PDFエンジンを提供します。この技術比較では、2025年以降に.NETアプリケーションのPDF生成を決定するプロの開発者やアーキテクトにとって最も重要な次元にわたって、両ライブラリを検証します。

スパイアを理解する.PDF

Spire.PDFは、.NET開発者向けに設計された商用PDFライブラリで、E-iceblue包括的オフィススイートの一部であることが認められています。その統合機能は、他のスイートコンポーネントと連携し、Word、Excel、PowerPointの処理と並行して広範なPDF操作を必要とする組織に統一された開発体験を提供します。

Spire.PDFは、PDFファイルの作成、読み取り、書き込み、操作が可能な、PDF処理への多用途なアプローチを提供します。 この汎用性は、E-iceblueエコシステム内のレガシー互換性とクロスツールの一貫性を必要とするシナリオでの採用を後押しします。

重大な制限: Spire.PDFには重大なアーキテクチャ上の問題があります。LoadFromHTML()メソッドを使ってHTMLをPDFに変換するとき、実際のテキストではなく、ビットマップ画像としてテキストをレンダリングすることがよくあります。 このため、テキストを選択、検索、コピーできないPDFが作成されます。

IronPDFの理解

IronPDFは、最新のChromiumベースのレンダリングエンジンを使用する、商業的にサポートされているPDF生成ライブラリを提供します。このライブラリは、HTML、CSS、JavaScriptを真のテキストレンダリングでPDF文書に変換し、すべてのテキストが選択可能で、検索可能で、アクセス可能であることを保証します。

Spire.PDFの画像ベースのアプローチとは異なり、IronPDFはテキストを実際のテキスト文字としてPDFに保持し、Flexbox、CSS Grid、CSS Variablesを含むCSS3の全機能をサポートします。

画像としてのテキスト問題

Spire.PDFとIronPDFの最も重要な違いは、PDFドキュメント内でのテキストのレンダリング方法にあります。 この基本的なアーキテクチャの違いは、文書の使いやすさにさまざまな形で影響します。

Spire.PDF画像ベースのレンダリングについて

Spire.PDFがHTMLをPDFに変換する際、テキストはしばしばビットマップ画像としてレンダリングされます:

// ❌ Spire.PDF - Creates image-based PDF
PdfDocument pdf = new PdfDocument();
pdf.LoadFromHTML("<h1>Important Contract</h1>", false, true, true);
pdf.SaveToFile("contract.pdf");

// Problems with resulting PDF:
// - Text CANNOT be selected
// - Text CANNOT be searched
// - Text CANNOT be copied
// - Screen readers CANNOT read it (accessibility violation)
// - File size is MUCH larger
// - Zooming causes pixelation
// ❌ Spire.PDF - Creates image-based PDF
PdfDocument pdf = new PdfDocument();
pdf.LoadFromHTML("<h1>Important Contract</h1>", false, true, true);
pdf.SaveToFile("contract.pdf");

// Problems with resulting PDF:
// - Text CANNOT be selected
// - Text CANNOT be searched
// - Text CANNOT be copied
// - Screen readers CANNOT read it (accessibility violation)
// - File size is MUCH larger
// - Zooming causes pixelation
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFトゥルーテキストレンダリング

IronPDFはテキストを実際のテキスト文字として保持します:

using IronPdf;

// ✅IronPDF- Creates real text PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
using IronPdf;

// ✅IronPDF- Creates real text PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Important Contract</h1>");
pdf.SaveAs("contract.pdf");

// Result:
// ✅ Text is fully selectable
// ✅ Text is searchable with Ctrl+F
// ✅ Text can be copied to clipboard
// ✅ Screen readers work perfectly
// ✅ File size is compact
// ✅ Zooming is crystal clear
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ドキュメントのユーザビリティへの影響

能力Spire.PDF(画像ベース)IronPDF (トゥルーテキスト)
テキストの選択❌ 不可✅ フルセレクション
テキスト検索(Ctrl+F)❌ "該当するものがありません"✅ 完璧に動作します。
コピー/貼り付け❌ コピー不可✅ 完璧に動作します。
スクリーンリーダー❌ コンテンツが読めない。✅ 完全なアクセシビリティ
ファイルサイズ大きい(イメージ)コンパクト(テキスト)
ズーム品質ピクセル化クリスタルクリア

インターネット エクスプローラーのレンダリング問題

Spire.PDFは、多くのシナリオでHTMLレンダリングをInternet Explorer/Edge Legacyに依存しているため、最新のWeb標準との互換性に問題があります。

Spire.PDFレンダリングエンジンの制限

<!-- This HTML renders incorrectly in Spire.PDF -->
<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<!-- CSS Variables don't work -->
<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
<!-- This HTML renders incorrectly in Spire.PDF -->
<div style="display: flex; justify-content: space-between; gap: 20px;">
    <div style="flex: 1;">Column 1</div>
    <div style="flex: 1;">Column 2</div>
</div>

<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>

<!-- CSS Variables don't work -->
<style>
:root { --primary-color: #007bff; }
h1 { color: var(--primary-color); }
</style>
HTML

IronPDFモダンクロミウムエンジン

IronPDFは最新のChromiumレンダリングエンジンを使用しており、最新のCSS機能をすべてサポートしています:

using IronPdf;

// ✅IronPDF- Uses modern Chromium rendering
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
using IronPdf;

// ✅IronPDF- Uses modern Chromium rendering
var renderer = new ChromePdfRenderer();

var html = @"
<style>
    :root { --primary: #007bff; }
    .container { display: flex; gap: 20px; }
    .grid { display: grid; grid-template-columns: repeat(3, 1fr); }
</style>
<div class='container'>
    <div style='flex: 1; color: var(--primary)'>Column 1</div>
    <div style='flex: 1'>Column 2</div>
</div>
<div class='grid'>
    <div>Item 1</div>
    <div>Item 2</div>
    <div>Item 3</div>
</div>";

var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

機能比較の概要

フィーチャーSpire.PDFIronPDF
HTMLレンダリングIE/Edgeベース(時代遅れ)クロミウム(モダン)
テキスト出力画像(選択不可)実際のテキスト(選択可能)
CSS3のサポート制限的フル
フレックスボックス/グリッドサポートされていませんフルサポート
JavaScript(ジャバスクリプト制限的完全なES6
フォント埋め込み問題点信頼性
PDFアクセシビリティ悪い(画像ベース)優秀
モダン.NET.NET 6+ 部分完全な.NET 6-9
APIデザイン複雑シンプルで直感的
展開フットプリント大規模適度

HTMLからPDFへの変換

コアとなるHTMLからPDFへのワークフローは、ライブラリ間の基本的なAPIと出力の違いを示しています。

Spire.PDFのHTML変換

Spire.PDFは、複数のbooleanパラメータを持つLoadFromHTML()メソッドを使用します:

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        pdf.LoadFromHTML(htmlString, false, true, true);
        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このアプローチには以下が必要です:

  • PdfDocumentインスタンスの作成
  • オプションでPdfHtmlLayoutFormatを設定します。
  • 複数の boolean パラメータを持つ LoadFromHTML() の呼び出し
  • 保存後の明示的なClose()呼び出し
  • 重要: テキストは画像としてレンダリングされる可能性があります。

IronPDFのHTML変換

IronPDFはクリーンなAPIでChromePdfRendererを提供します:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string htmlString = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderHtmlAsPdf メソッドはChromiumレンダリングエンジンを使用し、真のテキスト出力を生成します。 Close()呼び出しは必要ありません-IronPDFは標準的なdisposeパターンを使用します。

PDFマージ

複数のPDFドキュメントをマージすると、ライブラリ間で異なるAPIパターンが明らかになります。

Spire.PDFのPDFマージ

Spire.PDFは、InsertPageRange()メソッドを使って文書をマージします:

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf1 = new PdfDocument();
        pdf1.LoadFromFile("document1.pdf");

        PdfDocument pdf2 = new PdfDocument();
        pdf2.LoadFromFile("document2.pdf");

        pdf1.InsertPageRange(pdf2, 0, pdf2.Pages.Count - 1);

        pdf1.SaveToFile("merged.pdf");
        pdf1.Close();
        pdf2.Close();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このアプローチには以下が必要です:

  • 各ドキュメントを個別に読み込む
  • ページ範囲の計算を使用する (pdf2.Pages.Count - 1)
  • 最初のドキュメントに挿入する(修正する)
  • 両方の文書を明確に閉じる

IronPDFのPDFマージ

IronPDFは静的なMerge()メソッドを提供します:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);

        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);

        merged.SaveAs("merged.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PdfDocument.Merge()メソッドは、オリジナルを変更せずに新しいマージドキュメントを作成します。 明示的なClose()呼び出しは必要ありません。

PDFにテキストを追加する

既存のドキュメントにテキストを追加することで、さまざまなテキストレンダリングの考え方を示します。

Spire.PDFテキストの追加

Spire.PDFはキャンバスベースの描画アプローチを使用しています:

// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
// NuGet: Install-Package Spire.PDF
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System;

class Program
{
    static void Main()
    {
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.Pages.Add();

        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 20);
        PdfBrush brush = new PdfSolidBrush(Color.Black);

        page.Canvas.DrawString("Hello from Spire.PDF!", font, brush, new PointF(50, 50));

        pdf.SaveToFile("output.pdf");
        pdf.Close();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

このアプローチには以下が必要です:

  • フォントとブラシオブジェクトの作成
  • キャンバス描画メソッドの使用
  • PointFによる座標ベースの位置決め
  • 明示的なリソース管理

IronPDFテキストの追加

IronPDFはスタンパーベースのアプローチを採用しています:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");

        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalOffset = 50,
            HorizontalOffset = 50
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

TextStamper クラスは、名前付きプロパティによる宣言的アプローチを提供し、フォントとブラシのオブジェクトを個別に作成する必要性を排除します。

APIマッピングリファレンス

Spire.PDFからIronPdfへの移行を検討しているチームは、この同等操作のマッピングを参照することができます:

Spire.PDFIronPDFノート
<コード>PdfDocument</コード<コード>PdfDocument</コードさまざまな初期化
pdf.LoadFromHTML()を使用してください。<コード>renderer.RenderHtmlAsPdf()</コードIronPDFは真のテキストを作成します。
pdf.LoadFromFile()を使用してください。PdfDocument.FromFile()を使用してください。静的メソッド
pdf.SaveToFile()を使用してください。<コード>pdf.SaveAs()</コードよりシンプルなネーミング
<コード>pdf.Close()</コード不要Disposeパターン
<コード>pdf.InsertPageRange()</コードPdfDocument.Merge()を使用してください。静的マージ方式
PdfFont + PdfBrush です。<コード>TextStamper</コード宣言的スタンピング
page.Canvas.DrawString()<コード>pdf.ApplyStamp()</コードスタンパーベース
<コード>PdfHtmlLayoutFormat</コード<コード>レンダリングオプション</コードレンダリング設定

重要な技術的問題

既知のSpire.PDFの問題

問題インパクトIronPDF ソリューション
画像としてレンダリングされたテキストPDFが検索できない、アクセスできない、テキストがコピーできない。リアルテキストレンダリング
インターネット・エクスプローラー依存性時代遅れのレンダリング、セキュリティリスク最新のChromiumエンジン
フォント埋め込みに失敗しましたドキュメントが他のシステムで間違って見える信頼性の高いフォント処理
大きなデプロイメントフットプリントメモリ使用量が多く、起動が遅い効率的なデプロイメント
限定的なCSSサポート最新のレイアウトが正しく表示されないCSS3をフルサポート

アクセシビリティへの準拠

Spire.PDFのLoadFromHTML()メソッドによって生成された画像ベースのPDFは、アクセシビリティコンプライアンスの問題を引き起こします:

  • WCAG 2.1準拠 - テキストのアクセシビリティ要件を満たしていません。
  • セクション508準拠 - 米国政府のアクセシビリティ基準に適合していません。
  • ADA要件 - 米国障害者法の要件を満たしていない。
  • スクリーンリーダーとの互換性 - コンテンツは読めません。

IronPDFのトゥルーテキストレンダリングはアクセシビリティへの完全な準拠を保証し、スクリーンリーダーはすべてのドキュメントコンテンツを読むことができます。

チームがSpire.PDFへの移行を検討するとき

開発チームは、Spire.PDFに代わるものを評価する必要があります:

テキスト選択性の要件は、ユーザーがコンテンツをコピーしたり、文書内を検索したり、文書管理システムがPDFコンテンツにインデックスを付ける必要があるときに重要になります。 Spire.PDFの画像ベースのレンダリングは、これらの機能をすべてブロックします。

アクセシビリティ・コンプライアンスは、WCAG、セクション508、またはADAの要件の対象となる組織に影響します。 画像ベースのPDFは、アクセシビリティ監査で不合格となり、法的責任を問われる可能性があります。

最新のCSSレイアウトは、デザインがFlexbox、CSS Grid、またはCSS Variablesを使用している場合、正しくレンダリングされません。 Spire.PDFのInternet Explorerベースのレンダリングでは、これらの最新のWeb標準を処理できません。

フォント埋め込みの問題は、異なるシステム上で文書が正しく表示されない原因となります。 ユーザーの報告によると、Spire.PDFは正確なフォントの埋め込みに苦労しており、文書の忠実性に影響を与えているとのことです。

大きなデプロイメントフットプリントは、リソースに制約のある環境に影響を与えます。 Spire.PDFの運用フットプリントは、システムメモリ使用量と関連コストに影響します。

長所とトレードオフ

Spire.PDFの強み

  • 包括的なE-iceblueオフィススイートの一部です。
  • 他のスイート・コンポーネント(Word、Excel、PowerPoint)との統合
  • ツール間の一貫性を必要とするレガシーアプリケーションに適しています。
  • 多彩なPDF操作機能
  • フリーミアムライセンスオプションあり

Spire.PDFの制限事項

  • 画像としてレンダリングされたテキスト(選択、検索、アクセス不可)
  • Internet Explorer依存のレンダリングエンジン
  • 既知のフォント埋め込み問題
  • 大規模なデプロイメント
  • 限定的なモダンCSSのサポート(Flexbox、Grid、CSS変数なし)
  • 明示的なリソース管理を必要とする複雑なAPI

IronPDFの強み

  • 真のテキストレンダリング(選択可能、検索可能、アクセス可能)
  • CSS3をフルサポートする最新のChromiumベースのエンジン
  • 信頼性の高いフォント処理
  • 中程度のデプロイメントフットプリント
  • 包括的なドキュメントと専門的なサポート
  • 明示的なClose()要件のないシンプルなAPI
  • Flexbox、CSS Grid、CSS Variablesの完全サポート
  • PDF操作機能(マージ、分割、スタンプ)。

IronPDFについての考察

  • 商用ライセンスモデル
  • E-iceblueスイートのさまざまなAPIパターン

比較表

フィーチャーSpire.PDFIronPDF
HTMLからPDFへのレンダリング画像としてレンダリングされたテキスト真のテキストレンダリング(選択および検索可能)
レンダリングエンジンインターネットエクスプローラに依存Chromiumベース、最新のウェブ標準準拠
フォントの取り扱いフォント埋め込みに関する既知の問題信頼性の高い堅牢なフォント処理
使用例レガシーアプリケーション、オフィススイート最新のアプリケーション、正確なドキュメントレンダリング
ライセンスフリーミアム/商用商用
展開フットプリント大規模適度

結論

Spire.PDFとIronPDFは異なる組織背景と技術要件に対応しています。 Spire.PDFは、レガシー互換性とクロスツールの一貫性を必要とするE-iceblueオフィススイートに大きく投資している組織に価値を提供します。 また、他のスイート・コンポーネントとの統合機能により、統一された開発体験を提供します。

テキスト選択性、検索性、アクセシビリティ準拠、モダンなCSSレンダリングを必要とするアプリケーションに対して、IronPdfはSpire.PDFでは提供できない重要な機能を提供します。 Chromiumベースのレンダリングエンジンは、CSS3を完全にサポートし、画像ベースのPDF生成の基本的な制限に対処しながら、真のテキスト出力を保証します。

Spire.PDFからIronPDFへの移行を評価する際、チームはテキストアクセシビリティ、ドキュメントの検索性、モダンCSSのサポート、アクセシビリティコンプライアンスに関する特定の要件を考慮する必要があります。 2026年に.NET 10とC# 14をターゲットとし、アクセシビリティを要求されるチームにとって、IronPDFの真のテキストレンダリングアーキテクチャはSpire.PDFの画像ベースのアプローチよりも適切な基盤を提供します。


実装ガイダンスについては、HTMLからPDFへのIronPDFチュートリアルと、最新の.NETアプリケーションのためのPDF生成パターンをカバーするドキュメントをご覧ください