努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:code:code-015

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

documents:code:code-015 [2025/08/09 05:32] – 作成 k896951documents:code:code-015 [2026/05/12 23:21] (現在) k896951
行 1: 行 1:
 +====== 200.JANコードのチェックディジット計算 ======
  
 +JANコード(Japanese Article Number)は、日本で使用されているバーコードの一種で、商品識別に用いられます。JANコードには主に以下の2種類があります:
 +
 +  * 13桁JANコード(標準コード)
 +  * 8桁JANコード(短縮コード)
 +
 +どちらも最後の1桁は「チェックディジット」と呼ばれ、誤入力や読み取りミスを検出するために使われます。
 +
 +===== チェックディジットの計算方法 =====
 +
 +==== 13桁JANコードの場合 ====
 +
 +チェックディジットは、最初の12桁の数字から以下の手順で計算されます。
 +
 +=== 手順 ===
 +
 +  - 奇数桁(1, 3, 5, ..., 11桁目)の数字をすべて足す。
 +  - 偶数桁(2, 4, 6, ..., 12桁目)の数字をすべて足し、その合計を3倍する。
 +  - 手順1と手順2の合計を求める。
 +  - 合計を10で割った余りを求める。
 +  - 余りが0であればチェックディジットは0。そうでなければ、10から余りを引いた値がチェックディジット。
 +
 +=== 例 ===
 +
 +JANコードの最初の12桁が `490123456789` の場合:
 +
 +  - 奇数桁の合計:4 + 0 + 2 + 4 + 6 + 8 = 24
 +  - 偶数桁の合計:9 + 1 + 3 + 5 + 7 + 9 = 34 → 34 × 3 = 102
 +  - 合計:24 + 102 = 126
 +  - 126 ÷ 10 の余りは 6 → 10 - 6 = 4
 +
 +**チェックディジットは「4」** となります。
 +
 +==== 8桁JANコードの場合 ====
 +
 +8桁JANコードは、主に小型商品などに使用される短縮版で、最初の7桁からチェックディジットを計算します。計算方法は13桁版と同様です。
 +
 +=== 手順 ===
 +
 +  - 奇数桁(1, 3, 5, 7桁目)の数字をすべて足す。
 +  - 偶数桁(2, 4, 6桁目)の数字をすべて足し、その合計を3倍する。
 +  - 手順1と手順2の合計を求める。
 +  - 合計を10で割った余りを求める。
 +  - 余りが0であればチェックディジットは0。そうでなければ、10から余りを引いた値がチェックディジット。
 +
 +=== 例 ===
 +
 +JANコードの最初の7桁が `4901234` の場合:
 +
 +  - 奇数桁の合計:4 + 0 + 2 + 4 = 10
 +  - 偶数桁の合計:9 + 1 + 3 = 13 → 13 × 3 = 39
 +  - 合計:10 + 39 = 49
 +  - 49 ÷ 10 の余りは 9 → 10 - 9 = 1
 +
 +**チェックディジットは「1」** となります。
 +
 +===== Pythonによるチェックディジット計算サンプル =====
 +
 +以下は、JANコードのチェックディジットをPythonで計算するサンプルコードです。
 +
 +<code python>
 +def calculate_jan_check_digit(code: str) -> int:
 +    """
 +    JANコードのチェックディジットを計算する関数。
 +    code: チェックディジットを除いたJANコード(12桁または7桁)
 +    return: チェックディジット(1桁の整数)
 +    """
 +    if len(code) not in [7, 12]:
 +        raise ValueError("JANコードは7桁または12桁である必要があります。")
 +  
 +    digits = [int(d) for d in code]
 +    odd_sum = sum(digits[::2])
 +    even_sum = sum(digits[1::2]) * 3
 +    total = odd_sum + even_sum
 +    remainder = total % 10
 +    return 0 if remainder == 0 else 10 - remainder
 +  
 +# 使用例
 +print(calculate_jan_check_digit("490123456789"))  # 出力: 4
 +print(calculate_jan_check_digit("4901234"))       # 出力: 1
 +</code>
 +
 +===== 参考文献 =====
 +
 +  * [[https://www.gs1jp.org/code/jan/check_digit.html|GS1 Japan公式:チェックデジットの計算方法]]
 +  * [[https://www.gs1jp.org/code/jan/about_jan.html|GS1 Japan公式:GTIN(JANコード)とは]]
 +  * [[https://www.gs1jp.org/code/jan/|GS1 Japan公式:JANコードの概要と登録]]
 +
 +===== 記事作成者 =====
 +
 +この記事は、AIアシスタント Copilot(Microsoft GPT-4) によって生成されました。 k896951が加筆修正を行いました。 
 +
 +{{tag>技術資料 JANコード Modulo_10}}
documents/code/code-015.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki