QR WORLD
QR WORLD

CODE128のチェックデジットとは?計算方法(モジュラス103)と仕組みを解説

カバー写真
物流の現場で使われるGS1-128や、医療用医薬品のバーコードなど、高い信頼性が求められる場面で広く活用されているCODE128。このバーコードの仕様を調べる中で、「チェックデジット」という言葉を目にしたことはありませんか? 「CODE128にチェックデジットは必要なの?」 「どういう仕組みで計算されているんだろう?」 「自分で計算してデータに加える必要はあるの?」 この記事では、そんなCODE128のチェックデジットに関する疑問にすべてお答えします。その役割から、複雑な計算方法「モジュラス103」の仕組み、そして実務における最も重要な注意点まで、詳しく解説します。

結論:CODE128のチェックデジットは「必須」です

まず結論から言うと、CODE39などのチェックデジットが任意(オプション)であるのに対し、CODE128のチェックデジットは仕様上「必須」の要素です。

>> CODE39とは?

CODE128は、高密度で多くの情報を表現できる反面、読み取りエラーが発生すると大きな問題につながる可能性があるため、作成されるすべてのバーコードに、データの正しさを検証するためのチェックデジットが必ず含まれています。

【重要なポイント】 チェックデジットは必須ですが、利用者が手計算したり、データに追加したりする必要はほとんどありません。後述しますが、通常はバーコードを作成するソフトウェアやツールが、すべての計算を自動的に行ってくれます。

>> 【無料】オンラインでのCODE128のチェックデジット自動計算ツール

チェックデジットの計算方法「モジュラス103」の仕組み

CODE128のチェックデジットは、「モジュラス103(Modulo 103)」という、少し複雑な計算方式で算出されます。

これは、単純に各文字の値を合計するのではなく、文字の「位置」に応じて「重み」を付けて計算するのが特徴です。以下にその仕組みの概要をステップで解説します。

  1. スタートコードを決める まず、エンコードするデータに適したスタートコード(A, B, Cのいずれか)を決定します。このスタートコード自体にも、計算の基礎となる値(103, 104, 105)が割り当てられています。
  2. 各文字の値に「重み」を掛ける データ内の各文字の値に対し、その文字の位置(先頭から1番目、2番目…)を「重み」として掛け合わせます。 (1文字目の値 × 1) + (2文字目の値 × 2) + (3文字目の値 × 3) ...
  3. すべての値を合計する ステップ1の「スタートコードの値」と、ステップ2で算出した「重み付きの値の合計」を足し合わせます。
  4. 合計値を103で割り、「余り」を求める ステップ3で算出した合計値を「103」で割り、その**「余り」**を算出します。この余りの数値が、チェックデジットの値となります。
  5. チェックデジット文字を付加する 算出された余りの値に対応する文字が、チェックデジットとして、データキャラクタの直後(ストップキャラクタの前)に付加されます。

付加される数値に対応する文字は下記をご参照ください。

数値
文字
0
SP
1
!
2
"
3
#
4
$
5
%
6
&
7
'
8
(
9
)
10
11
+
12
,
13
-
14
.
15
/
16
0
17
1
18
2
19
3
20
4
21
5
22
6
23
7
24
8
25
9
26
27
;
28
<
29
=
30
>
31
?
32
@
33
A
34
B
35
C
36
D
37
E
38
F
39
G
40
H
41
I
42
J
43
K
44
L
45
M
46
N
47
O
48
P
49
Q
50
R
51
S
52
T
53
U
54
V
55
W
56
X
57
Y
58
Z
59
[
60
\
61
]
62
^
63
_
64
`
65
a
66
b
67
c
68
d
69
e
70
f
71
g
72
h
73
i
74
j
75
k
76
l
77
m
78
n
79
o
80
p
81
q
82
r
83
s
84
t
85
u
86
v
87
w
88
x
89
y
90
z
91
{
92
|
93
}
94
95
FNC3
96
FNC2
97
SHIFT
98
CODE C
99
CODE B
100
FNC4
101
CODE A
102
FNC 1

引用: GS1 General Specifications

【参考】具体的な計算例

少し複雑なので、簡単なデータ「P1」を例に計算の流れを見てみましょう。(※コードセットBを使用)

  1. スタートコード: 「スタートB」を選択。値は 104
  2. 重み付きの計算:
    1. 1文字目「P」(値=48)→ 48 × 1 = 48
    2. 2文字目「1」(値=17)→ 17 × 2 = 34
  3. 値の合計:104 (スタートコード) + 48 + 34 = 186
  4. 余りの算出:186 ÷ 103 = 1 余り 83
  5. チェックデジット文字の決定:値「83」に対応する文字は「s」です。

この結果、バーコード内部のデータ構成は「スタートB」「P」「1」「s(チェックデジット)」「ストップ」となります。

作成したバーコード

[画像: CODE128のバーコード(P1)]

エクセルやスプレッドシートでCODE128のチェックデジットを計算する方法

次にエクセルやスプレッドシートでCODE128のチェックデジットを計算する方法をご紹介します。

以下の手順で計算することができます。

  • A2にバーコード化するデータ(例: P1)
  • B2にコードセット(例: B)
  • C2に下記の関数を入力

エクセルをご利用の方

以下の関数をC2に入力してください。

=MOD(IFS(B2="A",103,B2="B",104,B2="C",105)+IFS(B2="A",SUM((IF(CODE(MID(A2,SEQUENCE(LEN(A2)),1))<=31,CODE(MID(A2,SEQUENCE(LEN(A2)),1))+64,CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32))*SEQUENCE(LEN(A2))),B2="B",SUM((CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32)*SEQUENCE(LEN(A2))),B2="C",SUM(VALUE(MID(A2,(SEQUENCE(LEN(A2)/2)*2)-1,2))*SEQUENCE(LEN(A2)/2))),103)

エクセルでチェックデジットを計算

スプレッドシートをご利用の方

以下の関数をC2に入力してください。

=ARRAYFORMULA(MOD(IFS(B2="A",103,B2="B",104,B2="C",105)+IFS(B2="A",SUM((IF(CODE(MID(A2,SEQUENCE(LEN(A2)),1))<=31,CODE(MID(A2,SEQUENCE(LEN(A2)),1))+64,CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32))*SEQUENCE(LEN(A2))),B2="B",SUM((CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32)*SEQUENCE(LEN(A2))),B2="C",SUM(VALUE(MID(A2,(SEQUENCE(LEN(A2)/2)*2)-1,2))*SEQUENCE(LEN(A2)/2))),103))

スプレッドシートチェックデジット計算

出力された数値を前述の対応表から文字に変換すれば完了です。

【最重要】実務上の注意点:チェックデジットは「自動計算」に任せる

ここまで計算方法を解説しましたが、実務で最も重要なことは、「チェックデジットを自分で計算したり、データに付け加えたりしない」ということです。

例えば、「P1s」というデータでバーコードを作成しようとすると、ソフトウェアは「P」「1」「s」という3文字のデータに対して、さらに別のチェックデジットを計算して付加してしまいます。その結果、バーコードは完全に無効なものになってしまいます。

バーコード作成ソフトやツールを利用する際は、チェックデジットを含まない純粋なデータ(例:「P1」)を入力してください。スタートコード、コードセットの切り替え、チェックデジット、ストップコードの付加は、すべてソフトウェアが規格に沿って自動的に行ってくれます。

例えばこちらの無料オンラインバーコード作成ツールでもチェックデジットの入力は不要です。

まとめ: CODE128のチェックデジットとは

CODE128のチェックデジットについて、重要なポイントを以下にまとめます。

  • チェックデジットは、データの信頼性を保証するために仕様上必須
  • 計算方法は「モジュラス103」という重み付けを用いた方式。
  • 実務上、利用者が手計算する必要は一切ない。
  • バーコード作成時は、チェックデジットを含まない元データのみを入力することが非常に重要。
  • オンライン無料ツールでチェックデジットを確認してみてください

この仕組みと注意点を理解することで、より安心して、正確なCODE128バーコードを作成・活用することができます。

>> 【基本記事】CODE128とは?規格や特徴、3つのコードセットを解説

CODE128を作成する際にはこちらの無料オンラインツールがおすすめです。

CODE128が作成できる無料オンラインツールの画面

[CODE128が作成できる無料オンラインツールの画面]

QR WORLDロゴ

QR WORLD(QRワールド) 編集部

QRコード・バーコードの生成・読み取りシステムを開発してきた経験からお役立ち情報を発信しています。

QRコード作成

無料