本文へスキップ
ガイド基礎知識

QRコードの仕組みとは?構造・誤り訂正・容量をわかりやすく解説

スマホがQRコードを読み取るとき、実際には何が起きているのでしょうか。切り出しシンボル、モジュール、バージョン、誤り訂正レベル、そしてQRコードに入るデータ量までをわかりやすく解説します。

公開日 8分で読めます

QRコードは、飲食店のテーブル、宅配便の荷物、電車のきっぷ、名刺、決済端末など、あらゆる場所で使われています。しかし、あの白黒の四角の中に何が隠されているのか、なぜロゴで一部が隠れていても読み取れるのかを知っている人は多くありません。このガイドでは、QRコードの仕組みをわかりやすく解説します。

QRコードの歴史

QRコード(Quick Response codeの略)は、1994年、トヨタグループの日本企業であるデンソーウェーブの原昌宏氏によって発明されました。自動車工場では、1次元バーコードよりも速く部品を管理できる方法が求められていたのです。従来のバーコードは一方向にしかデータを記録できず、容量は20文字程度ですが、QRコードは縦と横の両方向にデータを記録でき、数千文字を格納できます。

デンソーウェーブはこの技術の特許を取得しましたが、権利を行使しないことを選び、QRコードは国際規格(ISO/IEC 18004)となりました。このオープンな姿勢こそが、誰もがどんな端末でも無料でQRコードを作成・読み取りできる最大の理由です。

QRコードの構造

すべてのQRコードは、モジュールと呼ばれる小さなセルが正方形に並んだグリッドでできています。各モジュールは暗(黒)か明(白)のどちらかで、1ビットを表します。グリッドの一部の領域には、決まった役割があります。

  • 切り出しシンボル(ファインダパターン) — 3つの角にある大きな四角形。コードが逆さまだったり、斜めから撮影されたりしても、リーダーが瞬時にコードを見つけ、向きを判断できます。
  • アライメントパターン — バージョン2以上にある小さな四角形。曲面に印刷されたコードや、斜めから見たコードのゆがみを補正するのに役立ちます。
  • タイミングパターン — 切り出しシンボルの間にある、暗と明が交互に並んだ線。各モジュールの大きさをリーダーに伝えます。
  • 形式情報 — 切り出しシンボルの横にある帯状の領域で、誤り訂正レベルと使用されたマスクパターンが記録されています。
  • クワイエットゾーン — コードの周囲にある何もない余白。これも仕様の一部で、余白がないとリーダーはコードの終わりと背景の始まりを区別できません。

それ以外の部分はすべてデータと誤り訂正のコード語で、グリッド全体に分散して配置されています。

バージョン:コードの密度が違う理由

QRコードには、バージョンと呼ばれる40種類のサイズがあります。バージョン1は21 × 21モジュールで、バージョンが1つ上がるごとに1辺あたり4モジュールずつ増え、バージョン40では177 × 177モジュールになります。記録するデータが多いほどバージョンが上がり、同じ印刷サイズなら1つひとつのモジュールが小さくなります。

そのため、短いURLならすっきりとした粗いパターンになりますが、長い文章だと密度の高いパターンになり、大きく印刷する必要が出てきます。QR.toolsのQRコード作成ツールでコードを作成すると、プレビューにバージョンとモジュール数が表示されるので、密度を確認しながら作れます。

エンコードモードと容量

QRコードは、内容に応じて最も効率のよいエンコードモードを自動で選びます。

モード 使える文字 最大容量(バージョン40、レベルL)
数字 0~9 7,089桁
英数字 0~9、A~Z、スペース、$%*+-./: 4,296文字
バイト 任意のデータ(通常はUTF-8テキスト) 2,953バイト
漢字 日本語の文字 1,817文字

これらは理論上の最大値です。実際に安定して読み取れるのは、数百文字程度までです。それ以上の情報を共有したい場合は、代わりにWebページへの短いリンクを記録しましょう。

誤り訂正:ロゴを入れられる秘密

QRコードはリード・ソロモン符号による誤り訂正を採用しています。傷のついたCDやDVDが再生できるのと同じ数学です。追加のコード語を加えておくことで、コードの一部が破損したり、汚れたり、隠れたりしても、元のデータを復元できます。誤り訂正には4つのレベルがあります。

  • L(低) — 損傷したコード語の約7%を復元
  • M(中) — 約15%
  • Q(やや高) — 約25%
  • H(高) — 約30%

レベルが高いほどコードは丈夫になりますが、冗長なデータに多くの領域を使うため、サイズも大きくなります。これこそがロゴ入りQRコードを可能にしている仕組みです。中央のロゴはコードの一部を意図的に「破損」させ、誤り訂正がその欠けた部分を補います。ロゴを入れるなら、レベルQまたはHを選び、ロゴの面積をコード全体のおよそ4分の1以下に抑えましょう。

ヒント:誤り訂正は、十分なコントラストの代わりにはなりません。色が薄すぎる、小さすぎる、クワイエットゾーンがないといったコードは、レベルHでも読み取れないことがあります。

マスク処理:パターンを読み取りやすく保つ

データをそのまま配置すると、同じ色の大きな塊や、切り出しシンボルに似た形が偶然できてしまい、リーダーが混乱することがあります。これを防ぐため、エンコーダーは8種類のマスクパターン(特定のモジュールの明暗を反転させる数式)のいずれかを適用し、「ペナルティスコア」が最も低いものを採用します。リーダーは形式情報からマスク番号を読み取り、元に戻します。マスクについて意識する必要はまったくありませんが、ほぼ同じ内容の2つのコードがまったく違って見えるのは、このためです。

読み取るときに起きていること

カメラをQRコードに向けると、リーダーは次の処理を行います。

  1. 検出:3つの切り出しシンボルを見つけ、コードの位置、大きさ、回転を計算します。
  2. 遠近補正:アライメントパターンを使い、傾いたコードを平らなグリッドに補正します。
  3. サンプリング:タイミングパターンを物差しにして、各モジュールが暗か明かを判定します。
  4. 読み込み:形式情報を読み取り、マスクを解除してコード語を集めます。
  5. 修復:リード・ソロモン復号で誤りを訂正します。
  6. 解釈:リンク、Wi-Fiの接続情報、連絡先などのデータを解釈し、適切なアクションを提示します。

これらすべてが、わずか数ミリ秒で行われます。オンラインQRコード読み取りツールで実際に試してみてください。アップロードした画像、リンク、カメラの映像に対して、これらの処理をブラウザ内で直接実行します。

静的QRコードと動的QRコード

静的QRコードには、URL、Wi-Fiのパスワード、テキストそのものなど、最終的な内容が直接記録されています。ずっと使えて、サーバーも不要で、追跡されることもありません。動的QRコードには、サービス提供者が管理する短いリダイレクト用リンクが記録されています。後からリンク先を変更したり、読み取り回数を計測したりできますが、契約が終了すると使えなくなります。

QR.toolsで作成するコードはすべて静的QRコードです。無料で、プライバシーが守られ、ずっと使えます。後からリンク先を変更したい場合は、自分で管理できるページにリンクしておき、そのページの内容を更新しましょう。

QRコードに入れられる内容

QRコードは単にテキストを記録するものなので、そのテキストの形式によってスマホの動作が決まります。標準化されている主な形式は次のとおりです。

  • URL — Webサイトを開く(https://…)
  • Wi-Fi — ネットワークに接続する(WIFI:T:WPA;S:…;P:…;;)— Wi-Fi QRコード作成を参照
  • vCard — 連絡先を保存する — vCard QRコード作成を参照
  • メール、SMS、電話 — mailto:、SMSTO:、tel: でメッセージの作成や発信を始める
  • カレンダーの予定 — iCalendarの VEVENT で予定を追加する
  • 位置情報 — geo: の座標で地図を開く

まとめ

  • QRコードは、データの周りに切り出しシンボル、タイミングパターン、アライメントパターンが決まった位置に配置された、モジュールのグリッドです。
  • 内容が多いほどバージョンが上がり、パターンの密度が高くなり、必要な最小印刷サイズも大きくなります。
  • 誤り訂正(L、M、Q、H)によってコードは損傷に強くなり、ロゴを入れることも可能になります。
  • 静的コードは永続的でプライバシーも守られます。動的コードは編集できますが、提供サービスに依存します。

さっそく作ってみませんか?QRコード作成ツールを開けば、好きな色やロゴを使ったコードを数秒で作成できます。

さっそくQRコードを作ってみませんか?

ロゴや色を使ったオリジナルQRコードを数秒でデザイン。無料・登録不要です。

QRコードを作成する

こちらの記事もおすすめ