知識マップ: 業務システムのコード設計 ── 商品コード・顧客コードの決め方とチェックディジット

記事「業務システムのコード設計 ── 商品コード・顧客コードの決め方とチェックディジット」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

業務システムの商品コードや顧客コードは、部門や分類などの意味を桁に埋め込む有意コードを避け、識別に徹した無意味連番か種別接頭辞付きのハイブリッド構成にするのが本記事の推奨である。マイナンバーも住民票コードを変換した意味を持たない番号として設計されており、検査用数字としてモジュラス11のチェックディジットを持つ。人の手や目を通るコードにはチェックディジットを付けるべきで、入力ミスの実態は1桁誤りと隣接する2桁の転置がほとんどを占めるため、JANコードのGS1標準やLuhnアルゴリズムはこの2類型をほぼ検出でき、法人番号のモジュラス9は0と9の取り違えを見逃し、VerhoeffやDammの方式は両方の誤りを完全に検出する。実装ではExcelが業務コードを数値として解釈すると先頭ゼロや15桁を超える桁が失われるため、コードは文字列として一貫して扱うことが実務上の要点になる。

業務コード設計とチェックディジットの知識マップ業務コードを識別に徹して設計する原則と、人手を通るコードにチェックディジットを付ける理由、JAN・Luhn・モジュラス11・モジュラス9・Verhoeff・Dammなど各方式の1桁誤りと隣接転置の検出力の違いを示す図用いるのは非推奨推奨される対応推奨される対応両立しない利用する利用する利用する前提とする利用する実装を担う実装を担う実装を担う実装を担う実装を担う実装を担うで確認できるで確認できる防止する防止する防止する防止する防止する防止する防止する防止する推奨される対応業務コード(商品コード・顧客コードなど)チェックディジット(検査用数字)有意コード無意味連番Excelの数値変換による0落ち・15桁丸めマイナンバー(個人番号)モジュラス11のチェックディジット法人番号モジュラス9のチェックディジットJANコード(GTIN)GS1標準(モジュラス10 ウェイト3-1)Luhnアルゴリズム(モジュラス10)Verhoeff法Damm法1桁誤り(打ち間違い)隣接転置の誤りCrockford Base32

概念間の関係(全26件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

業務コード(商品コード・顧客コードなど)
業務システムで対象を一意に識別するために付与する商品コード・顧客コード・伝票番号などの記号。
チェックディジット(検査用数字)
コードの末尾(または先頭)に、他の桁から計算で導けるよう付ける1桁で、入力されたコードの誤りをその場で検出する仕組み。
有意コード
部門・分類・年度など対象の属性の意味を桁に埋め込むコード体系。読めば属性が分かる一方、組織改編や分類変更で振り直しが必要になりやすい。
無意味連番
属性の意味を持たせず、対象を一意に指すためだけに振る連番のコード体系。何が変わっても壊れにくい。
マイナンバー(個人番号)
住民票コードを作為が加わらない方法で変換して生成される、意味を持たない11桁の番号と、その後に付された1桁の検査用数字からなる番号。
法人番号
12桁の基礎番号とその前に付された1桁の検査用数字で構成される、法人に指定される番号。
JANコード(GTIN)
商品にバーコードとして印字して社外(小売・EC・物流)に流通させるための、GS1標準に基づく商品識別コード。
Luhnアルゴリズム(モジュラス10)
1954年にIBMのH. P. Luhnが特許出願した、1つおきの桁を2倍し9を超えたら9を引いて合計するチェックディジット方式。クレジットカード番号で使われる。
モジュラス11のチェックディジット
各桁に重みを掛けた合計を11で割った余りから検査用数字を導く方式。マイナンバーで使われ、余りが0または1のときは検査用数字を一律0とする畳み込みを持つ。
モジュラス9のチェックディジット
基礎番号の各桁に奇数桁×1・偶数桁×2の重みを掛けた合計を9で割った余りから検査用数字を導く方式。法人番号で使われ、9で割る都合上0と9を区別できない。
GS1標準(モジュラス10 ウェイト3-1)
GTIN・GS1アプリケーション識別子(AI)・SSCC・GLNなどの識別コード体系や、バーコードのシンボル品質・配置要件を定めるGS1の標準規格群。JANコードやISBN-13のチェックディジットは、右端の桁から3倍・1倍を交互に掛けた合計から「10から合計を10で割った余りを引く」方式(モジュラス10 ウェイト3-1)で算出する。
Verhoeff法
群演算による表引きで、すべての1桁誤りとすべての隣接転置を検出する十進コードを初めて構成したチェックディジット方式。
Damm法
準群(quasigroup)の演算表を1枚引くだけで、すべての1桁誤りとすべての隣接転置を検出できるチェックディジット方式。
1桁誤り(打ち間違い)
コードの1桁だけを別の数字に打ち間違える入力ミスの類型。実測では誤りの60〜95%を占める最大の類型とされる。
隣接転置の誤り
隣り合う2桁を入れ替えてしまう入力ミスの類型。2桁誤り全体(10〜20%)の大部分を占める。
Crockford Base32
1と紛らわしいI・L、0と紛らわしいOなどを除いた32文字のアルファベットを使い、桁数を圧縮しつつ誤読対策を施した符号化方式。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。