QRコードの誤り訂正と値検証の知識マップ(知識グラフ)
type: Dataset
description: QRコードはリード・ソロモン符号による誤り訂正を備えるが、これは印刷パターンからの復元であって値の正しさの保証ではなく、損傷が符号語の近傍に偏って入り込むと規格が明記する通り別の妥当な符号語として誤って復元されることがある。さらに誤り訂正の外側にも分割QR(Structured Append)や文字コード指定(ECI)の不備といった、エラーを出さずに誤った値を返す原因が存在する。これらに対し業務システム側は形式検査・チェックディジット・マスタ照合をこの順で重ねる多段検証で受け止める必要があり、チェックディジットは1文字の誤りを確実に検出できる一方で複数文字の変化は取りこぼすため、実在確認だけでなく今処理すべき対象との一致まで見るマスタ照合が最後の砦になる。QRの下にGS1のHRI(人間が読める表記)を併記しておくことも、誤読が疑われた際の発見手段として有効である。

QRコード
type: Concept
definition: デンソーウェーブが開発した、誤り訂正機能を持つマトリックス型の二次元シンボル(バーコード)である。
alternative label: QR Code
alternative label: 二次元コード
uses: リード・ソロモン誤り訂正
uses: 入力値の検証(バリデーション)

リード・ソロモン誤り訂正
type: Concept
definition: QRコードが採用する、符号語単位で汚れや破損からデータを復元する誤り訂正方式であり、訂正能力を超える損傷では復元せず読み取り不能になる。
alternative label: Reed-Solomon符号
alternative label: QRの誤り訂正

QRコードの誤読
type: Concept
definition: デコーダがエラーを出さずに、元の値とは異なる妥当な値を読み取り結果として返してしまう現象である。
alternative label: 誤ったデコード結果
alternative label: 誤復号

分割QR(Structured Append)
type: Concept
definition: 長いデータを複数のQRシンボルに分割し、読み取り側で集めて連結する仕組みである。
alternative label: Structured Append
alternative label: 連結QR

ECI(拡張チャネル解釈)
type: Concept
definition: QRコードのバイトモードで使用する文字コードなどの解釈方式を明示的に宣言する仕組みで、指定がない場合の既定解釈は規格の版によって異なる。
alternative label: Extended Channel Interpretation
alternative label: 文字コード指定

チェックディジット(検査用数字)
type: Concept
definition: コードの末尾(または先頭)に、他の桁から計算で導けるよう付ける1桁で、入力されたコードの誤りをその場で検出する仕組み。
alternative label: 検査用数字
alternative label: チェックデジット
should precede: マスタ照合(業務検証)

入力値の検証(バリデーション)
type: Concept
definition: 仕様上ありえない値を受け付けない検証処理。IPAは、幅広い文字種を許す自由記述項目ではXSS対策としての有効性が限定的であり、この方法に頼ることは推奨されないとしている。
alternative label: 入力チェック
should precede: チェックディジット(検査用数字)

マスタ照合(業務検証)
type: Concept
definition: 読み取った値が実在し、かつ今処理すべき対象と一致するかを、マスタデータや業務文脈と突き合わせて確認する検証段階である。
alternative label: 業務検証
alternative label: 台帳突合

GS1のHRI(人間が読める表記)
type: Concept
definition: GS1が定める、バーコードの下に人が目視で読める文字列を併記する考え方である。
alternative label: Human Readable Interpretation
alternative label: 人間可読表記
recommended for: QRコードの誤読

subject: QRコード
predicate: uses
object: リード・ソロモン誤り訂正
description: QRコードはリード・ソロモン符号による誤り訂正を採用しており、汚れや破損があってもデータを復元できるよう設計されている
evidence: error correction.html
verified at: 2026-08-01
certainty: established

subject: リード・ソロモン誤り訂正
predicate: mayCause
object: QRコードの誤読
description: 損傷が別の符号語の近傍に偏って入り込むと、規格が明記する通り「明らかに妥当だが異なる符号語」として誤って復元することがある
evidence: 83389.html
verified at: 2026-08-01
certainty: context-dependent

subject: QRコード
predicate: uses
object: 分割QR(Structured Append)
description: 長いデータを複数のシンボルに分割する場合、QRコードには読み取り側で連結する仕組み(Structured Append)がある
evidence: 83389.html
verified at: 2026-08-01
certainty: context-dependent

subject: 分割QR(Structured Append)
predicate: mayCause
object: QRコードの誤読
description: 分割QRに対応しないデコーダが1枚目だけを読むと、末尾が欠けた値をエラーなく返すことがある(挙動は実装依存)
evidence: 83389.html
verified at: 2026-08-01
certainty: context-dependent

subject: QRコード
predicate: requires
object: ECI(拡張チャネル解釈)
description: バイトモードで非ASCII文字を格納し、その文字コードを明示したい場合はECI指定が必要で、指定がなければ既定解釈は規格の版によって変わる。数字モード・英数字モードや、ASCIIの範囲に収めたバイトモードのQRコードにはこの前提は当てはまらない
evidence: 83389.html
verified at: 2026-08-01
certainty: context-dependent

subject: ECI(拡張チャネル解釈)
predicate: mayCause
object: QRコードの誤読
description: ECI指定なしのバイトモードは実装ごとに既定の文字コード解釈が異なり、文字化けした文字列をエラーなく成功として返す実装がある
evidence: 83389.html
verified at: 2026-08-01
certainty: context-dependent

subject: チェックディジット(検査用数字)
predicate: mitigates
object: QRコードの誤読
description: チェックディジットは1文字の変化を確実に検出できるが、複数文字が同時に変わる誤読は取りこぼす
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: context-dependent

subject: 入力値の検証(バリデーション)
predicate: shouldPrecede
object: チェックディジット(検査用数字)
description: 受け取った文字列の長さ・文字種・接頭辞の形式検査を先に行い、対象外の文字がチェックディジット計算に届かないようにする
evidence: Input Validation Cheat Sheet.html
verified at: 2026-08-01
certainty: established

subject: チェックディジット(検査用数字)
predicate: shouldPrecede
object: マスタ照合(業務検証)
description: チェックディジットで自己整合性を確認したうえで、実在確認と今処理すべき対象との一致を業務検証で行う
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: established

subject: マスタ照合(業務検証)
predicate: mitigates
object: QRコードの誤読
description: マスタ照合を実在確認だけで終わらせず、いま処理すべき対象との一致まで確認することで古いラベルや別伝票の取り違えを検出できる
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: context-dependent

subject: GS1のHRI(人間が読める表記)
predicate: recommendedFor
object: QRコードの誤読
description: GS1のHRI(人間が読める表記)の考え方に沿ってQRの下に文字列を併記しておくと、誤読が疑われたときに人が突き合わせられる
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: established

subject: QRコード
predicate: uses
object: GS1のHRI(人間が読める表記)
description: GS1の運用に沿う業務QRでは、QRコードに人が読める文字列(HRI)を併記する
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: context-dependent

subject: QRコード
predicate: uses
object: 入力値の検証(バリデーション)
description: 読み取った値は外部から来た未検証の入力として扱い、形式検査から始まる検証を課す必要がある
evidence: Input Validation Cheat Sheet.html
verified at: 2026-08-01
certainty: established

subject: QRコードの誤読
predicate: verifiedBy
object: チェックディジット(検査用数字)
description: 誤読の疑いは、伝票番号のチェックディジット不一致という形で機械的に確認できる(複数文字の変化は取りこぼす)
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: context-dependent

subject: QRコード
predicate: uses
object: チェックディジット(検査用数字)
description: 業務QRの多くは、内容にモジュラス10などのチェックディジットを含むコード体系で設計される
evidence: gs1-general-specifications
verified at: 2026-08-01
certainty: context-dependent

subject: 入力値の検証(バリデーション)
predicate: mitigates
object: QRコードの誤読
description: 長さ・文字種・区切り・接頭辞の完全一致を見る形式検査は、分割QRの断片や文字化けした文字列を検出できる(誤り訂正由来の同一形式の誤読は検出できない)
evidence: Input Validation Cheat Sheet.html
verified at: 2026-08-01
certainty: context-dependent