バーコード規格 完全ガイド:技術仕様と実装方法【2026年版】
このマスター リファレンスでは、小売、物流、製造、安全な識別で使用される主要なバーコード シンボルの仕組み、制約、実装の詳細について説明します。
このガイドで仕様を確認したら、実際にバーコードを生成して試してみることをお勧めします。無料のバーコード作成ツールでは、このページで解説しているすべてのシンボル形式(Code 128、UPC-A/EAN-13、データマトリックス、QRコード、Code 39など)を実際に入力・生成して確認できます。
バーコードの基本原理:ハードウェアはどのように線や点を読み取っているのか
バーコードとは、線や点の幅・間隔(モジュール)をデータに対応させた、機械が読み取るための符号化システムです。1次元(1D)バーコードは、決められた幅比のバーとスペースの並びとして情報を表現します。レーザースキャナーはコード上をビームで走査しながら反射光の強さを読み取り、そのアナログ的な反射率の変化をデジタル波形に変換して各要素の幅を測定し、元のデータを復元します。要素の幅・コントラスト・クワイエットゾーン(余白)にわずかなずれがあるだけで、ビットの境界判定を誤り、読み取りエラーにつながることがあります。
一方、2Dマトリックスコード(データマトリックス、QR、PDF417)は、エリアイメージャー(画像をマトリックス状に取り込むカメラ型センサー)で読み取られます。イメージャーは、傾き補正(デスキュー)、二値化、ファインダーパターンの検出といった処理を行い、タイミングセルの位置と向きを特定します。リードソロモン符号(データマトリックスでは通常ECC200)などの誤り訂正技術により、コードの一部が損傷していてもデータを復元できる高い耐久性が実現されています。デコーダーは、誤り訂正用のパリティシンボルから欠損したデータを再構築する仕組みです。
運用上の注意点: バーコードスキャナーは、見た目のわずかな変化にも厳格です。バーコードは、寸法・クワイエットゾーン・コントラスト・チェックデジットといった「文法」をハードウェアが期待どおりに認識できることが前提の、制約の多い印刷物です。印刷時にわずか0.01mmのずれがあるだけでも、高速なレジ精算や自動仕分けラインでは読み取り不良の原因になり得ます。
1. Code 128 — 高密度物流を支える業界標準
Code 128は、輸送・物流など英数字データを符号化する必要がある分野で広く使われている、コンパクトで高密度な1次元シンボルです。柔軟性の高さは、コードセットA・B・Cという3種類の文字セットによって実現されています。各コードセットは、特定の文字種と密度に最適化されており、コードCを使えば数字データを2桁ずつペアで符号化でき、数値の符号化密度を2倍にできます。
構造と符号化の仕組み
標準的なCode 128シンボルは、スタートパターン(スタートA/B/Cのいずれか)、データシンボルの並び(各シンボルが0〜106のコード値を表す)、チェックデジット(モジュロ103)、ストップパターンという順序で構成されます。各シンボルは3本のバーと3本のスペースに分かれた11個のモジュールで表現され、物理的な幅はモジュール幅(X寸法)とシンボル数によって決まります。
コードセットの種類
- コードセットA: 大文字、制御コード、特殊文字を符号化します。
- コードセットB: 大文字・小文字を含む標準的な印字可能ASCII文字を符号化します。
- コードセットC: 数字専用の圧縮モードで、2桁の数字を1つのシンボルとして符号化します(数値データの場合に高密度)。
モジュロ103チェックデジット
チェックデジットの計算には、スタートキャラクターと各データシンボルの数値を使用します。まず「スタート値 + (1×シンボル1の値) + (2×シンボル2の値) + ... + (n×シンボルnの値)」という合計を求め、この合計を103で割った余りがチェックデジットになります。
// 計算例(疑似コード)
スタート値 = 104 // (スタートBの例)
シンボル値 = [50, 45, 12]
合計 = スタート値 + 1*50 + 2*45 + 3*12
チェックデジット = 合計 % 103
密度の最適化
日付やGTINの断片のような長い数字の連続を符号化する場合は、数字のペア部分だけコードCに切り替えるのが効果的です。優れたエンコーダーであれば、ペイロードを自動で解析し、コードセットを切り替えてできるだけコンパクトに符号化してくれます。多くのバーコード生成ライブラリにはコードセットの自動最適化機能があります。文字列の途中でコードセットを切り替える処理を使う場合は、切り替えの前後でチェックデジットが正しく再計算されていることを必ず確認してください。
実装時の注意点
- 使用するスキャナーの許容誤差(一般的には0.19〜0.33mm程度)に合うX寸法を選びます。
- 左右それぞれに、X寸法の10倍以上のクワイエットゾーンを確保します。
- 可能な限り、拡大縮小しても劣化しないベクター形式(SVG)で出力します。
2. UPC-AとEAN-13 — 世界の小売を支える基盤シンボル
UPC-AとEAN-13は、販売時点(POS)で使われる代表的な小売用シンボルです。どちらも数字のみで構成され、レジでの高速スキャンを前提に設計されています。UPC-Aは12桁(チェックデジットを含む)を符号化し、北米で広く使われています。EAN-13は13桁を符号化する国際標準で、先頭の数字は通常、国コードまたは番号体系の識別子として機能します。
UPC-Aの構造
レイアウトは「数値体系桁(1桁)+メーカーコード(5桁)+商品コード(5桁)+チェックデジット(1桁)」です。チェックデジットはモジュロ10の加重方式で計算され、「奇数位置の合計×3 + 偶数位置の合計」を求め、その合計を10の倍数にするために必要な最小の数字がチェックデジットになります。
EAN-13との違い
EAN-13はUPC-Aに桁を1つ追加したもので、同様のガードパターンを使用します。店頭では、EAN-13とUPC-Aの多くは同じPOSシステムで相互に読み取り可能ですが、符号化が正しいことが前提です。よくあるミスは、数字以外の文字を含めてしまうことや、先頭のゼロを誤って取り除いてしまうことです。これらはいずれも、デコーダーがコードを拒否する原因になります。
実践上のルール
- 常に正しい桁数を使用してください。GTINのルールを正確に理解していない限り、プログラムで桁数を調整(パディングや切り詰め)しないでください。
- シンボルの左右に、X寸法の9倍以上のクワイエットゾーンを確保してください。
- ガードバーを含めたバーコードの高さが、使用するPOSスキャナーの要件を満たしているか確認してください。公称X寸法でのUPC-Aの一般的な最低の高さは約22.85mmですが、スペースが限られる場合は、実機での印刷・スキャンテストを行ったうえでこれより低い高さを使うこともあります。
UPC-AとEAN-13の見分け方: どちらも左ガードバー・中央ガードバー・右ガードバーで構成は同じですが、EAN-13には先頭に追加の桁があり、左側6桁と右側6桁(UPC-Aの場合は左側5桁・右側6桁)のパリティ(奇偶)パターンによって、デコーダーがどちらの規格かを判別します。先頭の桁(国コード)は通常、人間が読めるテキストとしてバーコードの左外側に表示されます。
3. データマトリックスとQRコード — 高密度な2D産業用シンボル
データマトリックスとQRコードは、明暗のモジュールをグリッド状に配置してデータを記録するマトリックス型の2Dシンボルです。両者はファインダー/タイミングパターン、誤り訂正の方式、想定するペイロードサイズが異なります。データマトリックス(ECC200)は、リードソロモン誤り訂正による高い耐久性を保ちながら非常に小さいサイズで印刷できるため、航空宇宙・医療・電子機器などの分野で広く使われています。QRコードは消費者向け用途で広く普及しており、ロゴを大きく目立たせやすく、誤り訂正レベルも高く設定できます。
データマトリックス(ECC200)
データマトリックスは、L字型の実線で構成された「ファインダーパターン」と、その対辺にあるタイミングパターンを使用します。ECC200はリードソロモン符号を採用しており、最大サイズで英数字なら最大2,335文字、またはシリアル番号のような識別子に適した汎用的なバイナリペイロードを符号化できます。データマトリックスは非常に小さな面積(特殊な印刷では2〜3mm角程度のモジュールサイズ)への印字やダイレクトパートマーキング(DPM)に強みがあります。
QRコードの仕組み
QRコードは、四隅のうち3つの角にある正方形のファインダーパターンと、位置合わせ・タイミング用のグリッドを使用します。誤り訂正レベル(L・M・Q・H)を選ぶことで、データ容量と耐久性のバランスを調整できます。例えばHレベル(約30%の損傷から復元可能)を選ぶと大きなロゴを埋め込めますが、その分符号化できる生データの容量は減ります。QRコードは普及率が高いため、URLリンク・vCard・消費者向けメディアとの連携に向いています。
損傷耐性と誤り訂正の比較
過酷な耐久テストでは、非常に小さなマーキング面積において、ECC200を採用したデータマトリックスがQRコードより良好な結果を示すことがよくあります。これは誤り訂正ブロックの分布が異なることに加え、一部の産業用イメージャーではデータマトリックスのファインダーパターンの方が、より正確な幾何補正を行いやすいためです。
| シンボル | 推奨される最小表面積 | 損傷耐性(最大復元率) | 代表的なエンコーダ設定 |
|---|---|---|---|
| データマトリックス(ECC 200) | 2mm × 2mm程度から | リードソロモン誤り訂正により最大約25〜30%の損傷から復元可能 | モジュールサイズ、ECC200、正方形/長方形比率 |
| QRコード | 2cm × 2cm程度から(スマートフォン読み取り想定) | 誤り訂正レベルH選択時で最大約30%の損傷から復元可能 | 誤り訂正レベル(L/M/Q/H)、バージョン、マスクパターン |
4. Code 39 — 自動車・軍需物流で今も使われる枯れた信頼性
Code 39は、43文字(0〜9、A〜Z、および7種類の特殊文字)を符号化できる、歴史の長い単独型シンボルです。各文字は、「3本の太いバー・9本の要素」というルールに従い、5本のバーと4本のスペース(合計9要素)で表現されます。1文字あたりの幅が比較的広いため符号化効率は高くありませんが、レガシーシステムや産業用途、チェックデジットを必須としないシンプルな符号化が求められる場面では今でも採用されています。
フルASCIIモードと拡張
Code 39は、ペアの文字を使って128文字のASCIIセット全体を表現する「フルASCIIモード」に拡張できますが、その分さらに幅が増えます。テキストデータが多い場合は、Code 128や2Dマトリックスシンボルの使用を検討してください。
Code 39が今も使われ続ける理由
シンプルな構造、堅牢なハードウェア対応、印刷品質が低くても読み取りやすいという特性から、Code 39は一部の自動車・軍需サプライチェーンで今も使用されています。ただし、他の形式より印刷面積が大きくなる前提で設計し、狭い要素(N)と広い要素(W)の比率に対するスキャナーの許容誤差を必ず確認してください。
5. ITF-14(インターリーブ2of5) — 段ボール包装に最適化された規格
ITF-14は、カートンや外装パッケージへの印刷を想定して設計されたシンボルです。数字をペアで符号化するインターリーブ型の数値シンボルで、1つ目の数字をバーに、2つ目の数字をスペースに対応させます。このインターリーブ方式により、GTIN-14のような単純な数字列をコンパクトかつ高い読み取り精度で符号化できます。ITF-14のシンボルには、コードの上下を囲む太いバー(ベアラーバー)が付くことが多く、これによりスキャナーがコード全体を確実に読み取り、カートンの端の凹凸による部分読み取り(ショートスキャン)を防いでいます。
印刷時の注意点
- 段ボールに印刷する場合は、コンベアライン上で先端や末尾が欠ける(切れる)リスクを抑えるため、太めのベアラーバーを使用してください。
- フレキソ印刷やダイレクトサーマル印刷の許容誤差を事前に確認してください。カートン表面は粗いため、インクのにじみや熱転写の品質が問題になりやすいです。
- 表面の粗さを考慮し、最小X寸法は小売用バーコードより大きめに設定するのが一般的です。
バーコード文字制約 早見表
下記の表は、主要なシンボルごとに、最大ペイロード容量、使用できる文字種、主な用途、標準のチェックデジット方式をまとめたものです。バーコード生成時の検証ロジックを組む際の簡易リファレンスとしてご活用ください。
| シンボル | 最大ペイロード(目安) | 使用可能文字 | 主な用途 | 標準チェックデジット |
|----------------|--------------------------|-------------------------|----------------------------|----------------------|
| Code 128 | 80文字以上(可変) | 全ASCII(0–127) | 物流・サプライチェーン | モジュロ103 |
| UPC-A | 12桁 | 数字のみ(0–9) | 小売POS(米国) | モジュロ10 |
| EAN-13 | 13桁 | 数字のみ(0–9) | 小売POS(国際) | モジュロ10 |
| データマトリックス | 最大2,335文字 | 全バイナリ/ASCII | 産業用マーキング/DPM | ECC200(RS) |
| Code 39 | 可変(幅広め) | A–Z、0–9、-.$/+%(空白) | 自動車・防衛 | 任意 |
| ITF-14 | 14桁 | 数字のみ(0–9) | 外装段ボールケース | モジュロ10 |
| QRコード | 4,296文字(バイナリ時) | バイナリ/英数/漢字 | 消費者向けリンク、広告 | リードソロモン(QR) |
| PDF417 | 約1,000バイト(可変) | バイナリ/テキスト | ID、搭乗券、文書 | ECC/リードソロモン |
※ 実際の容量は、誤り訂正レベル・モード・マトリックスサイズによって変動します。上記の数値は厳密な上限ではなく、設計時の出発点として参考にしてください。
よくある質問(FAQ)
- UPC-Aで小文字を符号化できないのはなぜですか?
- UPC-AはPOSシステム間の相互運用性のために、設計上厳密に数字のみとされています。数字以外のデータを符号化すると、シンボル規格に違反し、小売スキャナーでは読み取れない出力になります。
- クワイエットゾーンとは何ですか?どのくらいの大きさが必要ですか?
- クワイエットゾーンとは、デコーダーがシンボルの境界を検出するために必要な、バーコード周囲の印刷のない余白部分です。1次元コードの場合、一般的な最低基準は両側にモジュール幅(X)の10倍、EAN/UPCではしばしば9倍が使われます。2Dコードの場合は規格によって異なりますが、通常はシンボル周囲に1〜2モジュール分とされています。
- 標準的なレーザースキャナーでデータマトリックスを読み取れますか?
- いいえ — データマトリックスにはエリアイメージャー(カメラ式スキャナー)が必要です。レーザーラインスキャナーは線形の反射パターンしか読み取れず、2Dマトリックスのグリッドを再構成できません。
- チェックデジットが間違っている場合はどうなりますか?
- デコーダーは通常、シンボルを無効として拒否するか、チェックサムエラーを返します。チェックデジットは、欠けたり汚れたりしたシンボルの誤読を防ぐ一次的な整合性チェックです。
- Code 39のバーコードが非常に長くなるのはなぜですか?
- Code 39はすべての文字を比較的幅広いパターンとして符号化するため、長い英数字データに対してはスペース効率が悪くなります。長いペイロードにはCode 128や2Dシンボルの使用を検討してください。
- オープンソースの規格と独自規格の違いは何ですか?
- オープン標準は仕様が公開されており、幅広いスキャナーに対応しています。独自規格は機能面で優れる場合がありますが、ベンダーロックインのリスクがあります。相互運用性を重視するなら標準規格を選んでください。
- 1Dではなく2Dを選ぶべきなのはどのような場合ですか?
- データ量がリニアコードで扱いやすい幅を超える場合、バイナリや圧縮データが必要な場合、または刻印できる面積が限られている場合は2Dを選んでください。POSで使う単純な数字の商品コードの場合は、互換性を確保するために1Dを使用してください。
- GS1アプリケーション識別子(AI)コードを生成するにはどうすればよいですか?
- GS1対応のエンコーダーを使用し、人間が読めるフィールドにはアプリケーション識別子を括弧で囲んで表示し(GTINの場合は(01))、バーコードのペイロードにはAIのメタ構造を符号化してください。GS1のフォーマット規則に従い、正しいAIとフィールド長を確保してください。
まとめ:シンボル形式の選び方
次のシンプルな判断基準を活用してください。
- 小売商品のバーコード → UPC-A / EAN-13
- 産業物流や長めの英数字ID → Code 128
- 極小の面や部品への直接マーキング → データマトリックス
- 消費者向けリンク・マーケティング → QRコード
次のアクション: 下記のリンクから実際にバーコードを生成してみましょう。一般的な配送物のX寸法に最適化された本番運用向けのCode 128を作成するか、小型部品向けのデータマトリックスを試すことができます。本番用にはベクター形式(SVG)で書き出し、印刷作業用には検証済みのペイロードをCSVで保存しておくと安心です。
各シンボルの詳細ガイド
- Code 128
- UPC-A
- EAN-13
- データマトリックス
- QRコード
- Code 39
- ITF-14
- PDF417
- Aztec(アステカ)コード
- GS1-128
- DPM(ダイレクトパートマーキング)のベストプラクティス
- GS1 APIとデジタルリンク
関連リソース: コンプライアンスガイド、開発者向けドキュメント、Code 128の詳細