フッターコンテンツにスキップ
移行ガイド

C#でGrabzItからIronPDFに移行する方法

GrabzItからIronPDFへの移行:完全なC#移行ガイド

GrabzItからIronPDFへの移行は、コールバックが複雑なクラウドベースのスクリーンショットキャプチャサービスから、選択可能で検索可能なテキストを含む真のベクターPDFを生成するインプロセスライブラリへと、あなたの.NET PDFワークフローを変えます。 このガイドでは、プロの.NET開発者向けに、外部サーバーへの依存、コールバックハンドラ、キャプチャごとの価格設定を排除した、包括的でステップバイステップの移行パスを提供します。

なぜGrabzItからIronPDFへ移行するのか

GrabzItアーキテクチャの問題

GrabzItは、クラウドベースのスクリーンショットとPDFキャプチャサービスです。迅速な統合には便利ですが、基本的なアーキテクチャ上の制限があります:

1.画像ベースのPDF:GrabzItは、テキストを選択できないスクリーンショットベースのPDFを作成します。 これは、テキスト操作やアクセシビリティを必要とするあらゆるユースケースにおける基本的な制限です。

2.外部処理:すべてのコンテンツは、処理のためにGrabzItのサーバーに送信されます-機密データのプライバシーとコンプライアンスの懸念を作成します。 お客様のHTMLコンテンツは、お客様のインフラストラクチャから離脱します。

3.コールバックの複雑さ:GrabzItは、Webhook処理インフラストラクチャを必要とする非同期コールバックモデルを使用しています。 結果を受け取るためにエンドポイントを設定する必要があり、アーキテクチャが複雑になります。

4.キャプチャごとの価格設定:使用ごとの課金モデルは、規模が大きくなると高額になる可能性があります。 PDFの生成にはコストがかかります。

5.テキスト検索なし: PDFは画像ベースなので、テキスト検索と抽出はOCRなしでは機能しません。

6.ファイルサイズが大きい: 画像ベースのPDFは、ベクターベースのPDFよりもかなり大きく、5~10倍のサイズになることがよくあります。

7.ネットワーク依存:インターネット接続なしではPDFを生成できないため、オフラインシナリオは不可能です。

8.レイテンシー:PDFを生成するたびに、外部サーバーへのネットワークのラウンドトリップが必要となり、500ms~5sのレイテンシーが追加されます。

GrabzItとIronPDFの比較

アスペクトGrabzItIronPDF
PDFタイプ画像ベース(スクリーンショット)真のベクトルPDF
テキストの選択不可全文選択
テキスト検索OCRが必要ネイティブ検索可能
処理場所外部サーバーローカル/プロセス
プライバシー外部送信データデータはローカルのまま
遅延ネットワーク・ラウンドトリップ(500ms~5s)ローカル処理(~100ms)
価格モデルキャプチャ開発者ライセンス
オフライン機能なしはい
ファイルサイズ大規模(画像データ)小(ベクトルデータ)
要コールバックはい(非同期)いいえ(同期/非同期)
CSS/JSサポート制限的フルChromiumエンジン

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは最新の.NETパターンとネイティブに統合されたローカル処理で、将来を見据えた基盤を提供します。


マイグレーションの複雑さの評価

機能別の見積もり作業

フィーチャー移行の複雑さノート
HTMLからPDFへ低レベルメソッドの直接置換
URLからPDFへ低レベルメソッドの直接置換
HTMLから画像へ低レベルPDFをレンダリングして変換
ページサイズ/余白低レベルプロパティのマッピング
コールバックハンドラ低レベル完全に削除する
透かし低レベルHTMLベースのアプローチ
ヘッダー/フッター中規模テンプレートからHTMLへの変換
認証キー低レベルGrabzItのキーを削除する

パラダイムシフト

このGrabzItの移行における基本的なシフトは、コールバックベースの非同期クラウド処理からプロセス内同期生成への移行です:

GrabzIt:   HTMLを送信 → コールバックを待つ → 結果をサーバーから取得
IronPDF:   HTMLをレンダリング → すぐにPDFを取得

始める前に

前提条件

1..NETバージョン: IronPDFは.NET Framework 4.6.2+と.NET Core 3.1+ / .NET 5/6/7/8/9+をサポートしています。 2.ライセンスキーironpdf.comからIronPDFライセンスキーを取得してください。 3.インフラストラクチャの削除を計画してください:廃止のためのコールバックハンドラとウェブフックエンドポイントの文書化

すべてのGrabzItの使用法を特定する。

# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .

# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .

# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
# FindGrabzItclient usage
grep -r "GrabzItClient\|GrabzIt\." --include="*.cs" .

# Find callback handlers
grep -r "GrabzIt\|grabzit" --include="*.ashx" --include="*.aspx" --include="*.cs" .

# Find configuration
grep -r "APPLICATION_KEY\|APPLICATION_SECRET\|grabzit" --include="*.config" --include="*.json" .
SHELL

NuGetパッケージの変更

# Remove GrabzIt
dotnet remove package GrabzIt

# Install IronPDF
dotnet add package IronPdf
# Remove GrabzIt
dotnet remove package GrabzIt

# Install IronPDF
dotnet add package IronPdf
SHELL

クイック スタート マイグレーション

ステップ 1: ライセンス構成の更新

翻訳前 (GrabzIt):

GrabzItは、クライアントのインスタンス化ごとにアプリケーションキーとシークレットを必要とします:

var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Then create renderer without credentials
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ステップ 2: 名前空間インポートを更新する

// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;

// After (IronPDF)
using IronPdf;
// Before (GrabzIt)
using GrabzIt;
using GrabzIt.Parameters;

// After (IronPDF)
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

完全な API リファレンス

GrabzItClientからIronPDFへのマッピング

GrabzItメソッドIronPDF 同等物ノート
new GrabzItClient(key, secret).new ChromePdfRenderer().認証不要
HTMLToPDF(html)を使用してください。renderer.RenderHtmlAsPdf(html).PDFを直接返す
URLToPDF(url)のようにします。renderer.RenderUrlAsPdf(url)のようにします。PDFを直接返す
HTMLToImage(html)のようにします。<コード>pdf.ToBitmap()</コードレンダリング→変換
Save(callbackUrl)を実行します。pdf.SaveAs(path)のようにします。即戦力
SaveTo(ファイルパス)pdf.SaveAs(filePath).同じ機能
<コード>GetResult(id)<コード></コード該当なしコールバック不要
<コード>GetStatus(id)</コード該当なし同期操作

PDFOptionsからRenderingOptionsへのマッピング。

GrabzIt PDFオプションIronPDF プロパティノート
ページサイズ (A4, レター)<コード>RenderingOptions.PaperSize</コードPdfPaperSize列挙型を使用してください。
<コード>カスタムID</コード該当なし不要
<コード>マージントップ</コードRenderingOptions.MarginTop同じ単位(mm)
<コード>マージンボトム</コードRenderingOptions.MarginBottom同じ単位(mm)

ImageOptionsからIronPDFへのマッピング

GrabzIt ImageOptionsIronPDF 同等物ノート
<コード>フォーマット</コード> (png, jpg)bitmap.Save(path, ImageFormat.Png).ToBitmap()の後
<コード>幅</コードRenderingOptions.ViewPortWidthビューポート幅
<コード>高さ</コードRenderingOptions.ViewPortHeightビューポートの高さ

コード移行の例

例1: HTMLからPDFへの変換

翻訳前 (GrabzIt):

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.CustomId = "my-pdf";

        grabzIt.HTMLToPDF("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

この違いは大きい:GrabzItはAPI認証情報(YOUR_APPLICATION_KEY, YOUR_APPLICATION_SECRET)を必要とし、カスタムIDを持つPDFOptionsオブジェクトを作成し、結果は外部サーバーを通して送信される画像ベースのPDFです。 IronPDFのChromePdfRendererは選択可能なテキストを含む真のベクターPDFをローカルに生成します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: URLからPDFへの変換

翻訳前 (GrabzIt):

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new PDFOptions();
        options.PageSize = PageSize.A4;

        grabzIt.URLToPDF("https://www.example.com", options);
        grabzIt.SaveTo("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrabzItは、オプションオブジェクトを通してPageSize.A4を設定し、外部サーバーと認証する必要があります。 IronPDFのRenderUrlAsPdf()メソッドはURLを直接受け取り、CSSとJavaScriptを完全にサポートしたChromiumエンジンを使ってローカルにレンダリングします。 URLからPDFへの変換の詳細については、こちらをご覧ください。

例3: HTMLから画像への変換

翻訳前 (GrabzIt):

// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
// NuGet: Install-Package GrabzIt
using GrabzIt;
using GrabzIt.Parameters;
using System;

class Program
{
    static void Main()
    {
        var grabzIt = new GrabzItClient("YOUR_APPLICATION_KEY", "YOUR_APPLICATION_SECRET");
        var options = new ImageOptions();
        options.Format = ImageFormat.png;
        options.Width = 800;
        options.Height = 600;

        grabzIt.HTMLToImage("<html><body><h1>Hello World</h1></body></html>", options);
        grabzIt.SaveTo("output.png");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1></body></html>");
        var images = pdf.ToBitmap();
        images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

GrabzItは、フォーマット、幅、高さを設定するためのImageOptionsを備えた専用のHTMLToImage()メソッドを提供します。 IronPDFはまずRenderHtmlAsPdf()でHTMLをPDFにレンダリングし、次にToBitmap()でビットマップに変換することで同じ結果を得ます。 このアプローチでは、1回のレンダー操作でPDFと画像の両方の出力が得られます。


重要な移行に関する注意事項

コールバックは必要ありません。

最も重要なアーキテクチャの変更は、コールバック・ハンドラを完全に削除することです:

// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback");  // Wait for callback...

// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string id = context.Request.QueryString["id"];
        GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
        GrabzItFile file = grabzIt.GetResult(id);
        file.Save("output.pdf");
    }
}

// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");  // Done! なし callback needed.
// GrabzIt: Async callback pattern
grabzIt.HTMLToPDF(html, options);
grabzIt.Save("https://myserver.com/grabzit-callback");  // Wait for callback...

// Callback handler (separate endpoint)
public class GrabzItHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string id = context.Request.QueryString["id"];
        GrabzItClient grabzIt = new GrabzItClient("APP_KEY", "APP_SECRET");
        GrabzItFile file = grabzIt.GetResult(id);
        file.Save("output.pdf");
    }
}

// IronPDF: Synchronous - result immediately available
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");  // Done! なし callback needed.
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行後、すべてのGrabzItコールバックハンドラ.ashxファイル、ハンドラエンドポイント、Webhook設定)を削除してください。

真のベクター PDF

GrabzItは、テキストを選択できない画像ベースのPDFを作成します。 IronPDFは真のベクターPDFを生成します:

// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();  // Works without OCR!
// With IronPDF, text extraction works natively
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();  // Works without OCR!
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

詳細については、テキスト抽出ドキュメントを参照してください。

ファイルサイズの縮小

ベクターベースのPDFは通常、GrabzItの画像ベースのPDFよりも5~10倍小さくなります。 これにより、ストレージコスト、ダウンロード時間、電子メール添付の実現性が向上します。

API認証情報の削除

GrabzItは、すべての操作にAPI認証情報を必要とします:

// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
// Remove these from configuration
// YOUR_APPLICATION_KEY
// YOUR_APPLICATION_SECRET
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDFはアプリケーション起動時に設定される単一のライセンスキーを使用します。


トラブルシューティング

問題 1: GrabzItClient が見つかりません。

問題:GrabzIt を削除した後、GrabzItClient参照がコンパイル エラーを引き起こします。

解決策ChromePdfRendererに置き換えてください:

// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");

// Replace with:
var renderer = new ChromePdfRenderer();
// Remove:
// var grabzIt = new GrabzItClient("KEY", "SECRET");

// Replace with:
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

問題2: PDFOptionsが見つかりません

問題PDFOptionsクラスがIronPDFに存在しません。

解決策RenderingOptionsプロパティを使用します:

// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// GrabzIt
var options = new PDFOptions();
options.PageSize = PageSize.A4;

// IronPDF
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

問題 3: コールバックハンドラはまだ参照されている

問題:アプリケーションはコールバックエンドポイントを期待します。

解決策:コールバック基盤を完全に削除する。 IronPDFは結果を同期的に返します。

問題4:ImageOptionsが見つかりません

問題ImageOptionsクラスがIronPDFに存在しません。

解決策:まずPDFにレンダリングし、次に変換します:

// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
// GrabzIt
var options = new ImageOptions();
options.Format = ImageFormat.png;
grabzIt.HTMLToImage(html, options);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
var images = pdf.ToBitmap();
images[0].Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • [コードベース内のすべてのGrabzIt APIコールをインベントリ化する。
  • [コールバックハンドラとウェブフックエンドポイントの特定
  • [現在のGrabzItのオプションとテンプレートの文書化
  • [IronPDF ライセンスキーの取得
  • [ ] コールバックハンドラの廃止を計画する

コードの移行

  • [ ] IronPdf NuGetパッケージをインストールします:dotnet add package IronPdf<//code>.
  • [ ]GrabzItNuGet パッケージを削除します:dotnet remove package GrabzIt.
  • [ ] GrabzItClientChromePdfRendererに置き換えてください。
  • [ ] HTMLToPDF()RenderHtmlAsPdf()に変換してください。
  • [ ] URLToPDF()RenderUrlAsPdf()に変換してください。
  • [Save(callback)SaveAs(path) に置き換えてください。
  • [ ] PDFOptionsからRenderingOptionsにオプションを更新する。

インフラストラクチャの移行

  • [ ] コールバックハンドラファイル(.ashxなど)の削除
  • [ ] 設定からGrabzIt APIキーを削除する
  • [ウェブフックURL設定の削除
  • [設定にIronPDFライセンスキーを追加する
  • [ポーリング/ステータスチェックコードの削除

テスティング

  • [HTMLからPDFへの変換テスト
  • [テストURLからPDFへの変換
  • [出力されたPDFでテキストが選択可能であることを確認してください。
  • [テキスト抽出のテスト(OCRなし)
  • [ファイルサイズが小さいことを確認してください。
  • [ネットワーク遅延のないパフォーマンステスト

移行後

  • [ ] GrabzItの購読をキャンセルする
  • [アーカイブコールバックハンドラコード
  • [ドキュメントの更新
  • [GrabzIt関連のエラーの監視

結論

GrabzItからIronPDFへの移行は.NETアプリケーションにいくつかの重要な改善をもたらします。 画像ベースのスクリーンショットの代わりに、選択可能で検索可能なテキストを含む真のベクターPDFが得られます。 ローカル処理により、外部サーバーへの依存、プライバシーの懸念、ネットワーク遅延を排除します。 同期APIはコールバックの複雑さを完全に取り除き、ウェブフックハンドラやステータスポーリングのコードを削除します。

この移行における主な変更点は以下のとおりです: 1.PDFタイプ:画像ベースのスクリーンショット → 真のベクターPDF 2.処理: 外部サーバー → ローカル・インプロセス 3.アーキテクチャ:非同期コールバック → 同期結果 4.ファイルサイズ:大きな画像データ → 小さなベクトルデータ 5.テキスト:OCRが必要 → ネイティブ検索可能

IronPDFドキュメントチュートリアルAPIリファレンスを参照し、GrabzItへの移行を加速させてください。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。