IRONSOFTWAREHOME
IRONBARCODEの使用

.NET MAUIバーコードスキャナ SDK アプリの構築方法

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

.NET MAUIは、Android、iOS、Windowsをターゲットとする単一のコードベースという約束を実現しています。 課題となるのは、バーコードスキャンなどのネイティブなハードウェア機能を統合する必要がある場合です。 カメラAPIを手動でブリッジするには、プラットフォーム固有の設定、条件付きコンパイルディレクティブ、そして何時間にも及ぶデバッグ作業が必要になります。 もっと速い方法がある。

このチュートリアルでは、 IronBarcodeを使用して.NET MAUIで動作するクロスプラットフォームのバーコードスキャナを構築する方法を説明します。 プロジェクトの設定、プラットフォーム権限の設定、画像ファイルからのバーコードスキャン、PDFドキュメントからのバーコード読み取り、スキャンオプションによる複数のシンボル体系の処理など、すべてサポートされているあらゆるターゲットで実行可能なコードで行います。

無料トライアルを開始し、以下の手順に従ってください。

NuGetNuGetでインストール

PM > Install-Package BarCode

Install IronBarcode by running the command above in the NuGet Package Manager Console, or search for the package in the NuGet Package Manager.

どのように.NET MAUIでBarCodeスキャナーSDKをセットアップしますか?

.NET MAUI BarCodeスキャナSDKのセットアップには、新規プロジェクトの作成、NuGetパッケージのインストール、プラットフォーム権限の設定が必要です。 Visual Studioでの設定プロセス全体は数分で完了します。

.NETのMAUIプロジェクトを作成する

Visual Studioを開き、新しい.NET MAUI Appプロジェクトを作成します。 プロジェクト名には"BarcodeScanner"など、分かりやすい名前を付け、ターゲットフレームワークとして.NET 8以降を選択してください。 Visual Studio は、Android と iOS それぞれにプラットフォーム固有のフォルダーを含む、デフォルトのプロジェクト構造を生成します。

.NET 10 をターゲットとする場合も、同じプロジェクトテンプレートが適用されます。 必要に応じてnet10.0-windows10.0.19041.0を含めます。 .NET MAUIがサポートするプラットフォームのドキュメントを参照して、対象となるフレームワーク名と最小OSバージョンの要件の完全なリストを確認してください。

IronBarcodeをインストールする

パッケージマネージャーコンソールを使用して、 IronBarcode NuGetパッケージをインストールします。

PM > Install-Package BarCode

このコマンドは、バーコードスキャナSDKと、 .NET MAUIアプリケーションに必要なすべての依存関係をダウンロードしてインストールします。

プラットフォーム権限の設定

ライブカメラ映像ではなく画像ファイルからスキャンする場合でも、 .NET MAUIバーコードスキャナーアプリに対して以下の権限を設定することをお勧めします。

Androidの場合は、次の内容をPlatforms/Android/AndroidManifest.xmlに追加します。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
XML

iOSの場合は、次のエントリーをPlatforms/iOS/Info.plistに追加します。

<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
XML

SDKを初期化します

アプリケーションのライフサイクルの早い段階でライセンスキーを設定し、スキャン呼び出しが行われる前にIronBarcodeが完全にアクティベートされるようにしてください。 アクティベーションをMauiProgram.csに配置します。

using IronBarCode;

var builder = MauiApp.CreateBuilder();
builder
    .UseMauiApp<App>()
    .ConfigureFonts(fonts =>
    {
        fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
    });

// Activate IronBarcode before the app starts
License.LicenseKey = "YOUR_LICENSE_KEY_HERE";

return builder.Build();

IronBarcodeは、開発およびテスト用の無料トライアルライセンスを提供しています。 キーは一度起動時に設定してください。同じプロセス内のBarcodeWriterへの後続のすべての呼び出しは、アクティベートされたライセンスを使用します。

画像ファイルからバーコードを読み取るにはどうすればよいですか?

MAUIバーコードスキャナーの主要機能は、選択した画像からバーコードを読み取ることです。 BarcodeResultオブジェクトのコレクションを返します。

ユーザーインターフェイスのデザイン

ユーザーが画像ファイルを選択し、スキャンされたバーコードデータを表示できるMainPage.xamlでクリーンなインターフェースを作成します:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="BarcodeScanner.MainPage">
    <VerticalStackLayout Padding="20" Spacing="15">
        <Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
        <Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
        <Image x:Name="SelectedImageView" HeightRequest="200"/>
        <Label x:Name="ResultLabel" FontSize="16"/>
    </VerticalStackLayout>
</ContentPage>
XML

バーコード スキャンを実装する

スキャンロジックをMainPage.xaml.csに追加します。 このコードは、MAUI FilePicker APIを介して画像の選択を処理し、選択されたファイルパスをIronBarcodeに渡します:

using IronBarCode;

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();
    }

    private async void OnSelectImageClicked(object sender, EventArgs e)
    {
        var result = await FilePicker.PickAsync(new PickOptions
        {
            FileTypes = FilePickerFileType.Images,
            PickerTitle = "Select a barcode image"
        });

        if (result != null)
        {
            // Display the selected image
            SelectedImageView.Source = ImageSource.FromFile(result.FullPath);

            // Read barcodes from the image file
            var barcodes = BarcodeReader.Read(result.FullPath);

            ResultLabel.Text = barcodes.Any()
                ? $"Found: {barcodes.First().Value}"
                : "No barcodes detected in selected image.";
        }
    }
}

出力

.NET MAUI Barcode Scanner SDK: Build a Cross-Platform Scanner in Minutes: Image 1 - Scanned barcode output

選択された画像を解析し、すべての検出されたバーコードを返します。 IronBarcodeは、QRコード、Code 128、Code 39、EAN-13、その他多くのサポートされているフォーマットを含む、複数のバーコードシンボルを自動的に認識します。 結果コレクションはPageNumber、および各検出コードのバウンディングボックス座標のようなプロパティを公開しています。

どのように PDF ドキュメントから BarCode をスキャンしますか?

IronBarcodeが他の多くの代替製品と一線を画す機能の一つは、PDFファイルから直接バーコードを読み取ることができる点です。 これは、出荷明細書、発注書、医療記録など、ドキュメントワークフローを処理する.NET MAUIアプリケーションにとって不可欠です。これらのアプリケーションはすべて、PDFに埋め込まれたバーコードに依存しています。

ファイルパスを受け取り、イメージリーダーと同じPageNumberプロパティがあります:

using IronBarCode;

private async void OnSelectPdfClicked(object sender, EventArgs e)
{
    var result = await FilePicker.PickAsync(new PickOptions
    {
        PickerTitle = "Select a PDF with barcodes"
    });

    if (result != null)
    {
        // Read barcodes from every page of the PDF
        var barcodes = BarcodeReader.ReadPdf(result.FullPath);

        var output = string.Join("\n", barcodes.Select(b =>
            $"Page {b.PageNumber}: [{b.BarcodeType}] {b.Value}"));

        await DisplayAlert("Scan Results", output.Length > 0 ? output : "No barcodes found.", "OK");
    }
}

出力

.NET MAUI Barcode Scanner SDK: Build a Cross-Platform Scanner in Minutes: Image 2 - Output for scanning a PDF with QR codes within it

PDFのすべてのページをスキャンし、ページ番号とともにバーコードデータを返すReadPdf()メソッド、複数のバーコードを含むドキュメントを処理するのが簡単です。 PDFが数十ページに及ぶ場合は、関連するページにスキャンを制限し、処理時間を短縮するためにPageNumbersを特定の範囲に設定することを検討してください。

複数の BarCode や QR コードをどのように扱いますか?

実稼働中のアプリケーションでは、1枚の画像から複数のバーコードを検出したり、バーコードの種類で結果をフィルタリングしたりする必要がある場合がよくあります。 BarcodeReaderOptionsクラスは検出動作を制御する構成プロパティを公開します。 trueに設定すると、リーダーが早期に停止するのではなく、最初の一致の後でもスキャンを続けるように指示します:

using IronBarCode;

// Configure the reader for multi-barcode detection with type filtering
var options = new BarcodeReaderOptions
{
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    Speed = ReadingSpeed.Balanced
};

var barcodes = BarcodeReader.Read(imagePath, options);

foreach (var barcode in barcodes)
{
    Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}

Speedプロパティは、スキャン時間と精度のトレードオフを制御します。 ReadingSpeed.ExtraSlowは、低コントラストや傾斜した角度、部分的に隠されたコードといった難しい入力に対して、より積極的な画像補正を行います。 ReadingSpeed.Balancedはほとんどのアプリケーションの正しい開始点です。

BarcodeEncoding列挙型はビット単位の組み合わせをサポートしているため、不要なチェックによってパフォーマンスを犠牲にすることなく、ユースケースに関連するシンボロジーにスキャンを絞り込むことができます。

メモリストリームからバーコードを読み取るにはどうすればよいですか?

ファイルパスはほとんどのシナリオでうまく機能しますが、一部 for .NET MAUIワークフローでは、カメラプレビューからキャプチャされたフレーム、REST APIからダウンロードされたバイト、またはプロセス内で生成された画像データなど、画像データをメモリ経由で渡します。 IronBarcodeはSystem.IO.Stream入力を直接サポートします:

using IronBarCode;
using System.IO;

// Read a barcode from a MemoryStream (e.g., an in-memory image buffer)
private BarcodeResult[] ReadFromStream(Stream imageStream)
{
    return BarcodeReader.Read(imageStream);
}

// Example: download an image and scan without writing to disk
private async Task<string> ScanDownloadedBarcode(string imageUrl)
{
    using var httpClient = new HttpClient();
    using var stream = await httpClient.GetStreamAsync(imageUrl);
    using var memoryStream = new MemoryStream();

    await stream.CopyToAsync(memoryStream);
    memoryStream.Position = 0;

    var barcodes = BarcodeReader.Read(memoryStream);
    return barcodes.Any() ? barcodes.First().Value : string.Empty;
}

ストリームオーバーロードはFileStream、およびネットワークストリームを含むすべてを受け入れます。 ライブラリはフォーマット検出を内部で処理するので、Read()を呼び出す前に画像タイプを指定する必要はありません。

MAUIアプリでバーコードを生成するにはどうすればよいですか?

IronBarcodeは、バーコードの生成と読み取りの両方に対応しています。 Streamインスタンスとしてバーコードを生成します。 これは、スキャン機能に加えてバーコードの印刷や共有が必要な在庫管理アプリに役立ちます。

using IronBarCode;

// Generate a QR code and display it in a MAUI Image control
private async void OnGenerateQrClicked(object sender, EventArgs e)
{
    // Create a QR code barcode
    var qrCode = QRCodeWriter.CreateQrCode(
        value: "https://ironsoftware.com/csharp/barcode/",
        qrCodeSize: 500,
        errorCorrection: QRCodeWriter.QrErrorCorrectionLevel.Medium
    );

    // Save to a temporary file and display
    var tempPath = Path.Combine(FileSystem.CacheDirectory, "generated-qr.png");
    qrCode.SaveAsPng(tempPath);

    GeneratedImageView.Source = ImageSource.FromFile(tempPath);
}

QRCodeWriterクラスは、低、中、四分位、高の4つのQRエラー訂正レベル、カスタムサイズ、および前景/背景色制御を含むスタイリングオプションをサポートしています。 非QRシンボロジーの場合は、適切なBarcodeWriter.CreateBarcode()を使用してください。 バーコード生成APIのリファレンスドキュメントには、サポートされているすべての出力形式が記載されています。

このバーコードスキャナーライブラリの主な機能は何ですか?

IronBarcodeは、.NET MAUIバーコードスキャンプロジェクトにおいて、ZXing .NET.MAUIなどのオープンソースの代替製品とは異なる、いくつかの利点を提供します。

IronBarcode for .NET MAUI開発機能
能力詳細
クロスプラットフォームサポート単一のNuGetパッケージから Android、iOS、Windows をターゲットとする
複数の入力ソースファイルパス、メモリ ストリーム、および PDF ドキュメントからスキャンします
フォーマットのカバー範囲QRコード、データマトリックス、PDF417など、30種類以上の1次元および2次元シンボルをデコードします。
バーコード生成QRコードと1次元バーコードをPNG、ビットマップ、またはストリーム出力として生成します。
画像補正回転、傾斜、低コントラストの入力を自動的に処理します
ネイティブSDKへの依存なしプラットフォーム固有のネイティブバインディングを必要としない、純粋な.NETライブラリ

.NET MAUIプロジェクトにおいて"ネイティブSDKへの依存がない"という点は重要です。なぜなら、プラットフォーム固有のネイティブライブラリは、ターゲットごとに個別のリンク手順を必要とするからです。 IronBarcodeはこの複雑さを完全に回避しているため、同じNuGet参照を使用するだけで、追加の設定なしに、サポートされている3つのプラットフォームすべてに対応する動作するバイナリを生成できます。

サポートされているバーコード形式の完全なリストについては、 IronBarcodeのサポート対象形式に関するドキュメントを参照してください。 本番環境への導入における価格設定およびライセンス条件については、IronBarcodeのライセンスページをご覧ください。

生産現場におけるバーコードスキャンのベストプラクティスとは?

バーコードスキャナーを実稼働環境に導入するには、基本的な読み取り呼び出し以外にも、いくつかの点に注意を払う必要があります。 以下のガイドラインでは、.NET MAUIバーコードアプリで最もよく発生する障害点について説明します。

適切な読み取り速度を選択してください。 ReadingSpeed.Balancedはほとんどの現実世界の画像を正しく処理します。 ユーザーが再キャプチャできない印刷文書や画像のスキャンにはReadingSpeed.ExtraSlowを予約してください。 各スキャンにかなりの時間がかかるため、高ボリュームのワークフローではReadingSpeed.ExtraSlowを避けてください。

期待されるタイプでフィルタリングしてください。 アプリがQRコードのみを処理する場合は、ExpectBarcodeTypes = BarcodeEncoding.QRCodeを設定してください。 検索範囲を制限することで、処理時間を短縮し、背景画像に含まれる他のシンボルによる誤検出を排除できます。

必要な時にだけExpectMultipleBarcodesを使用してください。 これをtrueに設定すると、リーダーは常に追加のパスを行います。 単一バーコードの入力の場合は、デフォルト(false)をそのままにしておくことで、最初の有効なコードが見つかり次第、スキャンが終了します。

空の結果を上手に処理してください。 BarcodeReader.Read()は、バーコードが検出されなかった場合に例外を投げるのではなく、空の配列を返します。 ユーザーに明確なメッセージを表示する前にFirst()にアクセスしてください。 "バーコードが十分に明るく中央に配置されていることを確認してください"といったガイダンス付きの再試行プロンプトは、一般的なエラーメッセージよりもユーザーエクスペリエンスを向上させます。

オプションオブジェクトをキャッシュしてください。 スキャンごとにBarcodeReaderOptionsインスタンスを作成すると、割り当てが増えます。 オプションはクラスレベルで一度構築し、呼び出しごとに再利用します。

スキャンエラーの診断とパフォーマンスの最適化に関する詳細なガイダンスについては、 IronBarcodeのトラブルシューティングガイドバーコードリーダーのチュートリアルを参照してください。

次のステップは何ですか?

IronBarcodeを使用して.NET MAUIのバーコードスキャナーを構築するには、1つのNuGetパッケージをインストールし、プラットフォームの許可を構成し、ファイルパスまたはストリームでBarcodeReader.Read()を呼び出します。 同じAPIが、プラットフォーム固有のコード分岐なしに、Android、iOS、Windowsを対象としています。

アプリの機能をさらに拡張するには、以下のリソースを検討してください。

無料トライアルを開始して開発ライセンスキーを取得するか、本番環境への導入に関するライセンスオプションをご確認ください

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