IRONSOFTWAREHOME
他のコンポーネントと比較する

バーコード vs IronBarcode: 複数パッケージ生成 vs 単一パッケージ生成と読み取り

Curtis Chau
Curtis Chau
Updated: 2026年5月7日

Barcoderで単一のPNGを生成するには、2つのパッケージをインストールし、3つの名前空間をインポートし、フォーマット固有のクラスでエンコードし、オプションオブジェクトを使用してレンダラーを作成し、ストリームを開き、そこにレンダリングし、ストリームを破棄します。 それが幸福への道のりの全てであり、しかもそれは執筆活動のみを対象としている。 Barcoderには読み取りAPIが一切ありません。 このライブラリはMITライセンスを採用しており、オープンソースであるため、特に商用依存を避けたいチームにとっては、一見魅力的に映る。 しかし、断片化されたアーキテクチャ(最低でも2つのNuGetパッケージが必要で、バーコード形式ごとに異なるエンコーダークラスを使用し、エンコードと出力を完全に分離するレンダラーパイプラインを採用している)は、最も単純な単一フォーマット生成シナリオを超えて要件が複雑化すると、すぐに大きな摩擦を生む。

バーコードを理解する

Barcoderは、MITライセンスの下でNuGetから入手可能なオープンソース for .NETバーコード生成ライブラリです。 Code128、QR、DataMatrix、EAN-13、PDF417などのバーコード形式にデータをエンコードします。 設計哲学は、エンコードとレンダリングを完全に分離しています。コアライブラリはIBarcodeオブジェクト(データ構造)を生成し、別のレンダラーパッケージがそのオブジェクトを画像に変換します。

この設計の実際的な影響は、最初の設置時から明らかになる。 PNG出力が可能になる前に2つのNuGetパッケージが必要です: エンコード用のBarcoder.Renderer.Image。 SVG出力も必要な場合は、3番目のパッケージ — Barcoder.Renderer.Svg — を追加する必要があります。 これらのパッケージはそれぞれ独立してバージョン管理されているため、一方のアップデートが他方のアップデートと自動的に同期するわけではなく、プロジェクト全体で同期を維持するには定期的なメンテナンス作業が必要となります。

Barcoderの主なアーキテクチャ特性:

  • PNG出力に必要な2つのNuGetパッケージ: エンコード用のBarcoder.Renderer.Image
  • フォーマット固有のエンコーダークラス: 各バーコードタイプには自身の名前空間内に独自のエンコーダーがあります — Code128Encoder, QrEncoder, DataMatrixEncoderなど。
  • IBarcodeには出力メソッドがありません: エンコードの結果はプレーンなデータオブジェクトです。 レンダラーは別途構築する必要があり、ストリームを開いてレンダリングし、閉じる必要があります。 -画像レンダラー for .NET Frameworkサポートが終了しました: .NET Framework上のTeamsでは画像レンダラーパッケージを使用できません -**読み取り機能なし:**バーコーダーは画像、ファイル、またはその他のソースからのバーコードをデコードできません
  • 独立したパッケージのバージョン管理: BarcoderBarcoder.Renderer.Image は依存関係の更新中に互いにずれ込む可能性があります。

複数パッケージ生成ワークフロー

インストール事例を見れば、その規模の違いがすぐに分かるだろう。 Barcoderでは、基本的なPNG出力には2つの別々のパッケージが必要です。

dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
SHELL

Code128バーコードを生成してPNGとして保存する完全なワークフローには、3つの名前空間インポート、フォーマット固有のエンコーダ呼び出し、オプションオブジェクトを使用したレンダラーの構築、ファイルストリーム、およびレンダリング呼び出しが必要です。

using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;

IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 2,
    BarHeightFor1DBarcode = 50
});

using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);

バーコード形式の切り替えはパラメータの変更ではなく、別の名前空間をインポートして別のクラスを呼び出す必要があります。 DataMatrixEncoder.Encodeは文字列のみを受け取ります。 特定の形式でバーコードを作成するための統一されたインターフェースは存在しない。

IronBarcodeを理解する

IronBarcodeは、単一のNuGetパッケージでバーコードの生成と読み取りを網羅する商用.NETバーコードライブラリです。 それは、BarcodeEncoding列挙体を経由して行われます。

このライブラリは、バーコードコードの最初の行を記述してから、正常に動作する出力が得られるまでの時間を最小限に抑えるように設計されています。 生成、読み取り、PDFサポート、ロゴ埋め込みQRコード、およびすべての出力タイプが1つのパッケージに含まれており、バージョン管理も1つで済みます。

IronBarcodeの主な特徴:

  • 単一のNuGetパッケージ: IronBarcode は世代、読み取り、PDF、およびすべての出力フォーマットをカバーしています。
  • 統一されたフォーマット選択: すべてのバーコードタイプはBarcodeEncoding列挙体の値を通じてアドレス指定されます。 no format-specific imports or classes
  • 結果オブジェクトの出力メソッド: GeneratedBarcodeSaveAsPng, ToPngBinaryData, ToStream, SaveAsSvg, およびResizeToを直接公開しています。
  • ネイティブの読み取り機能: BarcodeReader.Read() は、画像ファイル、バイト配列、ストリーム、PDFから外部ライブラリを使わずにデコードします。
  • **MAUI、Docker、AWS Lambda、Azureのサポート:**標準的なデスクトップおよびサーバーシナリオを超えた、文書化されたデプロイメントターゲット
  • .NET Frameworkおよび最新 for .NETを完全にサポート:.NET Framework4.6.2 から.NET 9 まで

機能比較

フィーチャーバーコードIronBarcode
必要なNuGetパッケージ最低2名1
バーコード生成はいはい
バーコード読み取りなしはい
ライセンスMIT(オープンソース)商用
.NET Frameworkのサポート画像レンダラーにドロップされました.NET Framework4.6.2以降
PDFを読むなしはい
ロゴ入りQRコードなしはい

詳細な機能比較

フィーチャーバーコードIronBarcode
世代
Code128生成はいはい
QRコード生成はいはい
データマトリックスの生成はいはい
EAN-13、PDF417はいはい
ロゴが埋め込まれたQRコードなしはい — .AddBrandLogo(path)
列挙型で選択されたフォーマットいいえ — フォーマットごとに個別のエンコーダークラスはい — BarcodeEncoding enum
出力
PNG出力はい(Barcoder.Renderer.Image経由)はい — .SaveAsPng()
SVG出力はい (Barcoder.Renderer.Svg 経由)はい — .SaveAsSvg()
バイナリデータ出力はい(MemoryStream経由)はい — .ToPngBinaryData()
ストリーム出力はい(手動ストリーム管理)はい — .ToStream()
直接サイズ変更APIいいえ — PixelSize スケールファクターのみはい — .ResizeTo(width, height)
読む
画像ファイルから読み込むなしはい
PDFから読み込むなしはい
ストリームから読み込むなしはい
複数バーコード検出なしはい — ExpectMultipleBarcodes
読書速度制御なしはい — ReadingSpeed enum
プラットフォーム
.NET Core / .NET 5 以上はいはい
.NET Framework画像レンダラーにドロップされました.NET Framework4.6.2以降
.NET 9記録なしはい
MAUI(iOS、Android、Windows、macOS)なしはい
Docker / Azure / AWS Lambda記録なしはい
パッケージ
独立したパッケージのバージョン管理リスクはいいいえ — シングルパッケージ
フォーマットごとの名前空間はいいいえ — 単一のusing IronBarCode
ライセンスについて
ライセンスモデルMIT(オープンソース)商用
価格無料Lite: 749ドル、Plus: 1,499ドル、Professionalプラン:2,999ドル、アンリミテッドプラン:5,999ドル

フォーマット選択および生成API

バーコードフォーマットの選択方法の構造は、バーコードを生成するコードベースのあらゆる部分に影響を及ぼす。

バーコード方式

バーコード処理では、フォーマット選択は別々の名前空間にある別々のエンコーダークラスを通して行われます。 形式を切り替えるには、新しいusingディレクティブを追加し、異なるメソッドシグネチャを持つ異なるクラスを使用する必要があります。

// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);

// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);

// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");

各エンコーダーは独自のパラメータ契約を持っている。 既存のプロジェクトに新しいフォーマットを追加することは、単語一つ変更するだけで済むような簡単なことではありません。新しい名前空間のインポート、新しいクラスの学習、そして新しいパラメーターの理解が必要になります。

IronBarcodeのアプローチ

IronBarcodeは、統一されたBarcodeEncoding列挙体を通じてすべてのフォーマット選択を行います。 新しいフォーマットを追加するには、列挙値に単語を1つ変更するだけです。

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");

// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");

// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");

// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

実運用環境で使用する場合は、アプリケーション起動時にライセンスキーを追加してください。

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

IronBarcodeのバーコード生成に関するドキュメントには、スタイル設定、余白、色のカスタマイズなど、生成オプションの全範囲が記載されています。

レンダリングと出力オプション

バーコードの出力をファイル、バイナリデータ、ストリームなど様々な形式に変換することは一般的な要件ですが、各ライブラリによってその処理方法は大きく異なります。

バーコード方式

Barcoderにおけるエンコードとレンダリングの分離は、アーキテクチャ上の原則としては妥当だが、出力フォーマットを変更するたびにオーバーヘッドが発生する。 ファイルへの保存にはFileStreamを開く必要があります。 バイナリデータを取得するためには、ToArray()を呼び出す必要があります。 すべての出力シナリオにおいて、オプションオブジェクトを使用してレンダラーを構築する必要があります。

// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 3,
    BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);

// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();

サイズ制御は間接的です: PixelSize はバーコードのモジュールサイズに対するスケール乗数であり、直接的な幅と高さの指定ではありません。

IronBarcodeのアプローチ

IronBarcodeは、どんな出力形式にも連鎖的なメソッド呼び出しによって到達できるGeneratedBarcodeオブジェクトを返します。 レンダラーの構築も、ストリーム管理も不要です。

using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100);

// File
barcode.SaveAsPng("barcode.png");

// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();

// Stream
System.IO.Stream stream = barcode.ToStream();

.ResizeTo(width, height)は、明示的なピクセル寸法を受け取り、同じオブジェクト上の任意の出力メソッドと連鎖します。

バーコードの読み取り

Barcoderに読み取りAPIがないのは、設定上の選択ではなく、アーキテクチャ上の明確な制約によるものです。

バーコード方式

バーコードには読み取り機能やデコード機能はありません。 APIは存在せず、APIの導入予定もなく、ライブラリ内での回避策もありません。 アプリケーションがバーコードを読み取る必要がある場合、Barcoder に加えて、別のライブラリ(独自の API サーフェスと追跡対象の独自のバージョンを持つ、別のNuGet依存関係)を追加する必要があります。 つまり、少なくとも2つの読み取り関連依存関係が必要になるということだ。生成にはBarcoder、そして読み取りには別の何かが必要だ。

IronBarcodeのアプローチ

IronBarcodeは、生成と読み取りの両方を同じパッケージと一貫したAPIパターンでカバーします。 BarcodeReader.Read()メソッドは、画像ファイル、バイト配列、ストリーム、およびPDFをネイティブで受け入れます。

using IronBarCode;

// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine(result.Value);
    Console.WriteLine(result.Format);
}

// PDFから読み込む natively
var pdfResults = BarcodeReader.Read("document.pdf");

// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
C#

PDFファイルの読み込みはネイティブで行われ、中間的な画像抽出、変換ライブラリ、追加パッケージは一切不要です。 IronBarcodeのバーコード読み取りに関するドキュメントでは、複数ページのPDF、関心領域の読み取り、およびパフォーマンスチューニングについて説明しています。

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

バーコードIronBarcode
Code128Encoder.Encode("data", false)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false)QRCodeWriter.CreateQrCode("data", 500)
DataMatrixEncoder.Encode("data")BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new ImageRenderer(new ImageRendererOptions { ... })必要ありません — 出力はGeneratedBarcodeから連鎖します。
renderer.Render(barcode, stream).SaveAsPng(path) / .ToPngBinaryData() / .ToStream()
IBarcode(データ構造、出力メソッドなし)SaveAsPng, ToPngBinaryData, ToStream, ResizeToなどがあります)
Barcoder + Barcoder.Renderer.Image(2つのパッケージ)IronBarcode(1つのパッケージ)
using Barcoder.Code128using IronBarCode(単一の名前空間、全フォーマット)
using Barcoder.Qrusing IronBarCode
using Barcoder.DataMatrixusing IronBarCode
読み取りAPIはありませんBarcodeReader.Read(path / bytes / stream / pdf)
.NET Frameworkイメージレンダラーなし.NET Framework4.6.2以降
PixelSize + BarHeightFor1DBarcodeオプション.ResizeTo(width, height)

チームがBarcoderからIronBarcodeへの移行を検討する場合

読書が要件に追加されました

多くのプロジェクトは、ラベルの印刷、文書用のコード生成、レポートへのバーコードの埋め込みなど、純粋な生成パイプラインとして始まります。 Barcoderは、これらのプロジェクトの初期段階から役立ちます。 同じアプリケーションが後で受信したバーコードを検証したり、スキャンしたドキュメントを処理したり、アップロードされたPDFからバーコードをデコードしたりする必要が生じた場合、Barcoderにはそれに対応する手段がありません。 チームは、2つ目のライブラリを評価し、そのAPIを習得し、 NuGetバージョンを個別に管理し、2つのライブラリ間の統合面を処理する必要がある。 この段階に達したチームは、2つの別々のバーコード依存関係を維持するのではなく、両方の側面を処理するライブラリに統合することが多い。

.NET Frameworkの互換性の問題

Barcoder.Renderer.Imageは.NET Frameworkのサポートを終了しました。.NET Framework4.x 上でサービスやデスクトップアプリケーションを保守しているチームが、定期的な依存関係の保守中にイメージレンダラーパッケージを更新すると、ビルドエラーが発生します。 これは設定ミスではなく、図書館によるプラットフォームサポートに関する決定です。 IronBarcodeは、特別なパッケージングや異なるターゲット向けの条件付き依存関係なしに、.NET Framework4.6.2から.NET 9までをサポートします。

パッケージバージョンのずれが調整上の問題を引き起こす

Barcoder.Renderer.Imageが独立してバージョン管理されているため、依存関係の更新中に片方だけを更新すると微妙な互換性の問題が発生する可能性があります。 複数のプロジェクトを含むリポジトリでは、各プロジェクトが異なるバージョンのレンダラーパッケージを使用しているため、プロジェクト間で一貫した動作を確保することは、チームの規模が大きくなるにつれて複雑化する調整上の問題となる。 IronBarcodeに統合したチームは、1つのパッケージと1つのバージョンを管理することで、この種の問題が完全に解消されると報告している。

フォーマットのカバー範囲は時間とともに拡大する

プロジェクトはCode128ラベルから始まり、後から顧客向けリンク用のQRコードを追加し、さらにコンプライアンス要件を満たすためにDataMatrixを追加するといった流れになるかもしれません。 Barcoderでは、フォーマットを追加するたびに、新しい名前空間のインポート、異なるメソッドパラメータを持つ異なるエンコーダクラス、そして場合によっては新しいNuGetパッケージが必要になります。 IronBarcodeでは、フォーマットを追加することは既存の呼び出しでBarcodeEncoding列挙型の値を変更することです。 バーコード形式の対応範囲拡大をロードマップに盛り込んでいるチームは、列挙型ベースのモデルの方がメンテナンスがはるかに容易であることに気づいています。

MAUIとクロスプラットフォーム展開の要件

Barcoderは、MAUI、Docker、AWS Lambda、またはAzureデプロイメントのサポートに関するドキュメントを提供していません。 クロスプラットフォームのMAUIアプリケーションを構築しているチームや、バーコード処理をサーバーレスインフラストラクチャにデプロイしているチームは、Barcoderのドキュメントとテストがこれらの対象を網羅していないことに気づきます。 IronBarcodeは、iOS、Android、Windows、macOS MAUIターゲット、Dockerコンテナ、および主要なクラウドプラットフォーム全体にわたるデプロイメントに関するドキュメントを作成し、積極的にテストを行っています。

一般的な移行の考慮事項

GeneratedBarcodeタイプへの変更

BarcoderコードでIBarcode変数を格納して後でレンダラーに渡す場合はリファクタリングが必要です。 IronBarcodeでは、.ToPngBinaryData()のような直接呼び出しに変更します。 型システムはコンパイル中に必要なすべての更新箇所を表示します。Barcoderパッケージが削除された後、IBarcodeは解決されません。

PixelSizeには直接の同等物がありません

BarcoderのPixelSizeは、バーコードの自然なモジュールサイズに対するスケール乗数であり、明示的なピクセル寸法ではありません。 出力幅は、バーコードの内容、フォーマット、および乗数の組み合わせによって決まります。 IronBarcodeは、明示的なピクセル寸法を使用して.ResizeTo(width, height)を使用します。 移行中に、既存のBarcoderコードが生成する実際の出力寸法を測定し、その値を.ResizeTo()呼び出しで使用します。

BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ResizeTo(300, 80)
    .SaveAsPng("barcode.png");

名前空間の統合

Barcoderプロジェクトは、使用されるフォーマットごとにusing Barcoder.*ステートメントを蓄積します。 移行中に、これらはすべて単一のusing IronBarCode;に統合されます。 ソリューション全体でusing Barcoderを検索すると、更新が必要なすべてのファイルが特定されます。 影響を受けるファイルの数は、通常、チームが予想するよりも多くなります。なぜなら、バーコード形式を使用する各ファイルは、それぞれ独自の形式固有の名前空間をインポートするからです。

SVG出力パスの変更

GeneratedBarcode上の直接メソッド呼び出しに置き換えます。

// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);

// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .SaveAsSvg("barcode.svg");

すべてのSVGレンダリングサイトが移行された後、Barcoder.Renderer.Svgパッケージを削除できます。

IronBarcodeの追加機能

上記で挙げた比較点以外にも、 IronBarcodeにはBarcoderにはない機能が備わっています。

.NETの互換性と将来の準備

IronBarcodeは.NET Framework 4.6.2、.NET Core 2.x、.NET 5、.NET 6、.NET 7、.NET 8、および.NET 9をサポートし、定期的に更新されます。 バーコード v3はイメージレンダラーパッケージで.NET Frameworkのサポートを中止しました。 .NET Frameworkと最新 for .NETターゲットにわたる長いサポートウィンドウが必要なチームにとっては、IronBarcodeの単一パッケージ互換性マトリックスがターゲットごとの条件付き依存関係を管理する必要性をなくします。

結論

BarcoderとIronBarcodeは、基本的に異なるスコープを反映しています。Barcoderはエンコードとレンダリングを分離した生成のみのライブラリであり、IBarcodeデータ構造とレンダラーパイプラインは意図的に異なるレイヤーです。 IronBarcodeは、バーコードの生成と読み取りが単一のパッケージ、単一の名前空間、そして一貫した静的APIを共有する、完全なバーコードライブラリです。 要件が拡大すると、アーキテクチャ上の違いが最も顕著になります。Barcoderはマルチパッケージ、マルチネームスペース、読み取り不要の設計を採用しているため、追加するたびに構造的な作業が必要になりますが、 IronBarcode新しいフォーマットや機能の追加は構成変更として扱われます。

Barcoderは、プロジェクトが本当に生成機能だけを必要とし、 .NET Coreのみを対象とし、使用するバーコード形式が少なく、MITライセンスが必須条件である場合に最適な選択肢です。 このライブラリは、記載されている範囲内で動作し、読解要件がなく、 .NET Frameworkをターゲットとしない、範囲が限定されたプロジェクトにとっては、費用のかからないオープンソースの選択肢として妥当です。

IronBarcodeは、プロジェクトでバーコードの生成だけでなく読み取りも必要となる場合、 .NET FrameworkまたはクロスプラットフォームのMAUIデプロイメントを対象とする場合、将来的にバーコードフォーマットを追加する予定がある場合、あるいはDockerまたはクラウド環境へのデプロイメントが必要な場合に最適な選択肢です。 単一パッケージモデルと列挙型ベースのフォーマット選択により、プロジェクトの規模が拡大するにつれてBarcoderで蓄積されるオーバーヘッドが解消されます。

実際の判断は、軌道の問題に帰着する。 読み取りを必要としない、単純な単一フォーマット生成器に留まることが確実なプロジェクトであれば、Barcoderは十分に役立つだろう。 バーコードに関する要件に曖昧さがあるプロジェクト(フォーマットの追加、読み取り機能の追加、クロスプラットフォーム展開など)は、予想よりも早くBarcoderのアーキテクチャ上の限界に直面するでしょう。 どちらのライブラリも信頼できるツールです。 問題は、どちらが実際の作業範囲に合致するかということだ。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。