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

QRCoder対IronBarcode: QR専用ライブラリが限界に達する場所

Curtis Chau
Curtis Chau
Updated: 2026年4月21日

QRCoderは、ある一点において非常に優れています。それは、外部依存関係を一切持たず、制限のないMITライセンスで、標準的なペイロードフォーマットから様々な出力レンダラーまであらゆるものを処理する洗練されたAPIを備え、純粋なC#でQRコードを生成することです。 6000万以上のNuGetダウンロードにより、その評判が得られました。 IronBarcodeとの比較は、品質評価ではなく、適用範囲に関する問題です。 IronBarcodeは50種類以上のバーコード形式に対応し、読み取りと書き込みの両方が可能で、単一の統一されたAPIを通じてPDFドキュメントとの連携も実現します。 QRコード生成以外の要件を持つチームにとって、QRCoderの設計が意図的にどこで止まっているのかを理解することは不可欠です。

QRCoderを理解する

QRCoderは2013年にRaffael Herrmannによって作成され、現在はShane32によってメンテナンスされています。このライブラリは完全にC#で記述されており、外部依存関係は一切ありません。SkiaSharpのバージョン競合、ImageSharpの商用ライセンスに関する懸念、ネイティブバイナリのデプロイといった問題は一切ありません。 .NETが動作するあらゆるプラットフォームで動作します。

MITライセンスは、真に制限のないライセンスです。 一部の人気ライブラリでは、一定の収益基準を超えると商用ライセンスが必要になりますが、QRCoderには隠れた商用制限はありません。 その違いは、商用アプリケーションを開発するチームにとって重要だ。

PayloadGenerator クラスは実用的な価値を大きく向上させます。これは、WiFi認証情報、連絡先カード(vCard)、カレンダーイベント、SMSメッセージ、地理位置データなどの一般的なQRコードデータ形式を処理するため、開発者が各標準のワイヤフォーマットを暗記する必要がないからです。 レンダリングエンジンの種類も豊富で、複数の出力タイプに対応しています。

主な建築上の特徴:

-**外部依存関係ゼロ:**サードパーティのランタイム要件のない純粋なC#で記述されているため、コンテナ化された環境や制限された環境へのデプロイが簡素化されます。 -**収益制限なしのMITライセンス:**収益のしきい値や商業的なトリガーなしに、完全に無料で商用利用できます。

  • PayloadGeneratorヘルパー: WiFi、vCard、CalendarEvent、SMS、Geo、その他の一般的なQRペイロード規格に対応した組み込みフォーマッター -レンダリング形式: PNGバイト、SVG文字列、ASCIIアート、Base64、BMP、その他複数の出力形式 -完全なエラー訂正制御: 4つのECCレベル(L、M、Q、H)すべてが公開されています -**マイクロQRサポート:**スペースに制約のあるラベル向けのコンパクトなQRコード。すべてのバーコードライブラリで利用できるわけではありません。
  • QRコード専用設計: APIはQRコード生成のみを対象としており、1Dフォーマット、DataMatrix、バーコード読み取りは提供していません。

QRコード専用デザイン

QRCoderはデータ作成ステップをレンダリングステップから分離します。QRCodeGeneratorQRCodeData という中間オブジェクトを生成し、その後レンダラークラスに渡されます。 このパターンは、追加のオブジェクトが必要になるという代償を伴いますが、出力フォーマットを精密に制御できます。

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

// PNG bytes via PngByteQRCode
var pngQR = new PngByteQRCode(qrCodeData);
byte[] pngBytes = pngQR.GetGraphic(20); // 20px per module
File.WriteAllBytes("qr.png", pngBytes);

// SVG string via SvgQRCode
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("qr.svg", svgContent);

QRCodeGenerator.CreateQrCode メソッドはコード作成の唯一のエントリーポイントです。CreateEAN13 はありません。 この図書館は、当初の目的を完全に遵守している。

IronBarcodeを理解する

IronBarcodeは、 Iron Software社が提供する商用.NETバーコードライブラリで、単一の統一されたAPIを通じて50種類以上のバーコード形式の生成と読み取りに対応しています。 異なるフォーマットファミリーのために別々のライブラリを維持する代わりに、IronBarcodeはすべてのフォーマットを単一の静的なBarcodeEncodingパラメータを介して提供します。

このライブラリは静的APIモデルを使用しています。System.Drawing.Bitmapオブジェクトを受け入れ、マルチフォーマットを自動検出します。 PDFドキュメントのサポート(PDFページからのバーコードの読み取りとPDFへのバーコードの埋め込みの両方)は、外部依存関係なしで含まれています。

主な特徴:

  • 50以上のバーコード形式: QRコード、Code 128、EAN-13、UPC-A、DataMatrix、PDF417、Aztec、MaxiCode などが単一のBarcodeEncodingパラメータで使用可能です
  • 統合読み取りAPI: BarcodeReader.Readは画像、PDF、ストリームを自動フォーマット検出でサポートし、第二のライブラリは不要です
  • QRコードカスタマイズ: ロゴ埋め込み、色変更、静寂ゾーンの制御がQRCodeWriterメソッドを通じて可能です
  • PDF連携: PDFページからバーコードを読み取り、既存のPDF文書にバーコードを挿入します。
  • 静的APIモデル: ジェネレーターインスタンスは不要で、BarcodeWriterは静的クラスです -**商用ライセンス:**フォーマット制限なしのシングル開発者ライセンスは749ドルから

機能比較

以下の表は、QRCoderとIronBarcodeの基本的な違いをまとめたものです。

フィーチャーQRCoderIronBarcode
QRコード生成はい、素晴らしいはい
1次元バーコード生成なしはい(30種類以上のフォーマットに対応)
その他の2Dフォーマットなしはい(DataMatrix、PDF417、Aztecなど)
バーコード読み取りなしはい、自動検出です
PDFサポートなしはい、読んでスタンプを押してください
ライセンスMIT ― 真に無料商業用(開発者1名につき749ドル)

詳細な機能比較

フィーチャーQRCoderIronBarcode
世代
QRコードはいはい
マイクロQRはいなし
コード128なしはい
EAN-13 / UPC-Aなしはい
データマトリックスなしはい
PDF417なしはい
アステカなしはい
合計フォーマット150歳以上
QRコードの特徴
エラー訂正(L/M/Q/H)はいはい
ロゴ埋め込みはいはい
色のカスタマイズはいはい
SVG出力はいはい
ASCIIアート出力はいなし
Base64出力はいなし
ペイロードジェネレーターヘルパーはいいいえ — 手作業による弦の構造
読む
画像からデコードなしはい
PDFからデコードするなしはい
自動フォーマット検出なしはい
統合
PDFバーコードスタンプなしはい
外部依存関係はゼロはい自己完結型
ライセンスについて
ライセンスの種類MIT商用
収益制限NoneNone
フォーマットごとの価格設定NoneNone

QRコード生成

どちらのライブラリもQRコードを生成しますが、生成ステップとレンダリングステップの関連性において、それぞれのAPIは異なる設計思想を反映しています。

QRCoderアプローチ

QRCoderは2段階のパターンを使用します。QRCodeDataという中間オブジェクトを生成し、別のレンダラークラスがそれを必要な出力形式に変換します。 ECCレベルは必須パラメータであり、デフォルト値はありません。開発者は明示的に選択する必要があります。

using QRCoder;
using System.IO;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.M
);

var qrCode = new PngByteQRCode(qrCodeData);
byte[] pngBytes = qrCode.GetGraphic(20); // pixels per module
File.WriteAllBytes("qr.png", pngBytes);

このパターンの利点は、コードデータを再生成することなくqrCodeDataオブジェクトを複数の出力形式に再利用できることです。 レンダラークラスには、PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, BitmapByteQRCode などがあります。

IronBarcodeのアプローチ

IronBarcodeはジェネレーションとレンダリングを静的なBarcodeWriterクラス上で流暢なチェーンに統合しています。 BarcodeEncoding.QRCode パラメータはフォーマットを選択し、ToPngBinaryDataといった端末メソッドが出力を決定します:

using IronBarCode;

// Single fluent call — no intermediate objects
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .SaveAsPng("qr.png");

特定の誤り訂正コントロールが必要な場合、QRCodeWriterクラスはフォーマット特有のオプションを提供します:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium
);
qr.SaveAsPng("qr.png");

IronBarcodeの2Dバーコード作成ガイドでは、QRコード、DataMatrix、PDF417、Aztecを含むすべてのサポートされた2D形式を同じBarcodeWriterエントリーポイントでカバーしています。

QRコードのカスタマイズ

どちらのライブラリもQRコードへのロゴ埋め込みと色変更をサポートしていますが、必要なシステムの種類によってアプローチが異なります。

QRCoderアプローチ

QRCoderのロゴ埋め込みはSystem.Drawing.Bitmapを受け入れることを公開しています。 つまり、呼び出しコードは直接System.Drawingを使用してロゴファイルを読み込まなければなりません:

using QRCoder;
using System.Drawing;

var qrGenerator = new QRCodeGenerator();
var qrCodeData = qrGenerator.CreateQrCode(
    "https://example.com",
    QRCodeGenerator.ECCLevel.H // High ECC required when logo occludes part of the code
);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", System.Drawing.Imaging.ImageFormat.Png);

カラーのカスタマイズは、lightColorパラメータを通じて同様のパターンに従います。

IronBarcodeのアプローチ

IronBarcodeはロゴ埋め込みと色変更をQRCodeWriter結果オブジェクトの名前付きメソッドとして提供しています。 AddBrandLogo メソッドはファイルパスを受け入れ、ChangeBarCodeColorColor 値を受け入れます:

using IronBarCode;
using System.Drawing;

// Logo embedding
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-logo.png");

// Colour customisation
var coloredQr = QRCodeWriter.CreateQrCode("https://example.com", 500);
coloredQr.ChangeBarCodeColor(Color.DarkBlue);
coloredQr.SaveAsPng("colored-qr.png");

QRコードスタイルのカスタマイズガイドでは、ロゴのサイズ、色の組み合わせ、静音ゾーンの制御について詳しく説明しています。

バーコード読み取り

バーコード読み取り機能は、両図書館間の能力差を最も顕著に示している。

QRCoderアプローチ

QRCoderにはバーコード読み取りAPIがありません。 QRCodeGenerator クラスとすべてのレンダラークラスは生成専用です。 画像、ファイル、またはストリームからQRコードをデコードする方法はありません。 QRコードの生成と読み取りの両方を必要とするアプリケーションは、独自のAPI、独自のネームスペース、独自のメンテナンスサイクルを持つ別のライブラリ(通常はZXing .NET )を追加する必要があります。

//QRCoderhas no reading API.
// These methods do not exist:
//   qrGenerator.Decode("image.png");
//   QRCodeReader.Read("image.png");
//
// A separate library (e.g., ZXing.Net) is required for decoding.

これは設計上の決定であり、見落としではありません。QRCoderは明確に生成ライブラリです。

IronBarcodeのアプローチ

IronBarcodeには、同じパッケージ内に読み取りAPIが含まれています。 BarcodeReader.Read は画像ファイル、PDFファイル、ストリーム、およびSystem.Drawing.Bitmapオブジェクトを受け入れます。 呼び出し元が検索するバーコード形式を指定する必要なく、バーコード形式を自動的に検出し、画像内で見つかったすべてのバーコードを返します。

using IronBarCode;

// Reading a QR code — no separate library required
var results = BarcodeReader.Read("qr.png");
foreach (var result in results)
{
    Console.WriteLine(result.Value);       // decoded value
    Console.WriteLine(result.Format);      // QRCode, Code128, EAN13, etc.
}

画像からのバーコード読み取りガイドでは、 PDF、複数ページ文書、ストリーム、低解像度またはノイズの多い画像から、同じ入力ポイントを通してバーコードを読み取る方法を解説しています。

QRコード以外のフォーマット範囲

QRCoderアプローチ

QRCoderはQRコードのみを生成します。これは意図的な設計です。 QRCodeGenerator.CreateQrCode メソッドは、このライブラリが提供する唯一の生成エントリーポイントです。 QRコードから始まり、後にCode 128配送ラベル、EAN-13製品コード、またはDataMatrix医薬品コンプライアンスコードを必要とするプロジェクトでは、追加される各フォーマットに対応するために、2つ目のライブラリを導入する必要があります。

using QRCoder;

//QRCoderis limited to QR — other formats require separate packages
var qrGenerator = new QRCodeGenerator();
var qr = qrGenerator.CreateQrCode("scan-to-track", QRCodeGenerator.ECCLevel.M);

// コード128 requires a different library (e.g., NetBarcode)
// データマトリックス requires yet another library
// Reading any format requires yet another library

IronBarcodeのアプローチ

IronBarcodeはすべての形式ファミリーを同じBarcodeWriter.CreateBarcodeエントリーポイントでカバーしています。 QRコードからCode 128からDataMatrixに切り替えるには、BarcodeEncodingパラメータを変更するだけでよく、追加のパッケージや新しい名前空間、別個のAPIは不要です:

using IronBarCode;

// All formats — one API, one package
BarcodeWriter.CreateBarcode("scan-to-track", BarcodeEncoding.QRCode)
    .SaveAsPng("campaign-qr.png");

BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product-code.png");

BarcodeWriter.CreateBarcode("LOT-ABC-123", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-code.png");

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

QRCoderIronBarcode
new QRCodeGenerator()静的クラス - インスタンスは不要
qrGenerator.CreateQrCode(data, ECCLevel.M)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
new PngByteQRCode(qrCodeData)不要です。レンダリングは処理チェーンの一部です。
qrCode.GetGraphic(20).ToPngBinaryData() with .ResizeTo(w, h)
new SvgQRCode(qrCodeData).GetGraphic(10).SaveAsSvg(path)
new QRCode(qrCodeData).GetGraphic(...)QRCodeWriter.CreateQrCode(data, size, level)
QRCodeGenerator.ECCLevel.LQRCodeWriter.QrErrorCorrectionLevel.Low
QRCodeGenerator.ECCLevel.MQRCodeWriter.QrErrorCorrectionLevel.Medium
QRCodeGenerator.ECCLevel.QQRCodeWriter.QrErrorCorrectionLevel.Quartile
QRCodeGenerator.ECCLevel.HQRCodeWriter.QrErrorCorrectionLevel.Highest
PayloadGenerator.WiFi(...).ToString()"WIFI:T:WPA;S:{ssid};P:{pass};;"
読み取りAPIはありませんBarcodeReader.Read(path)
QRコード形式のみ50+ formats via BarcodeEncoding.*

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

プロジェクトがQRコードのみを対象としており、今後もその方針が変わらないチームにとって、QRCoderは適切にメンテナンスされたライブラリであり、その目的を十分に果たし続けている。 以下のシナリオは、チームがその姿勢を再評価するきっかけとなる状況を説明しています。

フォーマット要件はQRコードを超えて拡大する

ほとんどのバーコード要件はQRコードから始まりますが、QRCoderはその初期段階を確実に処理します。 緊張感が生じるのは、別のフォーマットが話題に上ってきた時だ。 出荷にコード128ラベルが必要な物流チーム、EAN-13製品コードを必要とする小売業務、シリアル化にDataMatrixを必要とする製薬ワークフローなど、新しいフォーマットが登場するたびに、チームはNuGetの依存関係を一つ追加せざるを得なくなります。 ライブラリを追加するたびに、新しい名前空間を習得する必要が生じ、新しいリリースサイクルを監視する必要が生じ、 .NETのアップグレード時にバージョン競合が発生する可能性も高まります。

バーコード読み取りが必須となる

キャンペーン用の送信用QRコードを生成するアプリケーションは、生成専用システムである。 入荷貨物の処理、到着時の製品コードの検証、イベントでのチケットの認証なども行うアプリケーションは、生成・読み取りシステムである。 QRCoderには設計上、読み取り機能がありません。その不足分は別のライブラリで補う必要があります。 読み取りライブラリの導入は、バーコードサブシステムの統合フットプリントを大幅に変更します。特に、読み取りライブラリが独自のフォーマット仕様要件やスレッドセーフティ制約を課す場合はなおさらです。

複数図書館の保守管理負担

QRCoderベースのプロジェクトにおける自然な蓄積パターンは、予測可能な経路をたどります。QRコード生成のためのQRCoder、配送ラベル用の1次元バーコードライブラリ、そしてデコード用の読み取りライブラリです。 各ライブラリは、独自のドキュメント、独自のバージョン管理サイクル、および独自の互換性のない変更履歴を持っています。 あるライブラリにとってマイナーな.NETバージョンのアップグレードが、別のライブラリにとって互換性のない変更と重なる場合がある。 長年にわたってこうした蓄積を管理してきたチームは、隠れたコストは最初の統合にあるのではなく、複数のアップグレードサイクルにわたる複合的なメンテナンス費用にあると報告している。

PDFドキュメントのサポート

QRCoderでは、PDFレポートに埋め込むためのバーコードを生成したり、文書処理パイプラインで受信したPDF文書からバーコードを抽出したりすることはできません。 PDFをサポートするには、バーコード機能を備えた完全なPDFライブラリ、または専用のライブラリの組み合わせが必要です。 請求書処理、コンプライアンス報告、テンプレート化されたPDFからのラベル生成など、文書中心のワークフローを構築するチームは、プロジェクトのライフサイクルの早い段階で、QRCoderの適用範囲がPDFの要件と交差することに気づきます。

一般的な移行の考慮事項

ペイロードジェネレーター文字列フォーマット

QRCoderのPayloadGeneratorヘルパークラスは、一般のQRコードペイロード標準に準拠した文字列を生成します。 例えばWiFi形式では、WIFI:T:WPA;S:NetworkName;P:Password;;を生成します。 これらの文字列は、QRコード仕様で文書化された公開標準フォーマットであるため、ヘルパークラスを使用せずにIronBarcodeで直接構築できます。 多数のPayloadGenerator使用を行うチームは、文字列構築を再現する小さな静的ヘルパーメソッドを書くことを計画する必要があります。

ECCLevel 列挙型マッピング

QRCoderはL、M、Q、Hの値を持つQRCodeGenerator.ECCLevelを使用します。 IronBarcodeはHighestの値を使用します。 マッピングは直接的ですが、列挙型参照はすべての呼び出し箇所で更新する必要があります。 QRCoderが毎回BarcodeWriter.CreateBarcodeパスが使用される際には妥当なデフォルトを適用します。

レンダラークラスの削除

QRCoderのレンダラークラス(QRCode)は、移行後は必要ありません。 IronBarcodeはGeneratedBarcode上での流暢なチェーンにレンダリングを組み込んでいるため、中間レンダラーオブジェクトパターンは引き継がれません。 これらのレンダラークラスをインスタンス化するコードは、BarcodeWriter結果の終端メソッドコールに置き換えることができます。

IronBarcodeの追加機能

上記の比較セクションでは、以下のIronBarcodeの機能については触れていません。

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

IronBarcodeは、現在および今後 for .NETリリースを対象とした定期的なアップデートを行い、活発な開発を継続しています。 ライブラリは現在 for .NET LTSと最近のリリースをサポートし、新しい.NETバージョンが到着するにつれて互換性更新が展開されます。QRCoderも積極的に保守されており、すべての現在 for .NETターゲットで実行されます; 依存関係がゼロの設計なので、将来の互換性も容易です。 どちらのライブラリも、長期的な.NETプロジェクトに適しています。 IronBarcodeを選択するチームにとって、商用サポートモデルは、技術支援への直接アクセスと、バグの優先的な解決を提供します。

結論

QRCoderとIronBarcodeは、同じ初期要件であるQRコード生成に、異なるアーキテクチャ上の出発点から取り組んでいる。 QRCoderは、QRコードのみを扱うことを目的とした、単一フォーマット専用のライブラリです。 IronBarcodeは、50種類以上のバーコード形式に対応した、生成、読み取り、PDF統合機能を備えたマルチフォーマットライブラリです。 比較対象は、良い図書館とより良い図書館ではない。 それは、専用工具と汎用工具の中間に位置する。

QRCoderは、QRコード生成が恒久的かつ限定的な要件となるプロジェクトに最適な選択肢です。 ゼロ依存のフットプリントや無制限のMITライセンス、PayloadGeneratorヘルパーにより、2FA登録ワークフローやマーケティングキャンペーン用QRジェネレーター、またはバーコードの範囲が明確に固定された任意のコンテキストにおいて優れた選択肢となります。 この図書館はよく整備されており、広く利用されており、その本来の機能を確実に果たしている。 こうした特徴を持つチームは、チームを移籍しても何のメリットもない。

プロジェクトのバーコード要件がQRコード生成の範囲を超える場合、あるいは今後超える可能性が高い場合、 IronBarcodeはより実用的な選択肢となります。 入荷した貨物やスキャンした文書からコードを読み取る必要のあるアプリケーション、QRコードキャンペーンと並行してCode 128ラベルを生成する必要のあるアプリケーション、またはPDFレポートに埋め込まれたバーコードを生成する必要のあるアプリケーションは、これらのすべてのタスクで一貫した単一のAPIを利用することでメリットが得られます。 QRCoderのC#代替ライブラリガイドでは、 QRコード専用ライブラリが本番環境で限界に達する箇所について、より詳細な情報を提供しています。 ライセンス料は749ドルからで、詳細はIronBarcodeのライセンスページでご確認いただけます。

率直に言って、最適なツールはプロジェクトの規模によって全く異なります。 QRコードのみを必要とする永続的な要件であれば、QRCoderは必要な機能をすべて無料で提供します。複数のフォーマット、読み取り、またはPDF統合を必要とする要件の場合、 IronBarcodeはプロジェクトの進化に伴って複数の単機能ライブラリを管理する必要性をなくします。

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。