QRコードとは
QRコード(Quick Response Code/クイック・レスポンス・コード/キューアールコード)は、白黒などの小さな升目へデータを符号化し、カメラで読み取れる二次元コードです。QRコードは株式会社デンソーウェーブの登録商標です。
升目一個をmodule(モジュール)と呼びます。三隅の大きな位置検出模様パターン等で位置と向きを検出し、モジュールの明暗からデータと誤り訂正コードを取り出します。
QRコードは画像そのものに信頼性を付けません。読み取ったURL、連絡先、支払情報、命令が安全かは、表示して利用者が確認する別の段階です。

読取りを支える構造
三隅の同心四角で、コードの位置・向き・大きさを見つけます。
位置検出模様周囲の白線と記号外側の4module幅の余白で境界を示します。
明暗交互の線から行・列のサンプリング位置を合わせます。
大きいバージョンで複数配置され、曲面や遠近による局所歪みを補います。
誤り訂正段階とマスク、一定以上ではバージョン情報も符号化します。
機能パターン以外へ規定のジグザグ順でビットを配置します。
バージョンでモジュール数が増える
標準QRコードはバージョン1〜40があり、バージョン1は21×21moduleです。バージョンが一つ上がるごとに一辺が4module増え、バージョン40は177×177moduleになります。
大容量ほど高バージョンが必要ですが、同じ印刷大きさなら一モジュールが小さくなり読みにくくなります。入れるデータを短くし、利用距離とカメラ解像度に合う物理モジュール大きさを確保します。
データを符号語へする順序
- モードを選ぶ数字、英数字、バイト、漢字等から効率のよいモードを区間ごとに選びます。
- 長さとデータを符号化するモード指標、文字個数、データビットを並べ、終端記号と埋め草で容量を満たします。
- 誤り訂正符号語を作るブロックごとにReed–Solomonコードを計算し、データと交互配置します。
- モジュールへ配置する機能パターンを避け、右下から二列ずつジグザグに置きます。
- マスクを選ぶ複数候補を評価し、大きな同色領域等の読みにくいパターンを減らします。
文字のモードと符号化
数字モードは数字、英数字モードは限定された英数字・記号、漢字モードは所定のシフト_JIS範囲を効率よく表します。バイトモードはバイト列を格納します。
バイトから文字への文字エンコーディングを明示するECIもあります。生成器と読取申請がECIを正しく扱うか確認し、日本語を含むデータは実機で往復試験します。
四つの誤り訂正段階
段階L・M・Q・Hは、失われた符号語を概ね約7%・15%・25%・30%復元できる設計目安です。高い段階ほど訂正符号語が増え、同じバージョンへ入るデータ量は減ります。
面積の同じ割合が欠ければ必ず直るという保証ではありません。位置検出模様パターンや広い連続領域の損傷、ぼかし、反射、汚れ方で読取結果が変わります。ロゴを重ねる場合も余白ではなくデータモジュールを壊すため、実機試験が必要です。
印刷・画面表示で読める条件
周囲に4module以上の余白ゾーンを確保し、高コントラスト、正方形モジュール、十分な物理大きさを保ちます。画像拡大で補間をかけて縁をぼかさず、暗色モジュールと明色背景の関係を維持します。
曲面、光沢、低コントラスト、細かな背景模様、画面のモアレはサンプリングを難しくします。想定する距離、カメラ、照明、汚れで試験します。
読み取る前後の安全確認
QRコードはURLを格納できますが、短縮URL、似たドメイン、偽の決済接続先も同じように符号化できます。公共場所のコード上へ別のシールを貼る攻撃もあります。
申請は移動先ドメインと方式を表示し、利用者が確認してから開きます。支払いでは店舗名・金額・送金先、Wi-Fi設定ではSSIDとセキュリティ、ログインでは要求権限を確認します。カメラで読めたことは内容の安全証明ではありません。
QRコードは機能パターン・データ・Reed–Solomon訂正コード・マスクをモジュールへ配置する二次元コードです。容量だけでなくモジュール大きさ、余白ゾーン、コントラスト、損傷位置、文字符号化、読取後の内容確認を設計します。
QR Codeの構造・容量・誤り訂正・開発元情報:DENSO WAVE QRcode.com