Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How QR Codes Work Under the Hood

2026年10月31日に「Dev.to」が公開したITニュース「How QR Codes Work Under the Hood」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

QRコードは、白黒の四角いパターンにデータを格納する二次元バーコードだ。スマホは特徴的なパターンでQRコードを認識し、黒を1、白を0として情報を読み取る。一部が破損しても、エラー訂正機能によりデータを復元でき、正確に読み取れる。安全な利用には、リンク先の確認が重要だ。

出典: How QR Codes Work Under the Hood | Dev.to公開日:

ITニュース解説

QRコードは、日常生活で広く使われている二次元バーコードの一種だ。黒と白の小さな四角、つまりモジュールが格子状に並び、そこにさまざまな情報が隠されている。スマートフォンなどのカメラで読み取るだけで、約1秒でその中に隠されたデータが再構築され、リンクが開いたりメッセージが表示されたりする。

QRという名前は、Quick Response(素早い応答)の略で、1994年に日本のデンソーウェーブ社で自動車部品の追跡のために開発された。従来の一次元バーコードよりもはるかに多くの情報を小さなスペースに格納でき、特別な装置がなくてもスマートフォンなどのカメラで手軽に読み取れることから、瞬く間に世界中に広まった。今日では、ウェブサイトのリンク、Wi-Fiパスワード、支払い情報、チケット、連絡先など、多岐にわたる情報の伝達に利用されている。

スマートフォンがカメラでQRコードを読み取る際、まず最初に探すのは、コードの左上、右上、左下の三隅にある大きな四角い「ファインダーパターン」だ。これはまるで的のような形状をしており、コードがどんな角度で撮影されても、あるいは傾いていたり逆さまになっていたりしても、その存在と向きを正確に特定する役割を担っている。ファインダーパターンが見つかれば、コードが画面上のどこにあり、どのような姿勢で置かれているかを電話は理解できる。さらに、グリッド内部には小さな「アライメントパターン」があり、これは斜めから撮影された場合や、曲がった面に印刷されたコードであっても、その遠近法の歪みを補正し、正方形のグリッドに正確にマッピングし直す。また、ファインダーパターンの間に走る黒と白が交互に並んだ細い線は「タイミングパターン」と呼ばれ、これはコードが何行何列で構成されているかを読み取り機に伝える。これらのパターンのおかげで、私たちのスマートフォンは、遠くのポスターや手元の名刺のQRコードでも、正確に位置を特定し、情報を読み出すことができるのだ。

QRコードにデータが実際にどのように格納されているかというと、これはすべて「ビット」という形で表現される。黒いモジュールは「1」、白いモジュールは「0」という二進数の情報を示している。読み取り機は、コードのグリッドをあらかじめ決められたジグザグの順序でスキャンし、これらのビットの並びをいくつかのグループにまとめ、「バイト」として解釈する。どのような種類のデータが格納されているか(例えば、数字だけか、文字や記号も含むか)は、「モードマーカー」と呼ばれる、ファインダーパターンの近くに格納された情報によって示される。数字だけを効率良く格納する「数字モード」や、それ以外のあらゆる情報を扱う「バイトモード」などがあり、これにより多様なデータをコードに収めることが可能になる。また、コードの四隅近くには「フォーマット情報」という部分があり、ここにはコードの「誤り訂正レベル」と「マスキング」に関する情報が記録されている。これは、実際にデータ本体を読み解く前に、コード自身がどのように読み取られるべきかを読み取り機に伝える重要な役割を果たす。

QRコードの驚くべき機能の一つに、一部が破損していても読み取れる「誤り訂正」の仕組みがある。これは「リード・ソロモン誤り訂正」という数学的な手法に基づいており、コード全体のデータのうち、一部は本来のデータではなく、そのデータのバックアップコピーとして格納されているためだ。もしコードの一部が破れたり、汚れで隠されたり、あるいは中央にロゴが配置されたりしても、読み取り機は残されたバックアップデータから失われた情報を計算し、復元することができる。この誤り訂正には四つのレベルがあり、それぞれL、M、Q、Hと分けられている。レベルLは約7%、Mは約15%、Qは約25%、そしてHは約30%までのデータ破損を回復できる能力を持つ。ただし、誤り訂正レベルを高く設定すると、より多くのモジュールがバックアップデータのために使われるため、格納できる本来のデータ量は減り、結果としてコード全体の密度は高くなる。ロゴがQRコードの中央に配置されていても読み取れるのは、そのロゴが隠す部分をカバーできるよう、高い誤り訂正レベルが設定されているからに他ならない。屋外で使われる可能性のあるコードや、手で触れることの多いコードには、高いレベルHを選択するのが望ましい。

QRコードの中には、見た目がぎっしりと詰まっているものと、比較的まばらなものがあるが、これはいくつかの要因によって決まる。まず、「バージョン」と呼ばれるサイズの違いがある。QRコードは、21x21モジュールのVersion 1から、177x177モジュールのVersion 40まで、40種類の異なるサイズが存在する。保存したい情報が短いリンクであれば小さなバージョンで十分だが、長い文章を格納するにはより大きな、そしてモジュールが密に並んだバージョンが必要になる。コード生成ツールは、入力されたコンテンツに最適な最小のバージョンを自動的に選択する。次に、先ほど説明した「誤り訂正レベル」も密度の違いに影響する。高いレベルを設定すればするほど、バックアップデータのために多くのモジュールが使われるため、コードはより密に見える。さらに、格納する情報の「文字セット」も関係している。数字だけを格納する「数字モード」と比べて、小文字のアルファベットや記号を含む「バイトモード」は、同じ情報量でもより多くのビットを必要とするため、結果として密度が高くなる。最も大きなVersion 40のQRコードは、最低の誤り訂正レベルで最大4,296文字の英数字、または7,089桁の数字を格納できるとされているが、実用上は、読み取りやすくするためにできるだけ短くシンプルな内容にすることが推奨される。また、高密度なコードを読み取りやすくするための工夫として、「マスキング」という技術がある。データが配置された後、生成ツールは八つのマスクパターンの中から一つを選び、特定のモジュールを反転させる。これは、大きな黒い塊や紛らわしいパターンができてしまい、読み取り機がファインダーパターンと誤解してしまうのを防ぐためだ。これにより、データの内容によっては単調なパターンが続くことを避け、コードの視認性と読み取り精度を高めている。

読み取りやすいQRコードを作成するには、いくつかのポイントがある。まず、格納するコンテンツをできるだけ短くすることが重要だ。長いリンクよりも短いリンクを使った方が、よりまばらで読み取りやすいコードが生成される。次に、「コントラスト」を高く保つこと。黒いモジュールと白いモジュールの色の差をはっきりとさせ、例えば薄い色を背景にした写真の上にコードを置くようなことは避けるべきだ。そして、「クワイエットゾーン」と呼ばれる、コードの周囲に四モジュール幅程度の空白の境界線を必ず設けること。これは読み取り機がコードを正確に識別するために不可欠な領域だ。最後に、印刷する前に必ずテストを行うべきである。複数の異なるスマートフォンを使って、実際に使われる距離や明るさの環境でスキャンし、問題なく読み取れることを確認する。特に、画面上では問題なくスキャンできても、マットな紙に印刷されたり、店の照明下では読み取りに失敗することもあるため、事前のテストは非常に重要である。

QRコードの安全性は、そのコード自体にあるのではなく、中に含まれる「コンテンツ」に依存する。コードは、信頼できるウェブサイトのリンクを指すこともあれば、フィッシング詐欺のページや悪意のある支払い要求のページに誘導することもある。そのため、スマートフォンがコードを読み取った際に表示される「プレビュー画面」を必ず確認する習慣を身につけることが重要だ。リンク先をよく見て、それが本当に期待するウェブサイトやサービスのものと一致しているかを判断する。ポスターや駐車メーターに貼り付けられたQRコードの上から、別のコードが貼られているような場合は特に注意が必要だ。また、高額な賞品を約束したり、緊急の行動を促したりするようなコードにも警戒すべきである。QRコードの形式自体には安全性を保証する仕組みは組み込まれていないため、このプレビュー画面こそが、私たち自身の安全を守るための最終チェックポイントとなる。見知らぬ人からのメールに添付されたリンクを不用意にクリックしないのと同様に、予期せぬQRコードも慎重に扱うべきである。

QRコードが機能するためにインターネット接続が必要かという疑問を持つ人もいるかもしれないが、コードそのものはただのデータパターンであり、スマートフォンはこれをオフラインでデコードする。Webサイトのリンクのようなコンテンツの場合、そのリンク先にアクセスする際にインターネットが必要となるだけだ。単なるテキスト情報やWi-Fiのパスワードを格納したコードであれば、一切のネットワーク接続なしで利用できる。また、QRコードの見た目がそれぞれ異なるのは、格納されている内容や、前述のバージョン、誤り訂正レベルが異なるためだ。より多くのテキストを格納すればグリッドは密になり、高い誤り訂正レベルを設定すればバックアップデータのために多くのモジュールが使われる。静的なQRコードは、一度生成され印刷されれば、そのデータがパターン自体に含まれているため、物理的に破損しない限り「期限切れ」になることはない。しかし、「動的QRコード」と呼ばれるものも存在し、これはコード自体が短いリンクを指し、そのリンク先が提供するサービスに依存するため、サービスが終了したりリンクが削除されたりすれば機能しなくなる。最も多くの情報を格納できるVersion 40のQRコードは、最低の誤り訂正レベルで最大4,296文字の英数字、または7,089桁の数字を格納できると公式に規定されているが、実用上は、ほとんどの日常的なコードはより少ない情報量を持ち、短いリンクや数行のテキストが一般的である。

関連コンテンツ

関連IT用語