ブログ画像

QRコードの中身: 構造、容量、誤り訂正

QRコードがデータを保存する仕組み、ファインダパターンとクワイエットゾーンの役割、誤り訂正レベルがエンコードできる量を変える理由、そしてコードを生成する前に知っておきたい実用上の限界を説明します。

QRコードはランダムな白黒のノイズのように見えますが、すべての部分が 構造を持っています。隅にある3つの大きな四角、タイミングの線、 余白、データ領域には、それぞれ役割があります。多くの場合は動作する コードがあればよいだけですが、これらの部分のいくつかは、コードが 確実にスキャンされるか、どれだけのデータを保持できるか、どれだけ 小さく印刷できるかに直接影響します。各要素の役割を知ると、「ときどき スキャンできない」という問題が、謎からチェックリストへと変わります。

固定パターン

データの前に、QRコードにはスキャナがコードを見つけて向きを判断する ためのパターンが含まれています。

  • ファインダパターン . 隅にある3つの大きな入れ子状の四角です。 スキャナはこれを最初に検出し、その固定された比率によってコードの 位置を特定し、画像が斜めになっていても回転を割り出します。
  • アライメントパターン . より小さな四角で(最小のコードを除く すべてのコードにあります)、コードが曲面や傾いた面にあるときの 歪みを補正します。
  • タイミングパターン . ファインダの間を走る点線で、スキャナに 各モジュールのグリッドサイズを伝えます。
  • クワイエットゾーン . コード全体を囲む空白の余白で、4モジュール 幅が推奨されます。これは装飾ではありません。これがないと、スキャナが 周囲のコンテンツからコードを切り分けられないことがあります。QRコードを 他のグラフィックにぴったり詰め込むことは、印刷されたコードが スキャンできない最も一般的な原因です。

それ以外のすべて、つまり斑点のような内部は、エンコードされたデータと その誤り訂正バイトです。

バージョンと容量

QRコードには1から40までのバージョンがあり、バージョンは グリッドサイズそのものです。バージョン1は21×21モジュールで、1段階 上がるごとに1辺あたり4モジュールずつ増えます。グリッドが大きいほど 多くのデータを保持します。容量は何をエンコードするかにも左右されます。 QRには専用のモードがあるためです。

  • 数字(Numeric) . 数字のみで、最も密度が高いです。
  • 英数字(Alphanumeric) . 数字、大文字、いくつかの記号を含みます。
  • バイト(Byte) . 任意のバイトで、URLや大文字小文字が混在した テキストがこれを使い、密度は最も低いです。

よく挙げられる最大値、つまり数千文字という数字は、最大のバージョンで 誤り訂正を最小にした数字モードを前提としています。実際のURLをバイト モードで扱うと、実用上の限界にはるかに早く達します。だからこそ長い リンクは密で、スキャンしにくいコードを生み出します。対処法は通常、 コードを大きくすることではなく、URLを短くすることです。

誤り訂正は実際のトレードオフです

これは人々が理解しないまま生成する設定ですが、重要です。QRコードは Reed-Solomon誤り訂正を使い、コードの一部が汚れたり、損傷したり、 覆われたりしても読めるように冗長なバイトを追加します。4つのレベルが あります。

レベル 復元可能な範囲 コスト
L (Low) 約7% データ容量の大部分を確保
M (Medium) 約15% バランスの取れた既定値
Q (Quartile) 約25% 容量が減少
H (High) 約30% 容量が最も少ない

高いレベルは、中央にロゴが入ったQRコードを機能させる要素です。 ロゴがデータを覆い、誤り訂正がそれを復元します。しかし冗長性は容量を 消費します。Hレベルでは、コードのほぼ3分の1が訂正バイトになるため、 同じデータでもより大きく密なグリッドが必要です。Mレベルが妥当な 既定値であり、損傷が予想される場合やロゴを重ねたい場合にのみQやHに 上げ、その結果大きくなるコードを受け入れます。

知っておきたい実用上の限界

よくある思い込みとは異なり、どのQRコードにもできないことがいくつか あります。

  • QRコードは暗号化されておらず、非公開でもありません。 これは オープンなエンコードであり、スキャナを持つ誰もがその中身をそのまま 読み取ります。形式が守ってくれると期待して秘密の情報を入れては いけません。
  • 静的です。 データは生成時点で固定されます。後から編集できる 「動的」QRコードはコード自体を変えません。短いリダイレクトURLを エンコードしておき、その向き先を変えるだけなので、第三者の サービスが存続し続けることに依存します。
  • コントラストとサイズは任意ではありません。 クワイエットゾーンを 保ったまま明るい背景に暗いコードを使い、各モジュールが撮影解像度で 生き残るほど十分に大きく印刷します。色の反転と狭い余白は、ある スマートフォンではスキャンできて別のスマートフォンではできない コードの典型的な原因です。

コンテンツがURLの場合、コードはそのテキストをそのまま保存するだけ なので、リンク自体のエンコード規則は依然として適用されます。空白や 特殊文字は、コードに入れる前にパーセントエンコーディングで 扱うとおりに処理する必要があります。モードと誤り訂正レベルを明示的に 設定して生成するには、私たちのQRコード生成ツールが ブラウザ内でコードを作成するので、データが端末から出ることはありません。