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

C#でGnostice PDFOneからIronPdfに移行する方法

Gnostice PDFOneからIronPDFへの移行は、あなたの.NET PDFワークフローを、座標ベースの、プラットフォームが分断されたアプローチから、最新のWeb標準を完全にサポートした、統一されたHTML/CSS駆動のソリューションに変えます。 このガイドでは、.NET開発者のために、CSS、JavaScript、メモリの安定性に関する文書化された制限を排除する、包括的で段階的な移行パスを提供します。

なぜGnostice PDFOneからIronPDFへ移行するのか

グノスティスのPDFOneチャレンジ

Gnostice PDFOneとDocument Studio .NETには、本番アプリケーションに影響する制限事項が十分に文書化されています:

1.外部 CSS のサポートなし:グノスティスPDFOneのドキュメントには、最新の Web から PDF への変換の基本要件である外部 CSS スタイルシートをサポートしていないことが明記されています。

  1. JavaScript の実行なし: JavaScript を必要とする動的コンテンツをレンダリングできないため、最新の Web アプリケーションを正確に変換することができません。

  2. HTML から PDF への直接変換機能はありません:グノスティスPDFOneには、HTML から PDF への直接変換機能はありません。 HTMLの変換にはDocument Studioを使用するか、手作業でHTML要素を解析してレンダリングする必要があります。

4.プラットフォームの断片化: WinForms、WPF、ASP.NET、Xamarin 向けにそれぞれ異なる機能セットと API を持つ個別の製品が存在します。複数のライセンスとコードベースが必要になる場合があります。

5.メモリ リークと安定性:ユーザー フォーラムと Stack Overflow では、画像の処理時に永続的なメモリ リーク、JPEG エラー #53、および StackOverflow 例外が発生することが報告されています。

6.右から左に書く Unicode がない:アラビア語、ヘブライ語、その他の RTL 言語は明示的にサポートされていません。これは、国際的なアプリケーションにとっては致命的です。

7.限定的なデジタル署名のサポート:これまで、Gnostice PDFOne ではデジタル署名が欠落しているか、信頼できませんでした。

8.座標ベースの API:多くの操作では、最新のレイアウト手法ではなく手動の X/Y 配置が必要であり、すべての要素の配置に対して正確な計算が必要です。

グノスティスPDFOneとIronPDFの比較

アスペクトグノスティスPDFOneIronPDF
外部CSSサポートされていませんフルサポート
JavaScriptの実行サポートされていませんフルChromiumエンジン
RTL言語サポートされていませんユニコード完全対応
デジタル署名限定/欠落X509完全サポート
プラットフォーム断片化された製品単一の統一ライブラリ
メモリの安定性報告された問題安定した管理体制
HTMLからPDFへ基本的なこと、回避策が必要なことChrome品質のレンダリング
学習曲線複雑なAPIシンプルで直感的なAPI
モダンCSS(フレックスボックス、グリッド)サポートされていませんCSS3をフルサポート
画像処理既知の問題信頼性

2025年、2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはすべての.NETプラットフォームで一貫して動作する統一されたライブラリで将来を見据えた基盤を提供します。


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

機能別の見積もり作業

フィーチャー移行の複雑さノート
PDFの読み込み/保存低レベル直接マッピング
PDFのマージ低レベル直接マッピング
PDFの分割低レベル同様のアプローチ
テキスト抽出低レベルメソッド名の変更
透かし低レベルIronPDFでよりシンプルに
ヘッダー/フッター低レベルHTMLベースのアプローチ
HTMLからPDFへ低レベルIronPDFでより良く
暗号化中規模異なるAPI構造
フォームフィールド中規模プロパティアクセスの違い
デジタル署名低レベル現在対応中(Gnostice PDFOneでは信頼できませんでした)

得られる機能

Gnostice PDFOneからIronPdfに移行する際、以前は不可能だったこれらの機能が利用可能になります:

  • 外部CSSスタイルシート
  • JavaScriptの実行
  • RTL言語サポート(アラビア語、ヘブライ語)
  • CSSグリッドとフレックスボックス
  • 信頼性の高いデジタル署名
  • より良いメモリ管理
  • 単一のコードベースによるクロスプラットフォームのサポート

始める前に

前提条件

  1. .NETバージョン: IronPDFは.NET Framework 4.6.2以降および.NET Core 2.0以降 / .NET 5/6/7/8/9以降をサポートしています。 2.ライセンスキー: ironpdf.comからIronPDFライセンスキーを取得します。 3.バックアップ:移行作業用のブランチを作成する

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

# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .

# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
# Find all Gnostice references
grep -r "Gnostice\|PDFOne\|PDFDocument\|PDFPage\|DocExporter" --include="*.cs" .

# Find package references
grep -r "Gnostice\|PDFOne" --include="*.csproj" .
SHELL

NuGetパッケージの変更

# RemoveグノスティスPDFOnepackages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET

# Install IronPDF
dotnet add package IronPdf
# RemoveグノスティスPDFOnepackages
dotnet remove package PDFOne.NET
dotnet remove package Gnostice.DocumentStudio.NET
dotnet remove package Gnostice.PDFOne.NET
dotnet remove package Gnostice.XtremeDocumentStudio.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

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

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

ビフォア(グノスティスPDFOne):

// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
// Gnostice license often set via config or property
PDFOne.License.LicenseKey = "YOUR-GNOSTICE-LICENSE";
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
$vbLabelText   $csharpLabel

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

// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (Gnostice PDFOne)
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using Gnostice.PDFOne.Graphics;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
$vbLabelText   $csharpLabel

完全な API リファレンス

コア クラス マッピング

グノスティスPDFOneIronPDF翻訳内容
<コード>PDFドキュメント</コード<コード>PdfDocument</コード主なPDF文書クラス
<コード>PDFページ</コード<コード>PdfDocument.Pages[i]</コードページ表現
<コード>PDFFont</コードCSSスタイリングフォント仕様
<コード>PDFTextElement</コードHTMLコンテンツテキスト内容
<コード>PDFImageElement</コードHTML <img>タグ画像コンテンツ
<コード>DocExporter</コード<コード>ChromePdfRenderer</コードHTML/URLからPDFへの変換

ドキュメント操作

グノスティスPDFOneIronPDFノート
new PDFDocument() とします。new PdfDocument().新規ドキュメントの作成
doc.Load(path)を実行します。PdfDocument.FromFile(パス)ファイルから読み込む
<コード>doc.Open()</コード該当なし(自動)ドキュメントを開く
doc.Save(パス)を実行します。pdf.SaveAs(path)のようにします。ファイルに保存
<コード>doc.Close()</コード<コード>pdf.Dispose()</コードリリースリソース
<コード>doc.Pages.Count</コード<コード>pdf.PageCount</コードページ数
doc.Pages.Add()HTMLのレンダリングまたはマージページを追加

マージ操作

グノスティスPDFOneIronPDFノート
doc.Append(otherDoc)を追加します。PdfDocument.Merge(pdf1, pdf2).ドキュメントをマージする.
複数の Append() 呼び出しPdfDocument.Merge(リスト)多くのマージ

コード移行の例

例1: HTMLからPDFへの変換

ビフォア(グノスティスPDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Open();

        PDFPage page = doc.Pages.Add();

        // PDFOne doesn't have directHTMLからPDFへconversion
        // You need to use Document Studio for HTML conversion
        // Or manually parse and render HTML elements

        PDFTextElement textElement = new PDFTextElement();
        textElement.Text = "Simple text conversion instead of HTML";
        textElement.Draw(page, 10, 10);

        doc.Save("output.pdf");
        doc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Open();

        PDFPage page = doc.Pages.Add();

        // PDFOne doesn't have directHTMLからPDFへconversion
        // You need to use Document Studio for HTML conversion
        // Or manually parse and render HTML elements

        PDFTextElement textElement = new PDFTextElement();
        textElement.Text = "Simple text conversion instead of HTML";
        textElement.Draw(page, 10, 10);

        doc.Save("output.pdf");
        doc.Close();
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

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

        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";

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

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

        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

その差は相当なものです:Gnostice PDFOneは、HTMLを直接PDFに変換することはできません。手作業でテキスト要素を作成し、座標で配置する必要があります。 IronPDFのChromePdfRendererはCSS3とJavaScriptを完全にサポートし、HTMLを直接レンダリングします。 レンダリングオプションについては、HTML to PDF documentationを参照してください。

例2: PDFファイルをマージする

ビフォア(グノスティスPDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc1 = new PDFDocument();
        doc1.Load("document1.pdf");

        PDFDocument doc2 = new PDFDocument();
        doc2.Load("document2.pdf");

        PDFDocument mergedDoc = new PDFDocument();
        mergedDoc.Open();

        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        doc1.Close();
        doc2.Close();
        mergedDoc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Document;
using System;

class Program
{
    static void Main()
    {
        PDFDocument doc1 = new PDFDocument();
        doc1.Load("document1.pdf");

        PDFDocument doc2 = new PDFDocument();
        doc2.Load("document2.pdf");

        PDFDocument mergedDoc = new PDFDocument();
        mergedDoc.Open();

        mergedDoc.Append(doc1);
        mergedDoc.Append(doc2);

        mergedDoc.Save("merged.pdf");

        doc1.Close();
        doc2.Close();
        mergedDoc.Close();
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;

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;
using System.Collections.Generic;

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");
    }
}
$vbLabelText   $csharpLabel

Gnostice PDFOneのアプローチでは、新しい文書を作成し、それを開き、ソース文書を別々に読み込み、それぞれを追加し、3つの文書すべてを手動で閉じる必要があります。 IronPdfの静的なMergeメソッドは適切なリソース管理でこれを3行で処理します。 PDFのマージと分割については、こちらをご覧ください。

例3: PDFに透かしを追加する

ビフォア(グノスティスPDFOne):

// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Load("input.pdf");

        PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);

        foreach (PDFPage page in doc.Pages)
        {
            PDFTextElement watermark = new PDFTextElement();
            watermark.Text = "CONFIDENTIAL";
            watermark.Font = font;
            watermark.Color = Color.FromArgb(128, 255, 0, 0);
            watermark.RotationAngle = 45;

            watermark.Draw(page, 200, 400);
        }

        doc.Save("watermarked.pdf");
        doc.Close();
    }
}
// NuGet: Install-Package Gnostice.PDFOne.DLL
using Gnostice.PDFOne;
using Gnostice.PDFOne.Graphics;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        PDFDocument doc = new PDFDocument();
        doc.Load("input.pdf");

        PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);

        foreach (PDFPage page in doc.Pages)
        {
            PDFTextElement watermark = new PDFTextElement();
            watermark.Text = "CONFIDENTIAL";
            watermark.Font = font;
            watermark.Color = Color.FromArgb(128, 255, 0, 0);
            watermark.RotationAngle = 45;

            watermark.Draw(page, 200, 400);
        }

        doc.Save("watermarked.pdf");
        doc.Close();
    }
}
$vbLabelText   $csharpLabel

翻訳後(IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 48,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");

        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 48,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(watermark);
        pdf.SaveAs("watermarked.pdf");
    }
}
$vbLabelText   $csharpLabel

Gnostice PDFOneのアプローチでは、PDFFontオブジェクトを作成し、手作業でページを繰り返し、座標(200, 400)を計算し、PDFTextElementオブジェクトにプロパティを設定する必要があります。 IronPdfのTextStamperは自動センタリングとページ適用を備えた宣言的なコンフィギュレーションを提供します。 追加のオプションについては、透かしのドキュメントを参照してください。


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

座標ベースから HTML/CSS レイアウトへ

このGnostice PDFOne移行における最も重要なパラダイムシフトは、座標ベースのポジショニングからHTML/CSSレイアウトへの移行です:

// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400);  // X=200, Y=400

// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
// Gnostice PDFOne: Manual coordinate positioning
watermark.Draw(page, 200, 400);  // X=200, Y=400

// IronPDF: Declarative alignment
watermark.VerticalAlignment = VerticalAlignment.Middle;
watermark.HorizontalAlignment = HorizontalAlignment.Center;
$vbLabelText   $csharpLabel

フォント オブジェクトから CSS スタイリングへ

// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;

//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 48);
watermark.Font = font;

//IronPDF- use CSS in HTML content
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 48pt;'>Text</span>";
$vbLabelText   $csharpLabel

ページ索引

Gnostice PDFOneはしばしば1-indexedページを使用しますが、IronPDFは0-indexed(.NETの標準的な慣習)を使用します:

// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1];  // First page

// IronPDF: 0-indexed
var page = pdf.Pages[0];  // First page
// Gnostice PDFOne: May use 1-indexed
var page = doc.Pages[1];  // First page

// IronPDF: 0-indexed
var page = pdf.Pages[0];  // First page
$vbLabelText   $csharpLabel

今すぐ使える機能

Gnostice PDFOneからIronPdfに移行した後、これらの以前は問題であった、あるいは不可能であった機能が利用可能になります: -外部CSS: Gnostice PDFOneで動作しなかったスタイルシートが正しくレンダリングされるようになりました

  • JavaScriptコンテンツ:欠落していた動的コンテンツが表示されるようになりました
  • RTL言語:アラビア語、ヘブライ語、その他の右から左に書く言語は正常に動作します
  • CSS グリッドとフレックスボックス:最新のレイアウト技術が完全にサポートされています -デジタル署名:信頼性の高い X509 証明書署名

トラブルシューティング

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

問題:IronPDFにPDFTextElement存在しません。

解決策: HTML コンテンツまたは TextStamper を使用します。

// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Your text here</p>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);
$vbLabelText   $csharpLabel

第2号: PDFFontオブジェクト

問題:グノスティスPDFOneはPDFFontオブジェクトを使用します。 IronPDFはCSSを使用しています。

ソリューション:

// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);

//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
// Gnostice PDFOne
PDFFont font = new PDFFont(PDFStandardFont.Helvetica, 12);

//IronPDF- use CSS
var html = "<span style='font-family: Helvetica, Arial, sans-serif; font-size: 12pt;'>Text</span>";
$vbLabelText   $csharpLabel

問題 3:DocExporter が見つかりません。

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

解決策: ChromePdfRendererを使用する:

// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);

// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
// Gnostice PDFOne
DocExporter exporter = new DocExporter();
exporter.Export(doc, "output.pdf", DocumentFormat.PDF);

// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

第4号: メモリの改善

問題:グノスティスPDFOneはメモリ リークを報告しました。

解決策:IronPDFは安定したメモリ管理を提供します。 適切な廃棄パターンを使用してください:

using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    // Process PDF
    pdf.SaveAs("output.pdf");
}  // Automatically disposed
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    // Process PDF
    pdf.SaveAs("output.pdf");
}  // Automatically disposed
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • コードベース内のすべてのグノスティスPDFOneの使用状況を一覧表示する
  • 動作していなかった機能 (CSS、JS、RTL) に注意してください。今後は動作します。
  • 比較テストのためにメモリの問題を文書化する
  • IronPDFライセンスキーを取得する
  • バージョン管理に移行ブランチを作成する

コードの移行

-グノスティスPDFOneNuGet パッケージを削除する

  • IronPdf NuGet パッケージをインストールします: dotnet add package IronPdf
  • 名前空間のインポートを更新する
  • ライセンスキー設定の置き換え -<コード>PDFドキュメント</コードPdfDocumentに変換する
  • DocExporterChromePdfRendererに変換する
  • 座標ベースの描画をHTMLスタンプに置き換える
  • PDFFontをCSSスタイルに更新
  • doc.Append()PdfDocument.Merge()に変換する

テスティング

  • HTMLからPDFへの変換テスト
  • 外部CSSが動作するようになったことを確認する
  • JavaScriptに依存するコンテンツをテストする
  • RTL言語をテストする(必要な場合)
  • デジタル署名をテストします (現在利用可能です!)
  • PDF結合のテスト
  • 透かしのテスト
  • メモリ使用量を比較する

移行後

  • Gnostic PDFOneライセンスを削除する
  • ドキュメントの更新
  • Gnostice PDFOneの制限に対する回避策を削除 -IronPDFAPI についてチームをトレーニングする

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

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

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