Qraft (クラフト)

QR コードの仕組み - 白黒の四角はどうやって情報を伝えるのか

QR コードは「二次元のバーコード」

スーパーの商品に付いているバーコードは、横方向の線の太さだけで情報を表現しています。一方、QR コードは縦と横の 2 方向に白黒のセル (モジュール) を並べることで、はるかに多くの情報を格納できます。「二次元コード」と呼ばれるのはこのためです。

黒いモジュールが「1」、白いモジュールが「0」を表し、この 0 と 1 の並びがデータになります。コンピュータが扱うすべてのデータは 0 と 1 で表現できるため、URL、テキスト、電話番号など、さまざまな情報を格納できるのです。

3 つの大きな四角が目印になる

QR コードの 3 隅にある大きな四角形は「ファインダーパターン」と呼ばれ、スキャナーが最初に探す目印です。この 3 つの四角を見つけることで、スキャナーは QR コードの位置、大きさ、傾きを瞬時に把握します。

3 隅にしか四角がないことで、残りの 1 隅 (右下) の位置も推定でき、QR コードがどの向きで映っていても正しく読み取れます。斜めからスキャンしても読み取れるのは、この仕組みのおかげです。

壊れても読める「誤り訂正」

QR コードには、データ本体に加えて「誤り訂正コード」という修復用のデータが含まれています。これにより、QR コードの一部が汚れたり破損したりしても、失われたデータを数学的に復元できます。

誤り訂正の強さは 4 段階 (L、M、Q、H) から選べ、最も強い H レベルでは全体の約 30% が損傷しても読み取り可能です。ロゴを中央に重ねた QR コードが読み取れるのも、この誤り訂正機能のおかげです。

スキャンから表示までの流れ

スマートフォンで QR コードをスキャンしたとき、内部では以下の処理が行われています。

  1. カメラが映像からファインダーパターンを検出し、QR コードの位置と向きを特定する
  2. QR コード内のモジュール (白黒のセル) を 1 つずつ読み取り、0 と 1 のデータ列に変換する
  3. 誤り訂正コードを使って、読み取りエラーや汚れによる欠損を修復する
  4. 修復されたデータ列を文字列 (URL やテキスト) にデコードする
  5. デコード結果に応じて、ブラウザを開く、連絡先を保存するなどの動作を実行する

この一連の処理がわずかコンマ数秒で完了するため、スキャンした瞬間にページが開くように感じられます。