知識マップ: 業務システムのコード設計 ── 商品コード・顧客コードの決め方とチェックディジット
記事「業務システムのコード設計 ── 商品コード・顧客コードの決め方とチェックディジット」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
業務システムの商品コードや顧客コードは、部門や分類などの意味を桁に埋め込む有意コードを避け、識別に徹した無意味連番か種別接頭辞付きのハイブリッド構成にするのが本記事の推奨である。マイナンバーも住民票コードを変換した意味を持たない番号として設計されており、検査用数字としてモジュラス11のチェックディジットを持つ。人の手や目を通るコードにはチェックディジットを付けるべきで、入力ミスの実態は1桁誤りと隣接する2桁の転置がほとんどを占めるため、JANコードのGS1標準やLuhnアルゴリズムはこの2類型をほぼ検出でき、法人番号のモジュラス9は0と9の取り違えを見逃し、VerhoeffやDammの方式は両方の誤りを完全に検出する。実装ではExcelが業務コードを数値として解釈すると先頭ゼロや15桁を超える桁が失われるため、コードは文字列として一貫して扱うことが実務上の要点になる。
flowchart LR
accTitle: 業務コード設計とチェックディジットの知識マップ
accDescr: 業務コードを識別に徹して設計する原則と、人手を通るコードにチェックディジットを付ける理由、JAN・Luhn・モジュラス11・モジュラス9・Verhoeff・Dammなど各方式の1桁誤りと隣接転置の検出力の違いを示す図
business_code["業務コード(商品コード・顧客コードなど)"]
check_digit["チェックディジット(検査用数字)"]
significant_code["有意コード"]
sequential_code["無意味連番"]
excel_numeric_coercion["Excelの数値変換による0落ち・15桁丸め"]
mynumber["マイナンバー(個人番号)"]
modulus_11_check["モジュラス11のチェックディジット"]
corporate_number["法人番号"]
modulus_9_check["モジュラス9のチェックディジット"]
jan_code["JANコード(GTIN)"]
gs1_standard["GS1標準(モジュラス10 ウェイト3-1)"]
luhn_algorithm["Luhnアルゴリズム(モジュラス10)"]
verhoeff_algorithm["Verhoeff法"]
damm_algorithm["Damm法"]
single_digit_input_error["1桁誤り(打ち間違い)"]
adjacent_transposition_error["隣接転置の誤り"]
crockford_base32["Crockford Base32"]
significant_code -.->|"用いるのは非推奨"| business_code
sequential_code -->|"推奨される対応"| business_code
check_digit -.->|"推奨される対応"| business_code
business_code -.->|"両立しない"| excel_numeric_coercion
mynumber -->|"利用する"| sequential_code
mynumber -->|"利用する"| modulus_11_check
corporate_number -->|"利用する"| modulus_9_check
jan_code -->|"前提とする"| gs1_standard
jan_code -->|"利用する"| check_digit
luhn_algorithm -->|"実装を担う"| check_digit
modulus_11_check -->|"実装を担う"| check_digit
modulus_9_check -->|"実装を担う"| check_digit
gs1_standard -->|"実装を担う"| check_digit
verhoeff_algorithm -->|"実装を担う"| check_digit
damm_algorithm -->|"実装を担う"| check_digit
single_digit_input_error -->|"で確認できる"| check_digit
adjacent_transposition_error -->|"で確認できる"| check_digit
luhn_algorithm -->|"防止する"| single_digit_input_error
luhn_algorithm -.->|"防止する"| adjacent_transposition_error
gs1_standard -->|"防止する"| single_digit_input_error
gs1_standard -.->|"防止する"| adjacent_transposition_error
modulus_11_check -.->|"防止する"| adjacent_transposition_error
modulus_9_check -.->|"防止する"| single_digit_input_error
verhoeff_algorithm -->|"防止する"| adjacent_transposition_error
damm_algorithm -->|"防止する"| adjacent_transposition_error
crockford_base32 -.->|"推奨される対応"| business_code
概念間の関係(全26件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- 有意コードを業務コード(商品コード・顧客コードなど)に用いることは推奨されません。
- 無意味連番は業務コード(商品コード・顧客コードなど)に対する本記事の推奨です。
- チェックディジット(検査用数字)は業務コード(商品コード・顧客コードなど)に対する本記事の推奨です。
- 業務コード(商品コード・顧客コードなど)はExcelの数値変換による0落ち・15桁丸めと両立しません。
- マイナンバー(個人番号)は無意味連番を利用します。
- マイナンバー(個人番号)はモジュラス11のチェックディジットを利用します。
- 法人番号はモジュラス9のチェックディジットを利用します。
- JANコード(GTIN)はGS1標準(モジュラス10 ウェイト3-1)を前提とします。
- JANコード(GTIN)はチェックディジット(検査用数字)を利用します。
- Luhnアルゴリズム(モジュラス10)はチェックディジット(検査用数字)の実装を担います。
- モジュラス11のチェックディジットはチェックディジット(検査用数字)の実装を担います。
- モジュラス9のチェックディジットはチェックディジット(検査用数字)の実装を担います。
- GS1標準(モジュラス10 ウェイト3-1)はチェックディジット(検査用数字)の実装を担います。
- Verhoeff法はチェックディジット(検査用数字)の実装を担います。
- Damm法はチェックディジット(検査用数字)の実装を担います。
- 1桁誤り(打ち間違い)はチェックディジット(検査用数字)で確認できます。
- 隣接転置の誤りはチェックディジット(検査用数字)で確認できます。
- Luhnアルゴリズム(モジュラス10)は1桁誤り(打ち間違い)を防ぎます。
- Luhnアルゴリズム(モジュラス10)は隣接転置の誤りを防ぎます。
- GS1標準(モジュラス10 ウェイト3-1)は1桁誤り(打ち間違い)を防ぎます。
- GS1標準(モジュラス10 ウェイト3-1)は隣接転置の誤りを防ぎます。
- モジュラス11のチェックディジットは隣接転置の誤りを防ぎます。
- モジュラス9のチェックディジットは1桁誤り(打ち間違い)を防ぎます。
- Verhoeff法は隣接転置の誤りを防ぎます。
- Damm法は隣接転置の誤りを防ぎます。
- Crockford Base32は業務コード(商品コード・顧客コードなど)に対する本記事の推奨です。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。