ITパスポート 2010年 秋期 問15
問題文
JANコードを構成している項目の組合せのうち、適切なものはどれか。
JANコードの構成:[ a ]、商品アイテムコード、[ b ]

選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
JANコードの構成要素【ITパスポート解説】
正解の理由
JANコードは商品識別のためのバーコード番号で、構成は「メーカー(企業)コード」「商品アイテムコード」「チェックディジット(誤り検出用1桁)」です。したがって設問の空欄[a]には「メーカーコード」、[b]には「チェックディジット」が入ります。選択肢の中ではこれが当てはまるのが エ です。
ここで出てくる用語を簡単に説明します。
- JANコード:日本で使われる商品識別番号。国際規格のEAN-13に対応する13桁コードです。
- メーカー(企業)コード:GS1(商品コードを管理する組織)から企業に割り当てられる番号で、その企業が出す各商品の頭部分を構成します。
- 商品アイテムコード:企業がその中で個々の商品を識別するための番号です。
- チェックディジット(check digit):番号の入力ミスや読み取りミスを見つけるための最後の1桁です。
解法ステップ
- JANコードが何桁かを思い出します。標準的なJAN(EAN-13)は13桁で、最後の1桁はチェックディジットです。したがって[b]は「チェックディジット」であることが確定します。
- 残る前半の部分は「誰が作ったか(メーカー)」「どの商品か(アイテム)」を示す構成です。選択肢にある「メーカーコード」が該当します。よって[a]は「メーカーコード」です。
- 以上より「メーカーコード、商品アイテムコード、チェックディジット」の順が正しいので、該当する選択肢 エ を選びます。
選択肢別の誤答解説
- ア(小売店コード、価格)
誤り。JANに「価格」は含まれません。価格は店舗側のPOS(販売管理)データベースに紐づけて管理されます。標準JANに小売店コードという枠もありません(企業を識別するのはメーカーコードまたは企業プレフィックス)。 - イ(小売店コード、チェックディジット)
誤り。チェックディジットは正しい位置ですが、商品の前半は「メーカー(企業)コード」が基本であり、「小売店コード」は標準JANの構成要素ではありません。 - ウ(メーカーコード、価格)
誤り。メーカーコードは正しい位置ですが、末尾はチェックディジットで、「価格」ではありません。 - エ(メーカーコード、チェックディジット)
正しい。前半の企業識別部分がメーカーコード、末尾は誤り検出用のチェックディジットです(選択肢として正解)。
よくある誤解
- 「バーコードに価格が書いてある」は誤解です。一般的なJANには価格情報は含まれません。価格はバーコード番号をキーにして店舗のPOSシステムが参照して決めます。
- 「チェックディジットの計算方法は向きが自由」ではありません。計算でどちらの端から重みを掛けるかは明確に定義する必要があります(以下で明示します)。向きの違いを混同すると計算ミスになります。
補足コラム:チェックディジットの仕組み(計算例と注意点)
チェックディジットは「重み付き合計を10で割った余りを使う」方法です。13桁のうち最後の1桁がチェックディジットなので、最初の12桁の合計で計算します。重みづけは次のようにします(ここでは明確に定義します):
- 最初の12桁のうち、右端(最下位、チェック桁の一つ左)から順に重みを 3, 1, 3, 1, ... と交互に掛けます。これは左端から 1,3,1,3,... と掛けるのと同じ結果になりますが、「どちらから数えるか」を明確にするために右端起点で説明しています。
計算式(イメージ):
- 12桁それぞれに重みを掛けて合計 を求める。
- チェックディジット は によって求めます。
例:最初の12桁を 490123456789 とすると(右から順に9,8,7,...,4)、
合計 (計算過程は下の Python 例参照)で、。
したがってチェックディジットは となり、13桁全体は 4901234567894 になります。
したがってチェックディジットは となり、13桁全体は 4901234567894 になります。
計算を行う Python の例(重みは右端から 3,1,3,1,...):
def calc_check_digit(code12):
# code12: 12桁の文字列
assert len(code12) == 12 and code12.isdigit()
total = 0
weights = [3, 1] # 右端から順に適用する重み
for i, ch in enumerate(reversed(code12)): # 右端から取り出す
total += int(ch) * weights[i % 2]
check = (10 - (total % 10)) % 10
return str(check)
# 例
print(calc_check_digit("490123456789")) # 出力: '4'
FAQ
Q1. JANコードと商品ラベルは同じものですか?
A1. JANコードは商品を識別する番号です。商品のラベル(価格表示・賞味期限など)は別で、価格などは店舗のシステムで管理されます。
A1. JANコードは商品を識別する番号です。商品のラベル(価格表示・賞味期限など)は別で、価格などは店舗のシステムで管理されます。
Q2. 一度間違ったチェックディジットでもスキャンできることはありますか?
A2. チェックディジットは多くの入力ミス(1桁の誤りや多くの桁の入れ替え)を検出できますが、すべてのミスを検出するわけではありません。例えば特定の2桁の入れ替えは検出できないケースもあります。
A2. チェックディジットは多くの入力ミス(1桁の誤りや多くの桁の入れ替え)を検出できますが、すべてのミスを検出するわけではありません。例えば特定の2桁の入れ替えは検出できないケースもあります。
Q3. 小さな商品には別の短いコード(EAN-8)が使われますか?
A3. はい。パッケージが小さい製品などには8桁のEAN-8が使われることがありますが、基本的な考え方(識別部+チェックディジット)は同様です。
A3. はい。パッケージが小さい製品などには8桁のEAN-8が使われることがありますが、基本的な考え方(識別部+チェックディジット)は同様です。
関連キーワード: JANコード、チェックディジット、メーカーコード、商品アイテムコード、EAN-13、GS1、バーコード検証、重み付き合計

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

