Qraft (クラフト)

コードワード

読み: コードワード

コードワード (codeword) は、QR コードの内部構造におけるデータの基本単位で、8 ビット (1 バイト) の固定長ブロックです。入力データがエンコードモードに従ってビット列に変換された後、8 ビットずつに区切られてデータコードワードとなります。このデータコードワードに対してリード・ソロモン符号による誤り訂正コードワードが計算・付加され、最終的にモジュールパターンとして QR コードに配置されます。

QR コードのバージョン (サイズ) と誤り訂正レベルの組み合わせによって、使用できるコードワードの総数が決まります。たとえばバージョン 1 (21×21 モジュール) の誤り訂正レベル L では、総コードワード数は 26 で、うちデータコードワードが 19、誤り訂正コードワードが 7 です。バージョン 40 (177×177 モジュール) のレベル L では、総コードワード数は 3,706 に達します。

実務上、コードワードの概念を直接意識する場面は少ないですが、「なぜ同じバージョンでも誤り訂正レベルを上げるとデータ容量が減るのか」を理解するには不可欠な概念です。誤り訂正レベルを上げると、総コードワード数は変わらないまま誤り訂正コードワードの割合が増え、データコードワードに使える領域が減少します。QR コードのサイズデータ量のバランスを最適化する際に、この仕組みを知っておくと判断の精度が上がります。

データコードワードと誤り訂正コードワードの違いは?

コードワードは役割で 2 種類に分かれます。データコードワード (誤り訂正の分野では「データコード語」とも訳されます) は、入力した文字列そのものをビット列に変換して 8 ビットずつ区切ったもので、QR コードが「運ぶ中身」です。誤り訂正コードワード (誤り訂正コード語) は、データコードワードからリード・ソロモン符号で計算される復元用の冗長データで、汚れや欠けで一部のモジュールが読めなくてもデータを復元できるようにします。読み取り時は誤り訂正コードワードを使って破損を検出・修復してから、データコードワードを文字列へ復号します。

容量表の数字はコードワードでどう決まりますか?

ジェネレーターの仕様表にある「バージョン X で数字なら何桁・英数字なら何文字」という容量の数字は、すべてデータコードワード数から逆算されています。たとえばバージョン 1・レベル L のデータコードワードは 19 個 = 152 ビットで、ここからモード指示子と文字数指示子のビット数を差し引いた残りに、各モードの 1 文字あたりのビット数 (数字モード 10/3 ビット、英数字モード 5.5 ビット、バイナリモード 8 ビット) を割り当てると、容量表と同じ数字が得られます。エンコード後のビット列の末尾に付く終端パターンや、配置後に領域の端数を埋める残余ビットも、この仕組みの周辺概念です。