Category: 2D Symbologies
目次
目次
データマトリックス(DataMatrixまたはGS1 DataMatrixとも呼ばれる)は、正方形または長方形のグリッドに配置された白黒モジュールで構成されたコンパクトで高性能な2次元バーコードです。
データマトリックスコードは、小さな物理的スペースに大量のデータを格納でき、堅牢なエラー訂正機能を持ち、物理的なサイズへの適応性があり、可変長データコンテンツとさまざまな文字エンコードスキームをサポートしています。
物流、製造、医療、防衛、小売、電子産業で使用されています。この包括的なガイドは、データマトリックスバーコードを作成またはデコードするアプリケーションを構築する際に知っておくべきすべての技術的な説明を提供します。 
データマトリックスコードとは何か?
データマトリックスコードは、可変長データをエンコードし、大量の整理された情報(データ構造)を小さなグラフィックスペース( データキャリア)に格納する二次元バーコードです。
データキャリアとデータ構造の違い
データキャリアは機械可読形式のデータをグラフィカルに表現したものであり、データ構造はキャリア内にエンコードされたデータ形式です。
データマトリックスの技術標準にはいくつかのバージョンがあり、業界に依存しないデータキャリアとデータ構造の仕様を定義しています。このガイドは、最新かつ最も一般的に使用されているバージョンであるECC 200に基づいており、 ISO/IEC 16022:2024 — データマトリックスバーコードシンボル体系仕様で定義されています。
データマトリックス構造の最も一般的な実装は、ISO/IECが認定する GS1 DataMatrix ガイドラインによって定義されています。データマトリックスシンボル内で非標準の構造を使用することも可能ですが、ほとんどの業界ではGS1 DataMatrixガイドラインに従っています。このガイドで紹介する概念と例はこれらのガイドラインを対象としています。
データマトリックスコードの仕組み
データマトリックスコードには3つのデータキャリアコンポーネントがあります:
- ファインダーパターン はシンボルの周囲を形成する2つの部分から構成されています。1つ目は「Lファインダーパターン」と呼ばれる実線のL字型の線で、シンボルのサイズ(行と列)、方向、および歪み(スキュー)を定義します。2つ目は、Lファインダーパターンの反対側にある点線のL字型パターンで、「クロックトラック」または「タイミングパターン」と呼ばれ、シンボルの構造をさらに定義します。
- データパターン はファインダーパターン内のバイト文字の行と列のシリーズとしてエンコードされています。これはまた、情報を整理する1つ以上のデータ領域に分割されています。たとえば、以下の画像には4つのデータ領域があります。追加のファインダーパターンが各データ領域を囲んでいます。
- クワイエットゾーン は、スキャナーがコードと背景を区別できるように、シンボルを囲むグラフィックのない領域を定義します。
データマトリックスコードのサイズはデータ容量にどう影響するか?
データマトリックスコードのサイズとデータ容量は、シンボルの形状(正方形または長方形)とエンコードされたデータの形式に関係しています。以下の表は、 GS1ガイドラインから引用したもので、ストレージサイズと可能なサイズの組み合わせの総数を示しています:
形状 | 最大文字数(英数字) | 最大文字数(数値) | 行数(最小…最大) | 列数 (最小…最大) | 可能なシンボルサイズの数 (例:10×10、12×12など) |
正方形 | 2,335 | 3,116 | 10…144 | 10…144 | 24 |
長方形 | 71 | 96 | 8…16 | 18…48 | 6 |
この表は、シンボルのサイズに基づくデータ領域の数を示しています:
シンボルの総サイズ | データ領域の数 |
正方形 | |
10×10 から 26×26 | 1 |
32×32 から 52×52 | 4 |
64×64 から 104×104 | 16 |
120×120 から 144×144 | 36 |
長方形 | |
8×18 | 1 |
12×26 | 1 |
16×36 | 1 |
8×32 | 2 |
12×36 | 2 |
16×48 | 2 |
データマトリックスシンボルにデータはどのようにエンコードされるか?
データマトリックスは、ASCII、C40、X12、EDIFACT、Base 256などのさまざまなデータエンコードスキームをサポートしています。
GS1 DataMatrix標準は、エンコードを ISO/IEC 646 (ASCIIテーブル256に相当)のサブセットとすることを義務付けています。ただし、実際のほとんどのアプリケーションでは、可変長スキームとより広い範囲の文字をサポートするために UTF-8エンコード が使用されています。
GS1データマトリックスシンボルのデータ文字列には、以下の文字が含まれます:
機能1シンボル文字(FNC1) | アプリケーション識別子(AI) | エレメント文字列 |
ISO/IECデータマトリックスシンボルの種類を識別します。GS1 DataMatrixの場合、FNC1は]d2です。 | 後続データの意味と形式を定義する2桁、3桁、または4桁の数字。 例:
完全なリストについては GS1アプリケーション識別子 を参照してください。 | 可変長の商品固有データ。 |
右のデータマトリックスコードのデータ文字列は ]d2013456789012345615251231です。これは3つのコンポーネントに分解されます:
- ]d2: これをGS1 DataMatrixコードとして識別する機能1シンボル文字(FNC1)。
- 01 34567890123456: これをグローバル取引識別番号(GTIN)として定義するアプリケーション識別子(AI)、および製品のGTIN。
- 15 251231: これを賞味期限として定義するアプリケーション識別子(AI)、およびYYMMDD形式の日付。
データマトリックスのエラー訂正
GS1 DataMatrixは、 リード・ソロモンエラー訂正方式を採用しており、シンボル自体に組み込まれています。この技術は、シンボル作成時に補完的なデータパターンを追加し、破損したデータの再構成を可能にします。データマトリックスコードは、コード領域の最大30%が損傷していても、このメカニズムによりスキャン可能な状態を維持します。
エラー訂正コードに必要なスペースは、シンボルのサイズによって異なります。たとえば、10×10のシンボルはデータの62.5%がエラー訂正に使用され、144×144のシンボルでは28.5%が使用されます。
データマトリックスバーコードの構造化追記とは何か?
「構造化追記」とは、データを複数のシンボルに分割してスキャンし、スキャニングソフトウェアによって再組み立てできるデータマトリックスの機能です。ECC 200で定義されたこの機能は、データパターン内の特別な要素(233)によって設定され、最大16個の独立しているが論理的に連結されたシンボルを使用できます。
構造化追記を使用してエンコードされたデータを読み取るには、この機能をサポートし、複数のラベルを同時または連続してスキャンでき、個々のシンボルデータを集約できるバーコードスキャナーが必要です。
データマトリックスバーコードはどこで使用されるか?
高いデータ密度を持つため、データマトリックスバーコードは、物流パッケージ、製造部品、医療製品、小売品など、小さなスペースに大量のデータをエンコードする必要がある状況に最適です。アプリケーションの例としては以下が挙げられます:
- 小型の電子部品では、製品に合わせた小さなバーコードを使用する必要があります。たとえば、米国電子産業協会(EIA)は、 CEA-706、コンポーネントマーキング標準においてデータマトリックスバーコードを使用したコンポーネントのラベリングを推奨しています。
- 医療分野では、データマトリックスはトレーサビリティ、ファーマコビジランス、市販後監視をサポートする製品識別のために、 GS1ヘルスケア が唯一承認した2次元バーコードです。
- 米国国防総省 は、 品目固有識別(IUID) 要件のもとで装備品を追跡するためにデータマトリックスを使用しています。
- 直接部品マーキング(DPM)、または直接マーキング(ダイレクトマーキング)。データマトリックスバーコードは、レーザーエッチング、空気圧駆動のマーキングピン(ドットピーニング)、スクライビングエングレーバー、サーマルプリンターなどの技術を使用して、固体表面に恒久的に刻印されます。(以下の画像参照)

データマトリックスバーコードの独自性とは?
他のバーコードシンボル体系と比較して、データマトリックスバーコードの独自性は、小さな物理的サイズに大量のデータを保存できる能力にあります。
データマトリックスと他のバーコードタイプの主な利点
- 物理的サイズに適応性があり(最小は約2.5mm四方)、可変長データコンテンツをサポートします。
- 256のASCII文字、ISO文字、EBCDIC文字を含む、さまざまな文字エンコーディングのサポート。
- 全方向読み取り機能により、どの方向からでもスキャンが可能です。これは倉庫管理や小売店のPOS環境で特に役立ちます。
- 物理的サイズとデータ容量は互いに独立しており、多くの異なるマトリックスサイズを選択できます。
- 堅牢なエラー訂正機能を持ち、最大30%の損傷を受けても読み取り可能です。
- シンボルのサイズを変えることで、さまざまなエラー訂正レベルを定義できます。
データマトリックスバーコードの作成方法
データマトリックスバーコードを作成するには、ISO/IEC 16022国際標準によって定義されたパターンに供給データをエンコードするソフトウェアが必要です。バーコードジェネレーターアプリ、 オンラインツール、または自分でジェネレーターをコーディングするなど、複数のオプションがあります。
一般的なプロセスは、エンコードしたいデータを入力し、希望のバーコードタイプとしてデータマトリックスを選択することです。ツールはコードの視覚的表現を生成し、ダウンロードまたは印刷できます。
データマトリックスバーコードのスキャン方法
データマトリックスバーコードは、シンボル体系をデコードできるソフトウェアを搭載したカメラベースのモバイルデバイスでスキャンできます。例えば、多くの業界ではUTF-8エンコーディングを使用しており、スキャンソフトウェアがこれを認識できず、非標準のケースを処理できない場合、その結果は使用できない可能性があります。
Scandtのバーコードスキャンソフトウェアはデータマトリックスコードと35以上の他のシンボル体系をサポートしています。データマトリックスバーコードに特化して、Scandit バーコードスキャナーSDKは:
- 正方形および長方形のシンボル、透視変換や非線形歪みを持つ大きなシンボルを含む、データマトリックスコードの位置特定とデコードを高速化します。
- 反転データマトリックス バーコード(反転色を使用)をデコードします。
- GS1コードを識別してGS1データが含まれていることを示し、 GS1パーサーAPI を含めてデータコンポーネントを使用可能な形式に変換します。
- DPMを使用して固体表面に刻印されたデータマトリックスコードのスキャンを可能にします。
データマトリックスバーコードのデコード方法
独自のデータマトリックスデコード方法を構築する場合、一般的な手順は以下の通りです。
前提条件
データマトリックスバーコードの画像は、そのコンポーネントを区別するのに十分な高解像度で撮影・保存されます。
デコードの手順
- 撮影した画像を使用して、ファインダーパターンとクワイエットゾーンを識別し、シンボルを背景から区別します。
- しきい値処理を使用して画像を二値表現に変換します。この処理では、対応する画像セグメントが指定されたしきい値より上か下かに基づいて、ピクセルを最大値(通常は白の255)または最小値(通常は黒の0)に設定します。
- タイミングパターンを調べて透視歪みを推定し、バージョン情報からデータマトリックスコードのサイズを決定します。
- 通常ECC 200の指定されたエンコーディングスキームを使用して、データパターンを読み取りデコードします。このスキームでは、「明るい」セルは通常0を、「暗い」セルは通常1を表します。
- データストリームをアプリで使用可能なエンコーディングスキームに変換します。シンボルのスキームが不明な場合、2つのオプションがあります:
- 生データをアプリに送信する。
- コードで使用されているデータエンコーディングからアプリが必要とするエンコーディング(通常はUTF-8)にデータを変換する。
- データが「GS1」としてエンコードされている場合(フラグが設定されている場合)、要素文字列をデコードし、GS1ガイドラインに従ってエラーを処理します。一つのアプローチは、 GS1 DataMatrixガイドラインのセクション2.2のデータ処理フローチャートで示されています。
- 結果をアプリケーションに送信して、さらに処理または表示します。
Scandit バーコードスキャナーSDKはこれらの手順を実装し、実際の開発および本番環境での経験に基づいた追加機能を提供します。
例えば、Scanditソフトウェアのセットアップ後、アプリにデータマトリックスコードリーダーを追加するには2つの手順のみが必要です。以下の手順は、 JavaScriptサンプルアプリ「バーコードキャプチャシンプルサンプル」に基づいています:
まず、データマトリックスを含む必要なシンボル体系を有効にします。
settings.enableSymbologies([
Symbology.EAN13UPCA,
Symbology.DataMatrix,
Symbology.Code39,
Symbology.Code128,
]); バーコードがScandtライブラリによってデコード・認識された後、Scanditリスナーインターフェースを実装することでそのデータを取得できます。
barcodeCapture.addListener({
didScan: async (barcodeCaptureMode: BarcodeCapture, session: BarcodeCaptureSession) => {
// Disable the mode to avoid unwanted scan until the user closes the displayed result.
await barcodeCapture.setEnabled(false);
// Hide the viewfinder.
await barcodeCaptureOverlay.setViewfinder(null);
const barcode: Barcode | null = session.newlyRecognizedBarcode;
if (!barcode) {
return;
}
const symbology: SymbologyDescription = new SymbologyDescription(barcode.symbology);
showResultScanned: ${barcode.data ?? ""}\n(${symbology.readableName}));
},
}); ここでは、このメソッドが以下を抽出します:
barcode.symbology—列挙型としてのバーコードシンボル体系。barcode.data—UTF-8文字列としてのバーコードデータ。symbology.readableName—シンボル体系の人間が読める名前。
ScandtがデータマトリックスコードをサポートするS方法
Scandit バーコードスキャナーSDKは、データマトリックスコードに特化した以下の機能を含む、実際の開発者のニーズを満たすように設計されています:
- UTF-8形式および/または生データ形式での情報抽出。
- GS1パーサーAPIにより、エンコーディングや区切り文字を気にすることなく、要素文字列を自動的に正規化して人間が読める形式に抽出します。これには 調整オプション(ECC 200標準への厳密な準拠、GS1拡張機能の有効化、アプリケーション識別子文字列の長さの上書きなど)が含まれます。
- スキャンパフォーマンスを向上させるために、 業界プリセットを含むサポートされているシンボル体系の有効化と無効化。
- MatrixScanを使用して、複数のバーコードから同時にデータを抽出します。
- 構造化アペンド のサポート。この機能が設定されている場合、複数のシンボルにわたる情報を自動的に抽出します。MatrixScanと組み合わせると、1回のスキャンですべてのラベルからデータを返します。
Scanditのソフトウェアは、主要なすべてのオペレーティングシステム、プログラミング言語、フレームワーク、サードパーティシステム、OEMデバイスをサポートしています。対応製品には ネイティブiOS、 ネイティブAndroid、 ウェブ/Javascript、 React Native、 Cordova、 Flutter、 Kotlin Multiplatform、.NET、 Capacitor、 Titanium、 Linux/Cが含まれます。
倉庫やメンテナンス環境では、光の状態が変化する場合があります。Scanditのスキャン性能により、バーコードの材質状態、スキャナーからの距離、光の変化に関わらず、正確かつ迅速にバーコードをスキャンして読み取ることができます。
Scanditバーコードスキャナー SDKを試す
30日間の無料トライアルでデータマトリックスのデコード性能を評価してください
