物流、医療、製造、小売のいずれでバーコードを扱うにしても、Code 128 と Code 39 の両方に出会ったことがあるはずです。これらは1Dバーコードで最も普及している2つのフォーマットで、2026年においてどちらを選ぶべきかは「どれだけのデータを格納するか」「ラベルにどれだけのスペースがあるか」で決まります。
Code 128はモダンな標準です。高密度でフルASCIIに対応し、チェックデジットが必須です。一方Code 39は古くからあるシンプルな代替で、短い文字列には適していますが、データが長くなると扱いにくくなります。本記事では両者の違いを整理し、最適な選び方を解説します。
Code 128とCode 39の比較一覧
| 項目 | Code 128 | Code 39 |
|---|---|---|
| データ密度 | 高密度 — より少ないスペースでより多くのデータを格納 | 低密度 — すぐに幅広になる |
| 対応文字 | フル128 ASCII文字 | 43文字(大文字、数字、一部の記号) |
| 小文字の対応 | ネイティブ対応 | 「Extended」モードのみ(バーコード長が2倍になる) |
| チェックデジット | 必須(Modulo 103) | オプション |
| バー/スペース幅 | 4種類(1、2、3、4単位) | 2種類(ナローとワイド) |
| 最適な用途 | 物流、出荷、複雑なデータ | シンプルな社内管理、レガシーシステム |
物理サイズの違いは歴然です。Peak Technologiesによれば、データ文字列が15文字を超える場合はCode 39からCode 128に切り替えることを推奨しています。Code 39で20文字のIDを表現すると標準的な2インチラベルに収まらないこともありますが、Code 128ならコンパクトに収まります。

現代のスキャナー(エリアイメージャーやスマートフォンアプリ)はどちらのフォーマットも問題なく読み取れます。ただしCode 128は内蔵のエラー検出により大量処理環境での誤読を防ぐため、信頼性で優れています。
データ密度が重要な理由
データ密度とは、バーコード1インチあたりに何文字格納できるかを示します。Wikipediaによれば、Code 128はバーとスペースに4種類の幅を使用するのに対し、Code 39は2種類のみです。この精密さにより、Code 128は数値データで約2倍の密度を実現します。医療用バイアルや小型電子部品のような小さな対象では、Code 128が唯一実用的な1Dバーコードになることも少なくありません。
対応文字
- Code 39(標準): 43文字 — 大文字A〜Z、数字0〜9、一部の記号(-、.、$、/、+、%、スペース)。
- Code 128: 128 ASCII文字すべて — 大文字、小文字、記号、さらにキャリッジリターンなどの制御文字にも対応。
- Code 39 Extended: 文字ペアで小文字をエンコード可能(例:小文字「a」を「+A」で表現)。ただしPeak Technologiesが指摘するように、これは「スペースの無駄遣い」であり、バーコードが不必要に長くなります。
Code 128が現代物流の標準である理由
Code 128はGS1-128標準を通じて世界的な出荷を支えています。この標準は「アプリケーション識別子」を用いて、ロット番号、有効期限、シリアル番号などのデータを構造化します。
必須のチェックデジット(Modulo 103)
Code 39ではチェックサムはオプションです。一方Code 128では仕様に組み込まれており、計算された値がバーコード末尾に付加され、スキャナーが読み取りのたびに検証します。これにより忙しい倉庫での「誤読」リスクをほぼ排除できます。
Code Set A、B、Cによる最適化
Code 128は3つの内部モードを切り替えることでコンパクトさを保ちます。
| Code Set | 最適化対象 | 主なメリット |
|---|---|---|
| A | 大文字+制御コード | 産業用途 |
| B | 標準英数字+小文字 | 汎用テキスト |
| C | 数値のみのデータ | 1シンボルで2桁 — 数値で最も効率的 |
Wikipediaによれば、Code Set Cは2桁の数字を1つのバーコードシンボルに詰め込むことができます。長い数値文字列では非常に効率的です。Steven Skienaの研究によれば、賢いCode Set選択により、固定設定の場合と比べて平均8%小型化できることが分かっています。

Code 39はまだ意味があるか?
Code 39は2026年でもシンプルで許容範囲が広いことから、まだ一定の地位があります。Code 39は「自己チェック」機能を備え、文字間の隙間がエラーの切り分けに役立つため、低解像度のプリンターや古い産業用スキャナーでも良好に動作します。
現在でもCode 39は以下の用途で見られます:
– 米国国防総省(LOGMARS標準)
– 医療分野の社内管理
– 自動車業界のレガシーシステム
問題となるのはCode 39 Extendedです。小文字の「a」1文字をエンコードするために「+A」を印刷する必要があり、バーコード長が2倍になります。管理IDで大文字小文字が混在する場合、Code 39 Extendedは不適切な選択です。
技術仕様:Xディメンジョンとクワイエットゾーン
バーコードがどれだけ読み取りやすいかはXディメンジョン(最も細いバーの幅)に依存します。GS1 2026標準によれば、小売用レジにおける最小Xディメンジョンは0.264 mm(0.0104インチ)です。
また両フォーマットともクワイエットゾーン、つまりバーコード両端の空白の余白が最も細いバーの幅の10倍以上必要です。これがないと、スキャナーはバーコードの開始位置と終了位置を判別できません。
スキャナーの互換性
| スキャナーの種類 | 最適な組み合わせ | 備考 |
|---|---|---|
| レーザースキャナー | 長くて背の高いバーコード | すべてのバーにわたり明確なレーザー光路が必要 |
| エリアイメージャー(2026年標準) | 両フォーマット、高密度Code 128含む | 損傷や傾きのあるラベルも読み取り可能 |
| スマートフォンカメラ | 両フォーマット | iOS/Androidでネイティブ対応 |
Gitnux 2024によれば、小売セクターは世界の1日あたりスキャン数の42%を占めており、業界全体がより信頼性の高いエリアイメージング標準へ移行しつつあります。
まとめ
Code 39はシンプルで短い社内管理ID、特に古いスキャナーを使うレガシーシステムには適しています。それ以外の用途ではCode 128が明確な選択肢です。サイズが小さく、より多くの文字に対応し、必須のエラーチェックを備え、現代物流の基盤となっています。
選定の目安:
– データが10〜15文字未満で大文字のみ → Code 39で問題なし
– それより長い、または大文字小文字混在/記号あり → Code 128
– GS1-128準拠が必要 → Code 128(他に選択肢なし)
ラベルを設計する際は、世界中で読み取り性を保証するため、最も細いバーが0.264 mmのGS1標準を満たすようにしてください。
FAQ
Code 39で小文字をエンコードできますか?
標準のCode 39は大文字、数字、一部の記号のみに対応しています。小文字をエンコードするにはCode 39 Extendedが必要で、文字ペア(例:「a」を「+A」で表現)を使用します。これによりバーコードの物理的な長さが大幅に増加し、Code 128と比べて効率が著しく低下します。
なぜCode 128はCode 39より「高密度」なのですか?
Code 128は4種類のバー/スペース幅(Code 39の2種類に対し)を使用し、Code Set Cが1シンボルで2桁をエンコードします。このため数値データにおいてCode 128はCode 39の約2倍の密度を持ち、貴重なラベルスペースを節約できます。
Code 39バーコードにチェックデジットは必要ですか?
Code 39ではオプションですが、重要な環境では推奨されます。Code 128は仕様自体に必須のModulo 103チェックサムが組み込まれており、大量スキャンにおいて本質的に高い信頼性を持ちます。
ラベルスペースが限られた小さな対象にはどちらが適していますか?
Code 128です。密度が高いため、Code 39では窮屈で読み取りにくくなる同じ物理スペース内でも、Code 128は大きなXディメンジョンで(スキャナーが読み取りやすく)印刷できます。

コメントを残す