QRコードの四隅にある大きな四角はファインダパターンと呼ばれ、読み取り機がコードを見つけて向きを決めるために使われます。なぜ4隅ではなく3隅なのか、どこが欠けると「そもそも認識されない」のか。本記事では機能パターンの役割を、色分けした実物の図とともに解説します。
QRコードは「機能パターン」と「データ領域」でできている
QRコードの白黒のマス(モジュール)は、すべてがデータではありません。読み取り機がコードを見つけて正しく格子に区切るための機能パターンが先に配置され、残った場所にデータと誤り訂正の符号語が入ります。
重要なのは、機能パターンは誤り訂正の対象外だという点です。リード・ソロモン符号が守っているのはデータ領域の符号語だけで、四隅の四角が潰れていても計算で復元することはできません。「QRコードは3割欠けても読める」という説明が場所によって当てはまらないのは、このためです。
実演:どのマスが何の役割か
ブラウザ上でバージョン7のQRコードを生成し、モジュールを役割ごとに色分けしました。黒く塗られたマスは実際に黒いモジュール、薄い色は同じ役割の領域にある白いモジュールです。データ領域(濃紺)だけがコード全体の大半を占めていることが分かります。
ファインダパターン — 四隅の3つの四角
いちばん目立つ「回」の字状のマークがファインダパターン(位置検出パターン)です。7×7モジュールで、中心に3×3の黒、その周りに5×5の白い枠、さらにその外側に7×7の黒い枠という入れ子構造をしています。
1:1:3:1:1 という比率
この入れ子構造には狙いがあります。ファインダパターンの中心を通る直線をどの角度で引いても、黒・白・黒・白・黒の幅の比が 1:1:3:1:1 になるのです。読み取り機は画像を横方向・縦方向に走査して、この比率に合う並びを探すことでQRコードを見つけます。比率で判定するため、コードの大きさや画面上の解像度に左右されず、傾いていても検出できます。
なぜ4隅ではなく3隅なのか
四隅すべてに置かないのは、向きを決めるためです。3つが見つかれば、直角に配置された2辺から符号の枠が決まり、ファインダが無い側が右下だと分かります。4つ置いてしまうと90度単位の回転が区別できず、上下逆さに読み取ってしまいます。スマートフォンでQRコードを逆さまに向けても読めるのは、この非対称性のおかげです。
分離パターンとクワイエットゾーン
各ファインダの内側には、幅1モジュールの白い帯(分離パターン)が入ります。データ領域の黒がファインダに接してしまうと、上の 1:1:3:1:1 の比率が崩れて検出できなくなるためです。
同じ理由で、コードの外周には4モジュール以上の余白(クワイエットゾーン)が必要です。ここを詰めて周囲の印刷物やロゴが接すると、外側の黒枠の幅が正しく測れず、検出そのものが失敗します。読み取り不良の原因としてはかなり多いパターンです。
タイミングパターン — 格子の目盛り
左上と右上のファインダの間(行6)と、左上と左下のファインダの間(列6)には、黒と白が1マスずつ交互に並んだ列があります。これがタイミングパターンで、読み取り機はここを数えることで「一辺が何モジュールあるか」「1モジュールが画像上の何ピクセルにあたるか」を確定します。
ファインダで大枠の位置が決まっても、間のマス目の切り方までは分かりません。特にバージョンが大きく(マス目が細かく)なるほど、わずかな誤差の積み重ねで格子がずれていきます。タイミングパターンはその基準線として働きます。
位置合わせパターン — 歪みの補正
バージョン2以上には、位置合わせパターン(アライメントパターン)が入ります。5×5モジュールで、外周が黒、その内側が白、中心の1マスが黒という構造です。ファインダを小さくしたような形ですが、役割は異なり、面の歪みを補正するために使われます。
ペットボトルや紙袋のような曲面、あるいは斜めから撮影した場合、コードは単純な長方形には写りません。位置合わせパターンは符号内の決まった座標にあるので、読み取り機はその写り方のズレから面の歪みを推定し、格子を引き直せます。バージョンが上がるほど個数が増えるのは、細かいコードほど局所的な歪みが効いてくるからです。
| バージョン | 一辺のモジュール数 | 位置合わせパターンの数 |
|---|---|---|
| 1 | 21 | 0 |
| 2〜6 | 25〜41 | 1 |
| 7〜13 | 45〜69 | 6 |
| 14〜20 | 73〜97 | 13 |
| 21〜27 | 101〜125 | 22 |
| 28〜34 | 129〜153 | 33 |
| 35〜40 | 157〜177 | 46 |
形式情報と型番情報
ファインダの周囲には、読み取りの設定値そのものが書かれています。
- 形式情報:誤り訂正レベルとマスクパターン番号。左上のファインダを囲む位置と、右上・左下に分けた位置の2か所に同じ内容が入ります。
- 型番情報:バージョン番号。バージョン7以上のときだけ、右上のファインダの左と左下のファインダの上の2か所に入ります。バージョン6以下では、タイミングパターンを数えれば分かるので置かれません。
誤り訂正レベルを実際に読み取る手順は、「QRコードの誤り訂正レベルを確認する方法」で解説しています。
どこが壊れると何が起きるか
「位置検出がずれる」と一口に言っても、壊れた場所によって症状は違います。読み取り不良を切り分けるときの目安として整理します。
| 壊れた場所 | 起きること | 誤り訂正で救えるか |
|---|---|---|
| ファインダパターン | そもそもQRコードとして検出されない。カメラを向けても何も起きない。 | 救えない(機能パターンは訂正の対象外) |
| 分離パターン・クワイエットゾーン | 1:1:3:1:1 の比率が崩れ、検出に失敗しやすくなる。背景と一体化して見える。 | 救えない |
| タイミングパターン | モジュールの区切り位置がずれ、大きいバージョンほど誤読・失敗が増える。 | 救えない |
| 位置合わせパターン | 平面なら影響が小さいが、曲面や斜めからの撮影で急に読めなくなる。 | 救えない |
| 形式情報 | 最大3ビットまでは訂正可能。2か所にあるので片方の破損なら問題ない。 | ある程度救える |
| データ領域 | 誤り訂正レベルに応じた量まで復元できる。 | 救える |
撮影した写真で四隅がつぶれている場合は、鮮明化してから解析すると通ることがあります。手順は「写真のQRコードが読めない…を復元する仕組み」を、原因別の直し方は「QRコードが読み取れない原因と直し方」をご覧ください。
まとめ
- 四隅の3つの四角はファインダパターン。どの角度で走査しても 1:1:3:1:1 になる構造で、コードの発見に使われる。
- 4隅ではなく3隅なのは、向き(どちらが右下か)を一意に決めるため。
- タイミングパターンは格子の目盛り、位置合わせパターンは曲面・斜め撮影時の歪み補正。
- 機能パターンは誤り訂正の対象外。四隅や余白が壊れると「そもそも検出されない」状態になる。
- 読み取り不良は、検出できていないのか、検出後に復元できていないのかで切り分ける。
よくある質問(FAQ)
QRコードの四隅にある3つの四角は何ですか?
ファインダパターン(位置検出パターン)です。7×7モジュールの入れ子構造で、中心を通る直線をどの角度で引いても黒・白・黒・白・黒の幅の比が1:1:3:1:1になります。読み取り機はこの比率を探してQRコードを見つけます。
なぜファインダパターンは4隅ではなく3隅にあるのですか?
向きを一意に決めるためです。3つ見つかれば符号の枠が決まり、ファインダが無い側が右下だと分かります。4隅すべてに置くと90度単位の回転が区別できなくなります。
ファインダパターンが欠けたQRコードは誤り訂正で復元できますか?
できません。リード・ソロモン符号が守っているのはデータ領域の符号語だけで、ファインダパターンなどの機能パターンは誤り訂正の対象外です。四隅が壊れると、そもそもQRコードとして検出されない状態になります。
位置合わせパターンは何のためにありますか?
面の歪みを補正するためです。符号内の決まった座標に置かれているので、曲面や斜めからの撮影でコードが歪んで写っていても、読み取り機はそのズレから歪みを推定して格子を引き直せます。バージョン2以上に入り、バージョンが上がるほど個数が増えます。