フッターコンテンツにスキップ
IRONXLの使用

IronXLを使って.NETで CSV ファイルを書き込む方法

なぜ.NET開発者にはより良いCSVソリューションが必要なのか?

CSVファイルは、数多くの.NETアプリケーション間でデータ交換を支える重要なツールですが、実際の複雑なデータを扱う場合、標準ライブラリのオプションだけでは不十分なことがよくあります。財務報告書から在庫管理システムまで、わずか数行のコードでプログラム的にCSVファイルを作成できます。 CsvHelperのようなライブラリが基本的なCSV操作をカバーしていますが、現代の開発者はより複雑なシナリオに直面しています:Excelワークブックの変換、エクスポート時のデータ型の保持、エンタープライズ規模のスプレッドシートワークフローの処理。 IronXLは、信頼性の高いCSV書き込み機能と完全なExcel機能を、 RFC 4180規格に準拠した単一の依存関係のないライブラリに統合することで、これらの課題に対処します。

これは、複数の列、行固有の処理ロジック、および自動的に推測される区切り文字をサポートするカスタム.NET CSVライターまたは.NET CSVパーサーを構築する開発者にとって理想的です。 このチュートリアルでは、IronXLのCSV機能について、基本的なファイル作成から企業規模のデータエクスポートまで、順を追って説明します。

IronXLのインストールと設定方法を教えてください

IronXLのインストールは、 NuGetパッケージマネージャーを使えば数秒で完了します。 パッケージ マネージャー コンソールまたは.NET CLI のいずれかを使用できます。

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

インストールが完了したら、 IronXLの名前空間を追加して、すぐにCSVファイルの書き込みを開始してください。 次の例は、 .NET 10 のトップレベル ステートメントを使用してワークブックを作成し、データを入力し、CSV にエクスポートする方法を示しています。

using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");
using IronXL;

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("data");

// Add headers
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Add data rows
workSheet["A2"].Value = "Widget";
workSheet["B2"].Value = 100;
workSheet["C2"].Value = 19.99;

workSheet["A3"].Value = "Gadget";
workSheet["B3"].Value = 250;
workSheet["C3"].Value = 34.50;

workSheet["A4"].Value = "Component";
workSheet["B4"].Value = 75;
workSheet["C4"].Value = 8.99;

// Save as CSV with comma delimiter
workBook.SaveAsCsv("inventory.csv", ",");
$vbLabelText   $csharpLabel

このシンプルなプログラムは、C#コードから直接CSVコンテンツを書き込み、データを保持するWorkBookオブジェクトを作成する方法を示しています。 SaveAsCsv メソッドは、デフォルトの区切り文字としてカンマを使用しますが、任意の区切り文字を指定することもできます。これは、セミコロンやタブが標準的な列区切り文字であるような、地域固有のシナリオで役立ちます。

ワークブックとワークシートモデルの理解

IronXLは、ワークブックからワークシートへの階層構造を通してデータを整理します。 WorkBookは、1つ以上のWorkSheetオブジェクトを格納するコンテナとして機能し、各WorkSheetオブジェクトはセルのグリッドを表します。 CSVにエクスポートすると、 IronXLはワークシートごとに1つのファイルを作成し、ファイル名は"filename.SheetName.csv"というパターンになります。

このモデルでは、新規ファイルをゼロから作成する場合でも、既存のExcelワークブックを読み込む場合でも、データベースからデータをエクスポートする場合でも、一貫したAPIが提供されます。 セルを参照するには、標準の Excel 表記(B2)または 0 から始まる行と列の整数を使用します。ワークフローに合わせてどちらかを選択してください。

カスタム区切り文字を使用してCSVファイルを作成する方法を教えてください

地域やシステムによって、期待される列区切り記号は異なります。 ヨーロッパの地域では、小数点にはコンマが使われるため、セミコロンがよく使われる。 タブ区切り値(TSV)は、バイオインフォマティクスやログ処理パイプラインでよく使用されます。 IronXLのSaveAsCsvメソッドは、区切り文字として任意の文字列を受け入れます。

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "North America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");
using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

workSheet["A1"].Value = "Region";
workSheet["B1"].Value = "Revenue";
workSheet["C1"].Value = "Units";

workSheet["A2"].Value = "Europe";
workSheet["B2"].Value = "1250000.50";
workSheet["C2"].Value = 3400;

workSheet["A3"].Value = "North America";
workSheet["B3"].Value = "2800000.00";
workSheet["C3"].Value = 7200;

// Semicolon delimiter for European locales
workBook.SaveAsCsv("sales_europe.csv", ";");

// Tab delimiter for TSV output
workBook.SaveAsCsv("sales_tsv.tsv", "\t");
$vbLabelText   $csharpLabel

区切り文字文字列は、追加の解析設定なしに、直接区切り文字スロットに挿入されます。 IronXL は、区切り文字を含むセルの引用符を処理し、出力がRFC 4180に準拠するようにします。

ExcelワークブックをCSVに変換するにはどうすればよいですか?

 IronXLを使用して.NET CSV ライターを作成する方法 : 図 1 - IronXLを使用した CSV 出力例

IronXLは、既存のExcelファイルをCSVに変換すること、数式を評価すること、およびデータの整合性を維持することに優れています。 これは、ヘッダー行と動的に計算された値の両方を含むスプレッドシートを扱う場合に不可欠です。

using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");
using IronXL;

// Load an Excel file with formulas and formatting
WorkBook workBook = WorkBook.Load("financial_report.xlsx");

// Evaluate all formulas before export so calculated values appear in CSV
workBook.EvaluateAll();

// Export to CSV -- each worksheet creates a separate CSV file
// Creates: report.Sheet1.csv, report.Sheet2.csv, etc.
workBook.SaveAsCsv("report.csv", ",");
$vbLabelText   $csharpLabel

複数のシートのワークブックを変換する際、IronXLは各ワークシートごとに個別のCSVファイルを自動的に生成します。 式の計算はエクスポート前に実行され、最終CSV出力に正確なデータを保証します。 EvaluateAll メソッドは、ファイルがディスクに書き込まれる前に、シート間の参照を含むすべての数式を解決します。

出力

まず、複数シートのExcelファイルから生成されたCSVファイルは以下のとおりです。

 IronXLを使用して.NET CSV ライターを作成する方法 : 図 2 - CSV ファイル

そして、これはExcelシートの1つと対応するCSVファイルの例の比較です:

 IronXLを使用して.NET CSV ライターを作成する方法 : 図 3 - 出力例

データテーブルをCSVファイルにエクスポートするにはどうすればよいですか?

データベース駆動型アプリケーションの場合、 IronXLはDataTableのエクスポートを容易にします。 次の例では、モックデータソースから"DataTable"を読み込み、セミコロン区切り文字を使用してCSVファイルに書き込みます。

using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");
using System.Data;
using IronXL;

// Simulate a DataTable from a database query
DataTable dataTable = GetSalesData();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("sales");

// Write column headers from DataTable schema
for (int col = 0; col < dataTable.Columns.Count; col++)
{
    workSheet.SetCellValue(0, col, dataTable.Columns[col].ColumnName);
}

// Write data rows
int row = 1;
foreach (DataRow dataRow in dataTable.Rows)
{
    for (int col = 0; col < dataTable.Columns.Count; col++)
    {
        workSheet.SetCellValue(row, col, dataRow[col]?.ToString() ?? string.Empty);
    }
    row++;
}

// Export with semicolon delimiter for European compatibility
workBook.SaveAsCsv("sales_data.csv", ";");
$vbLabelText   $csharpLabel

DataTable からインポートする場合、dataTable.Rows コレクションの各行がワークシートの新しい行になります。 IronXLは変換時にデータ型を保持します。数値は数値のまま、日付は書式を維持、テキストは追加設定なしで特殊文字を処理します。

出力

ここでは、出力CSVファイルの横に模擬データソースが表示されています。

 IronXLを使用して.NET CSV ライターを作成する方法 : 図 4 - DataTable を CSV 出力にエクスポートする

今IronXLを始めましょう。
green arrow pointer

CSVファイルの書き込みにおいて、 IronXLとCsvHelperを比較するとどう違うのか?

両方のライブラリを使用したCSV書き込みワークフローを示す、従業員データのエクスポートシナリオを考えてみましょう。

CsvHelperの実装:

using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);
using System.Globalization;
using System.IO;
using CsvHelper;

using var writer = new StreamWriter("employees.csv");
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
csv.WriteRecords(employees);
$vbLabelText   $csharpLabel

IronXLの実装:

using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
using IronXL;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("employees");

int rowIndex = 1;
foreach (var emp in employees)
{
    workSheet[$"A{rowIndex}"].Value = emp.Name;
    workSheet[$"B{rowIndex}"].Value = emp.Salary;
    workSheet[$"C{rowIndex}"].Value = emp.StartDate;
    rowIndex++;
}

workBook.SaveAsCsv("employees.csv", ",");
$vbLabelText   $csharpLabel
IronXLとCsvHelperの機能比較
特徴 CsvHelper IronXL
基本的なCSVの書き方 はい はい
ExcelからCSVへの変換 なし はい
式の評価 なし はい
複数シートの取り扱い なし はい
データ型の保存 マニュアル 自動翻訳
Excel形式のサポート(XLSX、XLS、XLSM) なし はい
MS Officeは不要 はい はい
セルの書式設定とスタイル なし はい
クロスプラットフォーム対応(.NET 10対応) はい はい

CsvHelperは、POCOオブジェクトの単純なシリアル化を効率的に処理します。 IronXLは、既存のExcelファイルを読み込む場合、エクスポート前に数式を評価する場合、またはワークシートの範囲をきめ細かく制御する必要がある場合に、追加機能を提供します。 ワークフローに、ビジネスユーザーから .xlsx ファイルを受信し、下流システム用に CSV に変換することが含まれる場合、 IronXL はパイプラインから変換ステップ全体を削除します。

IronXLはCSVエクスポートに関してどのようなEnterprise機能を提供していますか?

IronXLのSaveAsCsvメソッドには、本番環境ですぐに使用できる機能がいくつか搭載されています。

IronXLのCSVエクスポートEnterprise機能
特徴 翻訳内容 使用事例
カスタム区切り文字 コンマ、セミコロン、タブ、または任意の文字 地域的な互換性
エンコードオプション UTF-8、UTF-16、およびカスタムエンコーディング 国際文字セット
式の評価 エクスポート前にExcelの数式を計算します 財務報告、動的データ
クロスプラットフォームサポート Windows, Linux, macOS クラウドおよびコンテナの導入
複数シートのエクスポート ワークシートごとに1つのCSVファイル 複雑なワークブック構造
RFC 4180準拠 特殊文字の自動引用 相互運用性の保証

エクスポート前にセルデータの書式設定を適用することで、CSV出力における数値、通貨、日付の表示方法を制御できます。 大規模なデータセットの場合は、ワークシートの範囲操作を使用してデータをチャンク単位で処理することで、メモリ使用量を予測可能な範囲に抑えることができます。

クロスプラットフォーム対応により、コードを変更することなく、IronXLを利用したCSV生成機能をKubernetesやAzure App ServiceのLinuxコンテナにデプロイできます。 このライブラリには管理されていない依存関係が含まれていないため、どのオペレーティングシステムでも同じように動作します。 サポートされているランタイムの詳細については、 IronXLプラットフォーム互換性ガイドを参照してください。

CSVエクスポートでよくある問題にどう対処しますか?

大規模なCSVエクスポートを扱う場合、いくつかの予測可能な問題が発生します。それぞれの問題への対処法を以下に示します。

データ内の特殊文字: IronXLは、セル値内の引用符、カンマ、改行を自動的にエスケープします。 文字列を前処理したり、独自のエスケープロジックを記述したりする必要はありません。ライブラリがRFC 4180の引用規則を内部的に処理します。

大容量ファイルの処理:数万行のデータを含むワークブックの場合は、ワークシート範囲を使用してデータをバッチ処理します。 最終エクスポート前に中間シートに書き込むことで、メモリ割り当てを制御できます。

エンコーディングに関する問題:セル値に国際文字、アジア言語の文字、または絵文字が含まれる場合は、UTF-8エンコーディングを明示的に指定してください。 IronXLはUTF-8とUTF-16エンコーディングを標準でサポートしているため、サードパーティ製のエンコーディングライブラリは必要ありません。

データの欠落または入力ミス: IronXLはデフォルトで数値および日付形式を保持します。 セルに欠落データを参照する数式が含まれている場合、EvaluateAll() は空白のテキストを黙って出力するのではなく、エラー値に解決されるため、パイプラインの早い段階でデータ品質の問題が明らかになります。

区切り文字の競合:データに区切り文字が含まれている場合 (たとえば、カンマを区切り文字として使用している場合、価格フィールドに $1,200.00 が含まれている場合)、 IronXL はRFC 4180 の規則に従って値を自動的に二重引用符で囲みます。

詳細なガイダンスについては、 IronXL CSVドキュメントAPIリファレンス、およびサポートリソースを参照してください。

IronXLでCSVファイルを読み込んで解析するにはどうすればよいですか?

CSVファイルへの書き込みは、話の半分に過ぎない。 IronXLはCSVの読み込みと解析にも対応しており、カンマ区切りのデータをワークブック構造に読み込み、クエリ、フィルタリング、変換を行った後、任意の形式にエクスポートできます。

using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");
using IronXL;

// Load an existing CSV file into a workbook
WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Iterate over rows and process data
foreach (var row in workSheet.Rows)
{
    string product = row["A"].ToString();
    int quantity = row["B"].IntValue;
    decimal price = (decimal)row["C"].DoubleValue;

    Console.WriteLine($"Product: {product}, Qty: {quantity}, Price: {price:C}");
}

// Apply a filter and re-export to a new CSV
workBook.SaveAsCsv("filtered_output.csv", ",");
$vbLabelText   $csharpLabel

IronXL経由でCSVファイルを読み込むと、並べ替え、フィルタリング、数式評価など、ワークシートAPIのすべての機能を利用できます。 SaveAsメソッドを使用すれば、読み込んだデータをExcelファイルとして保存することもできます。これにより、CSVファイルをXLSXファイルに変換する処理を1回のメソッド呼び出しで実行できます。これは、レポート生成サービスを構築する際によく求められる要件です。

CSVデータをエクスポートする前に、どのように検証すればよいですか?

エクスポート前のデータ検証は、下流のパイプライン障害を防ぐ。 IronXLセル値とセル型に直接アクセスできるため、書き込み前にnull値のチェック、数値範囲の強制、不正な日付の拒否などを行うことができます。

using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}
using IronXL;

WorkBook workBook = WorkBook.Load("input.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var errors = new List<string>();

for (int rowIdx = 1; rowIdx <= workSheet.RowCount; rowIdx++)
{
    string productName = workSheet[$"A{rowIdx}"].StringValue;
    double price = workSheet[$"C{rowIdx}"].DoubleValue;

    if (string.IsNullOrWhiteSpace(productName))
        errors.Add($"Row {rowIdx}: Product name is empty.");

    if (price <= 0)
        errors.Add($"Row {rowIdx}: Price must be greater than zero (found {price}).");
}

if (errors.Count == 0)
{
    workBook.SaveAsCsv("validated_output.csv", ",");
    Console.WriteLine("Export complete.");
}
else
{
    foreach (var error in errors)
        Console.WriteLine(error);
}
$vbLabelText   $csharpLabel

このパターンは、不正な行を黙ってエクスポートするのではなく、拒否してログに記録する必要があるETLパイプラインにおいて特に有効です。 IronXL の RangeRow および Cell オブジェクトのセルデータアクセスメソッドは、厳密に型指定された値を返すため、サイレントな型変換エラーのリスクが軽減されます。

IronXLでCSVファイルを作成するにはどうすれば良いですか?

IronXLは、 CSVファイルの書き込みを、解析という難題から直接的な操作へと変革します。 CSV機能とExcelワークブックのサポート、数式評価、自動型処理を組み合わせることで、複数のライブラリの管理や手動データ変換の複雑さを解消します。

無料トライアルでは、開発期間中にライセンスキーを必要とせずに、複数シートのエクスポート、数式評価、クロスプラットフォーム展開など、すべての機能にフルアクセスできます。 本番環境への移行準備が整ったら、ライセンスは商用利用をカバーする単一の開発者向けティアから始まります。

始めるにあたって役立つ主なリソース:

本番環境で使用可能なCSVワークフローを構築する準備はできていますか? 無料トライアルを開始して、5分以内に最初のCSVエクスポートを実行しましょう。

よくある質問

IronXLは何に使用されますか?

IronXLは、Excelファイルを操作するために設計された.NETライブラリであり、開発者がExcel文書を作成、読み取り、修正できるようにし、データ型を保持し、複雑なスプレッドシートシナリオを管理しながら、CSVなどのさまざまな形式にエクスポートできます。

IronXLは.NETでのCSVライティングにどのように役立ちますか?

IronXLはExcelワークブックをCSV形式にエクスポートする機能を提供し、データ型が保持され、複雑なスプレッドシートシナリオが効果的に処理されることを保証し、堅牢なCSVライティングソリューションを必要とする.NET開発者にとって理想的な選択肢となります。

なぜ開発者はCSV操作のためにIronXLの使用を検討すべきですか?

開発者は、IronXLを使用することで、ExcelファイルをCSVにシームレスにエクスポートできる能力、大規模データセットを処理する能力、およびデータ型の整合性を維持する能力を考慮すべきであり、.NETアプリケーションにおけるCSV操作のための優れたソリューションを提供します。

スプレッドシート管理のためにIronXLを使用する利点は何ですか?

スプレッドシート管理のためにIronXLを使用する利点には、Excelドキュメントの簡単な操作、CSVなどのさまざまなエクスポート形式へのサポート、および.NETアプリケーションにおける複雑なデータ構造や大規模なデータセットの効率的な処理が含まれます。

IronXLはCSVにエクスポートする際に大規模なExcelファイルを処理できますか?

はい、IronXLは大規模なExcelファイルを効率的に処理するように設計されており、パフォーマンスやデータの整合性を損なうことなく大量のデータをCSVにエクスポートすることを可能にします。

IronXLはCSVにエクスポートする際のデータ型保持をどのように保証していますか?

IronXLは元のデータ型と構造を維持しつつ、Excelデータを正確にCSV形式に変換することで、データ型の保持を確保します。これは正確なデータ処理を必要とするアプリケーションにとって重要です。

IronXLは複雑なスプレッドシートのシナリオに適していますか?

IronXLは複雑なスプレッドシートのシナリオに非常に適しており、複雑なExcelドキュメントを管理および操作するための高度な機能を提供し、データを正確にCSVまたは他の形式にエクスポートできることを確信させます。

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

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね