移行ガイド C#でKaizen.ioからIronPDFに移行する方法 カーティス・チャウ 公開日:2026年1月25日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る Kaizen.ioのHTML-to-PDFからIronPDFに移行することで、.NET PDFワークフローをネットワーク遅延やデータプライバシーの懸念のあるクラウド依存のサービスから、データをインフラ内に保持するローカルのインプロセスライブラリに変換します。 このガイドでは、プロの.NET開発者向けに、外部APIへの依存やリクエストごとの価格設定を排除した、包括的でステップバイステップの移行パスを提供します。 Kaizen.ioからIronPDFへ移行する理由 クラウドベースのAPIの課題 Kaizen.io HTML-to-PDF は、他のクラウドベースの PDF サービスと同様に、本番アプリケーションに影響を与える制限があります: 1.クラウドへの依存:常時インターネット接続と外部サービスの可用性が必要です。 Kaizen.ioサービスにダウンタイムが発生すると、アプリケーションのPDF生成が停止します。 2.データ プライバシーに関する懸念:顧客データ、財務レポート、機密文書などの機密性の高い HTML コンテンツは、処理のためにサードパーティのサーバーに送信する必要があります。 3.ネットワーク遅延: PDF を生成するたびに、100 ~ 500 ミリ秒以上のネットワーク往復遅延が発生し、アプリケーションの応答時間に大きなオーバーヘッドが追加されます。 4.リクエストごとの価格設定:コストは使用量に応じて直接増減するため、大量の PDF を生成するとコストが高くなります。 5.レート制限:トラフィック量が多い期間に API スロットリングが発生すると、最も必要なときに PDF 生成が失敗したり、遅延したりする可能性があります。 6.ベンダー ロックイン: API の変更やサービスの中止のリスクにより、アプリケーションは外部のビジネス上の決定に対して脆弱になります。 Kaizen.ioとIronPDFの比較 フィーチャー Kaizen.io IronPDF 処理 クラウド(外部サーバー) ローカル(進行中) データプライバシー 外部送信データ データはインフラから離れません 遅延 ネットワークのラウンドトリップ(100-500ms以上) ローカル処理(50~200ミリ秒) 納期 外部サービスに依存 100%お客様の管理下 価格 依頼ごとまたはサブスクリプション 1回限りまたは年間ライセンス オフラインモード 不可 全機能 料金の上限 APIスロットリング 制限なし JavaScript 限定サポート Chromiumの完全な実行 2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFは外部サービスへの依存をなくし、ローカル処理による将来性のある基盤を提供します。 マイグレーションの複雑さの評価 機能別の見積もり作業 フィーチャー 移行の複雑さ ノート 基本的なHTMLからPDFへ 低レベル メソッドの直接置換 HTMLファイルからPDFへ 低レベル メソッドの直接置換 URLからPDFへ 低レベル メソッドの直接置換 ヘッダー/フッター 低レベル プレースホルダーの構文変更 ページ設定 低レベル プロパティのマッピング APIキー管理 低レベル 完全に削除 パラダイムシフト この Kaizen.io 移行における基本的な変化は、クラウド API 呼び出しからローカルのインプロセス レンダリングへの変更です。 Kaizen.io: HtmlToPdfConverter → Convert(html) → byte[] (ネットワーク経由) IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → PdfDocument (ローカル) 始める前に 前提条件 .NET 環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGetアクセス: NuGetパッケージをインストールする機能 IronPDFライセンス: ironpdf.comからライセンスキーを取得します。 NuGetパッケージの変更 # Remove Kaizen.io package dotnet remove package Kaizen.HtmlToPdf dotnet remove package Kaizen.IO.HtmlToPdf # Install IronPDF dotnet add package IronPdf # Remove Kaizen.io package dotnet remove package Kaizen.HtmlToPdf dotnet remove package Kaizen.IO.HtmlToPdf # Install IronPDF dotnet add package IronPdf SHELL ライセンス構成 // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel Kaizen.ioの使用法を特定する # Find all Kaizen.io references grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" . grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" . # Find all Kaizen.io references grep -r "using Kaizen\|HtmlToPdfConverter\|ConversionOptions" --include="*.cs" . grep -r "ConvertUrl\|ConvertHtml\|Kaizen" --include="*.cs" . SHELL 完全な API リファレンス クラスマッピング Kaizen.ioクラス IronPDF 同等物 ノート HtmlToPdfConverter ChromePdfRenderer メインコンバータ コンバージョンオプション ChromePdfRenderOptions RenderingOptions経由 ヘッダーオプション HtmlHeaderFooterまたはTextHeaderFooter。 HTML/テキストヘッダー フッターオプション HtmlHeaderFooterまたはTextHeaderFooter。 HTML/テキストフッター ページサイズ PdfPaperSize 用紙サイズ列挙 オリエンテーション PdfPaperOrientation オリエンテーション列挙 メソッドマッピング Kaizen.io メソッド IronPDF 同等物 ノート converter.Convert(html). renderer.RenderHtmlAsPdf(html). PdfDocument を返します。 converter.ConvertUrl(url). renderer.RenderUrlAsPdf(url)のようにします。 直接URLサポート File.WriteAllBytes(path, bytes). pdf.SaveAs(path)のようにします。 直接保存方式 ConversionOptionsプロパティのマッピング Kaizen.io プロパティ IronPDF 同等物 ノート ページサイズ RenderingOptions.PaperSize 列挙値 オリエンテーション RenderingOptions.PaperOrientation ポートレート/風景 マージントップ RenderingOptions.MarginTop。 単位:ミリメートル マージンボトム RenderingOptions.MarginBottom。 単位:ミリメートル ヘッダー.HtmlContent。 RenderingOptions.HtmlHeader.HtmlFragment。 ヘッダーHTML フッター.HtmlContent RenderingOptions.HtmlFooter.HtmlFragmentを使用してください。 フッターHTML プレースホルダーのマッピング Kaizen.io プレースホルダ IronPDF プレースホルダー ノート {ページ} {ページ} 現在のページ(同じ) {total}</code>|{総ページ数}` 総ページ数(異なる) `{date} {date} 現在の日付(同じ) {タイトル}` {html-title} 文書タイトル (異なります!) コード移行の例 例1: 基本的なHTMLからPDFへ 翻訳前 (Kaizen.io): using Kaizen.IO; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var html = "<html><body><h1>Hello World</h1></body></html>"; var pdfBytes = converter.Convert(html); File.WriteAllBytes("output.pdf", pdfBytes); } } using Kaizen.IO; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var html = "<html><body><h1>Hello World</h1></body></html>"; var pdfBytes = converter.Convert(html); File.WriteAllBytes("output.pdf", pdfBytes); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var html = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var html = "<html><body><h1>Hello World</h1></body></html>"; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); } } $vbLabelText $csharpLabel Kaizen.ioのアプローチでは、HtmlToPdfConverterを作成し、Convert()を呼び出してバイト配列を取得し、File.WriteAllBytes()を使用して手動でバイトをファイルに書き込みます。 Kaizen.ioクラウドサービスへのネットワークラウンドトリップが含まれます。 IronPDFのChromePdfRendererはすべてをローカルで処理します。 RenderHtmlAsPdf()メソッドは、便利なSaveAs()メソッドを持つPdfDocumentオブジェクトを返します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。 例2: ページ設定でHTMLファイルをPDFに 翻訳前 (Kaizen.io): using Kaizen.IO; using System; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var htmlContent = File.ReadAllText("input.html"); var options = new ConversionOptions { PageSize = PageSize.A4, Orientation = Orientation.Portrait }; var pdfBytes = converter.Convert(htmlContent, options); File.WriteAllBytes("document.pdf", pdfBytes); } } using Kaizen.IO; using System; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var htmlContent = File.ReadAllText("input.html"); var options = new ConversionOptions { PageSize = PageSize.A4, Orientation = Orientation.Portrait }; var pdfBytes = converter.Convert(htmlContent, options); File.WriteAllBytes("document.pdf", pdfBytes); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait; var pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("document.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait; var pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("document.pdf"); } } $vbLabelText $csharpLabel Kaizen.ioのアプローチでは、File.ReadAllText()でHTMLファイルの内容を手動で読み取り、別のConversionOptionsオブジェクトを作成し、Convert()メソッドに両方を渡し、手動で結果のバイトをファイルに書き込む必要があります。 IronPDFはファイルを直接読み込む専用のRenderHtmlFileAsPdf()メソッドを提供します。 設定は、レンダラーの RenderingOptions プロパティに設定し、すべての設定を 1 か所にまとめておきます。 PdfPaperSize.A4とPdfPaperOrientation.Portrait列挙型は、Kaizen.ioの同等のものから直接マッピングされています。 例3: ヘッダーとフッター付きのURLからPDFへ 翻訳前 (Kaizen.io): using Kaizen.IO; using System; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var options = new ConversionOptions { Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" }, Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" }, MarginTop = 20, MarginBottom = 20 }; var pdfBytes = converter.ConvertUrl("https://example.com", options); File.WriteAllBytes("webpage.pdf", pdfBytes); } } using Kaizen.IO; using System; using System.IO; class Program { static void Main() { var converter = new HtmlToPdfConverter(); var options = new ConversionOptions { Header = new HeaderOptions { HtmlContent = "<div style='text-align:center'>Company Header</div>" }, Footer = new FooterOptions { HtmlContent = "<div style='text-align:center'>Page {page} of {total}</div>" }, MarginTop = 20, MarginBottom = 20 }; var pdfBytes = converter.ConvertUrl("https://example.com", options); File.WriteAllBytes("webpage.pdf", pdfBytes); } } $vbLabelText $csharpLabel 翻訳後(IronPDF):。 // NuGet: Install-Package IronPdf using IronPdf; using System; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader.CenterText = "Company Header"; renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; using System.IO; class Program { static void Main() { var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.TextHeader.CenterText = "Company Header"; renderer.RenderingOptions.TextFooter.CenterText = "Page {page} of {total-pages}"; renderer.RenderingOptions.MarginTop = 20; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("webpage.pdf"); } } $vbLabelText $csharpLabel この例は、いくつかの重要な移行の違いを示しています。 Kaizen.ioでは、ConversionOptions内のHeaderOptionsとFooterOptionsオブジェクトがネストされ、それぞれにHtmlContentプロパティが必要です。 IronPdfは専用のCenterText、LeftText、RightTextプロパティを持つ、よりクリーンなTextHeaderとTextFooter構成を提供します。 重要な注意:プレースホルダーの構文が異なります。 Kaizen.ioは総ページ数に{total}を使用し、IronPDFは{total-pages}を使用します。 {total}をコードベースで検索し、{total-pages}に置き換えてください。 IronPdfのRenderUrlAsPdf()メソッドは、Chromiumエンジンを介してJavaScriptを実行し、どんなURLでも直接レンダリングします。 URLからPDFへの変換とヘッダーとフッターについては、こちらをご覧ください。 重要な移行に関する注意事項 プレースホルダーの構文の変更 ヘッダーとフッターを移行する際に最も重要な変更は、プレースホルダーの構文です: // Kaizen.io placeholders: "Page {page} of {total}" //IronPDFplaceholders: "Page {page} of {total-pages}" // Kaizen.io placeholders: "Page {page} of {total}" //IronPDFplaceholders: "Page {page} of {total-pages}" $vbLabelText $csharpLabel 完全なプレースホルダ・マッピング:。 {page}</code> → <code>{page}(同上) {total} → {total-pages} (DIFFERENT!) {title} → {html-title} (DIFFERENT!) -{date}→ {date}(同じ)。 {time}</code> → <code>{time}(同上) 返品タイプの変更 Kaizen.ioはbyte[]を直接返します。 IronPDFはPdfDocumentオブジェクトを返します: // Kaizen.io returns byte[] byte[] pdfBytes = converter.Convert(html); File.WriteAllBytes("output.pdf", pdfBytes); //IronPDFreturns PdfDocument var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // Direct save byte[] bytes = pdf.BinaryData; // Or get bytes if needed // Kaizen.io returns byte[] byte[] pdfBytes = converter.Convert(html); File.WriteAllBytes("output.pdf", pdfBytes); //IronPDFreturns PdfDocument var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); // Direct save byte[] bytes = pdf.BinaryData; // Or get bytes if needed $vbLabelText $csharpLabel APIキー管理の削除 Kaizen.ioは、リクエストごとのAPIキー認証が必要です。 IronPdfはアプリケーション起動時に一度だけ設定されたライセンスキーを使用します: // DELETE this Kaizen.io pattern: var converter = new HtmlToPdfConverter("YOUR_API_KEY"); // IronPDF: Set once at startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; var renderer = new ChromePdfRenderer(); // No API key needed // DELETE this Kaizen.io pattern: var converter = new HtmlToPdfConverter("YOUR_API_KEY"); // IronPDF: Set once at startup IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; var renderer = new ChromePdfRenderer(); // No API key needed $vbLabelText $csharpLabel ネットワーク エラー処理の削除 リトライロジック、レートリミットの処理、ネットワークタイムアウトコードは削除してください-IronPDFはローカルで処理します: // DELETE this Kaizen.io pattern: int retries = 3; while (retries > 0) { try { return converter.Convert(html); } catch (RateLimitException) { retries--; Thread.Sleep(1000); } } // IronPDF: Just call the method return renderer.RenderHtmlAsPdf(html).BinaryData; // DELETE this Kaizen.io pattern: int retries = 3; while (retries > 0) { try { return converter.Convert(html); } catch (RateLimitException) { retries--; Thread.Sleep(1000); } } // IronPDF: Just call the method return renderer.RenderHtmlAsPdf(html).BinaryData; $vbLabelText $csharpLabel トラブルシューティング 問題 1: HtmlToPdfConverter が見つかりません 問題:IronPDFにHtmlToPdfConverterクラスが存在しません。 解決策: ChromePdfRendererに置き換えます: // Kaizen.io var converter = new HtmlToPdfConverter(); // IronPDF var renderer = new ChromePdfRenderer(); // Kaizen.io var converter = new HtmlToPdfConverter(); // IronPDF var renderer = new ChromePdfRenderer(); $vbLabelText $csharpLabel 課題2: ConversionOptionsが見つかりません 問題:IronPDFにConversionOptionsクラスが存在しません。 解決策:レンダラーでRenderingOptions使用します。 // Kaizen.io var options = new ConversionOptions { PageSize = PageSize.A4 }; converter.Convert(html, options); // IronPDF renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderHtmlAsPdf(html); // Kaizen.io var options = new ConversionOptions { PageSize = PageSize.A4 }; converter.Convert(html, options); // IronPDF renderer.RenderingOptions.PaperSize = PdfPaperSize.A4; renderer.RenderHtmlAsPdf(html); $vbLabelText $csharpLabel 課題3:ページ番号が機能しない 問題:フッターにページ数ではなく、文字数{total}が表示されます。 解決策:プレースホルダー構文を更新します。 // Kaizen.io syntax (won't work) "Page {page} of {total}" //IronPDFsyntax "Page {page} of {total-pages}" // Kaizen.io syntax (won't work) "Page {page} of {total}" //IronPDFsyntax "Page {page} of {total-pages}" $vbLabelText $csharpLabel 課題4: 変換メソッドが見つかりません 問題: ChromePdfRendererにConvert()メソッドが存在しません。 解決策: RenderHtmlAsPdf()を使用します。 // Kaizen.io var pdfBytes = converter.Convert(html); // IronPDF var pdf = renderer.RenderHtmlAsPdf(html); var pdfBytes = pdf.BinaryData; // Kaizen.io var pdfBytes = converter.Convert(html); // IronPDF var pdf = renderer.RenderHtmlAsPdf(html); var pdfBytes = pdf.BinaryData; $vbLabelText $csharpLabel 課題5:最初のレンダリングが遅い 問題:最初の PDF 生成には 1 ~ 3 秒かかります。 解決策:IronPDFは、初めて使用するときに Chromium を初期化します。 アプリケーション起動時のウォームアップ // In Program.cs or Startup.cs: new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>"); // In Program.cs or Startup.cs: new ChromePdfRenderer().RenderHtmlAsPdf("<html></html>"); $vbLabelText $csharpLabel 移行チェックリスト 移行前 Kaizen.io のすべてのusingステートメントを識別する 使用されるドキュメントConversionOptions設定 ノートのヘッダー/フッターテンプレートとプレースホルダー APIキーの場所を一覧表示する(削除対象) 再試行/レート制限ロジックを確認する(削除する) IronPDFライセンスキーを取得する パッケージの変更 Kaizen.HtmlToPdfパッケージを削除する IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf 名前空間のインポートを更新する コードの変更 起動時にライセンスキー設定を追加する -HtmlToPdfConverterChromePdfRenderer`に置き換える -`コンバージョンオプションRenderingOptions`に変換する Convert()をRenderHtmlAsPdf()に更新 ConvertUrl()をRenderUrlAsPdf()に更新 プレースホルダー構文を更新 ({total}</code>→<code>{総ページ数}) File.WriteAllBytes()をpdf.SaveAs()に置き換えます APIキー設定を削除する 再試行/レート制限ロジックを削除 API呼び出しのネットワークエラー処理を削除 テスティング すべてのPDF生成パスをテストする ヘッダー/フッターのレンダリングを確認する プレースホルダーのレンダリングを確認する 余白とページサイズを検証する オフライン機能をテストする (新機能!) ベンチマークパフォーマンスの向上 移行後 設定からKaizen.io APIキーを削除する 環境変数を更新する レート制限設定を削除する 更新監視/アラート カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む 公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む 公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む C#でMigraDocからIronPDFに移行する方法C#でjsreportからIronPDFに移行...
公開日 2026年2月1日 C#でZetPDFからIronPDFに移行する方法 この完全なC#ガイドでZetPDFからIronPDFへの移行をマスターしてください。座標ベースのライブラリから最新のHTML-to-PDFソリューションに切り替えます。HTML変換、PDFのマージ、PDFSharpの依存関係の削除のコード例が含まれています。 詳しく読む
公開日 2026年2月1日 C#でScryber.CoreからIronPDFに移行する方法 この完全なC#ガイドでScryber.CoreからIronPDFへの移行をマスターしてください。カスタムXML/HTMLパースから最新のChromiumレンダラーに切り替えます。HTML変換、URLレンダリング、独自のバインディングを置き換えるコード例を含みます。 詳しく読む
公開日 2026年2月1日 C#でXFINIUM.PDFからIronPdfへ移行する方法 この完全なC#ガイドでXFINIUM.PDFからIronPDFへの移行をマスターしてください。座標ベースの手動ポジショニングから宣言的なHTML/CSSレンダリングに切り替えます。グラフィックスプリミティブの置き換えと自動レイアウトのコード例を含みます。 詳しく読む