仕組みが分かれば、スマホなどいらぬ……ッ! 肉眼のみで解読するQRコード講座

必要なのは目という名のカメラ。それから、気合いと根性。

» 2018年01月31日 11時00分 公開
[QuizKnockねとらぼ]

 撮影することでURLなどを読み取れる正方形の模様、QRコード。スマホなどから利用するのが一般的ですが、どうしてもスマホが取り出せないときは、どうやって読み取ればいいのでしょうか。

 ご存じの通り、人間にも目というカメラがあります。実は文明の利器なんて使わなくても、人力で解読できるのです。それでは、QRコードリーダーをあなたの脳にもインストールしてみましょう。

今回はこのQRコードを自力で読んでみましょう(CMANで作成)

QRコードの基本構造を知ろう!

QRコードの構造。緑色部分は位置補正に必要なパターン、赤色部分はQRコードの読み取りに必要な情報(矢印の向きに読む)

 内容を読み取る前に、そのための準備作業から始めましょう。

 まず着目してもらいたいのが、QRコードの隅などにある四角形の模様です。これはカメラで読み取ったときの角度の違いを補正するためのもの。これ自体は読む必要がありませんが、周辺に重要なフォーマット情報として「誤り訂正レベル」「コード全体に施されたマスク」が書かれています。

 誤り訂正レベルというのは、コードの読み取りミスを訂正する能力のことで、4段階に設定可能。レベルが高いほど読み取りの精度が悪くても(例えばQRコードの大部分が見えなくても)正しく読み取りが行えますが、その分データ量(追加する誤り訂正符号の数)が増え、コードが大きくなります

同じ内容のQRコードを誤り訂正レベル最低(左)、最高(右)で書き分けるとこんな感じに。両方とも青い丸で一部隠れてしまっていますが、右のものなら問題なく内容が読み取れます

 マスクというのは、QRコードの黒と白をバランス良く配置するための加工のことで、8種類存在します。やたらと黒(もしくは白)が多いQRコードを見掛けないのは、このマスクのおかげです。

 今回使用するQRコードのフォーマット情報は15マスにわたって書かれています(2カ所ありますが、どちらも内容は同じ)。黒いマスを1、白いマスを0とすると「111110110101010」になります。

 ここには「101010000010010」というマスクが掛かっています。対応するマスクの数字が「1」のときは「0」に、「0」のときは「1」に反転させると、正しい情報が読み取れます。

  • 111110110101010(書かれているフォーマット情報)
  • 101010000010010(マスク)
  • 010100110111000(マスクを掛ける前の、元の情報)

 人間にはちょっと大変な作業かもしれませんが、実は誤り訂正レベルは最初の2マス、コード全体に施されたマスクの種類は次の3マスで表されており、以降の10マスは、読み取りが間違っていないか調べるための「誤り訂正符号」が書かれているだけ。今回は、読まなくて大丈夫です。

「j」は一番左の列を0とした時の列番号、「i」は一番上の行を行番号。これらを代入した式がマスクの条件として使われます

 対応表を参照すると、このQRコードの誤り訂正レベル「01」は「L(約7%の誤りまで訂正可能)」、マスクの種類「010」は「j mod 3 = 0」を指すことが分かります。

 さて、「j mod 3 = 0」という式は何でしょうか……。何やら難解ですが、この「j」は一番左の列を0としたときの列の番号を表し、「mod 3」は3で割った余りを表しています。そこで、このマスクの意味は「3で割ると0になる列番号のとき(18や21、24など)、マスの数字を反転させる」ということになります。

QRコード右下部分の拡大画像。マスクが施される列を青くしています。読まない領域(先ほどの画像の赤や緑の部分)に当たってしまったら、無視して次のマスに移ります

QRコード解読は、気合いだ!

 いよいよ実際に内容を読む段階に入ります。

 QRコードは右下から、しかもジグザグに書かれています。例えば、1マス目は一番右下にありますが、2マス目はその左隣。そして、3マス目は1マス目の上にあります。このため、目の動きは左、右斜め上、左、右斜め上……という感じ。普通の文章を読むときとは、かなり違いますね。

2列まとめてジグザグと上に読んでいき、終わったら次の2列を下に向かって読んでいきます

 1〜4マス目には、読み取った数字を文字などに変換するためのルールが書かれています。今回は「0100」で、「8ビットバイトモード」という形式で記録されていることが分かります。

 8ビットモードでサイズが25マス×25マスの場合(今回のQRコードが該当)、次の8マスには記録されている文字数が記載。そこから先が実際のデータ内容で、8マスずつ区切って読み取った2進数を、対応表を使いながら文字に置き換えていきます

文字と数字の対応関係を一部抜粋。数字は2進数から、16進数に置き換えられています

 実際に右下から読んでいくと次のようになります。

  • 0100=データモード(8ビットバイト)
  • 00011100=文字数(28文字)
  • 01101000(68/2進数→16進数に変換したもの)=h
  • 01110100(74)=t
  • 01110100(74)=t
  • 01110000(70)=p
  • 01110011(73)=s
  • 00111010(3A)=:
  • 00101111(2F)=/
  • 00101111(2F)=/

 ……「https://」と、それっぽい文字列が見えてきましたね。

 このQRコードは28文字。こんな感じで数字を読んでは表とにらめっこして、対応する文字を見つける作業を28回繰り返すと読解完了です。ちなみに、図面の左半分は読まないまま終わってしまいますが、これは読み取りミスを確認するためのデータが配置されているためです。

 さて、QRコードを人力で読む方法を解説してきましたが、難点をあえて1つだけ挙げるなら、これだと思います。

 「とにかく面倒くさい」。

 白黒の模様を2進数として読み取る作業自体はかなり単純なものですが、量が量なので簡単ではありません。しかも、その数字を文字などに変換するための対応表を丸暗記する苦労なんて、想像すらできません。こんな大変なことを一瞬でやってくれるスマホって、やっぱり便利ですよねえ……。

 ただ、暗号を解読するような面白さもあるので、パズルなどが好きな人は楽しめるかもしれません。レッツ・チャレンジ!

制作協力

QuizKnock


Copyright © ITmedia, Inc. All Rights Reserved.

昨日の総合アクセスTOP10
  1. /nl/articles/2411/19/news150.jpg 「情報を漏らされ振り回され……」とモデラー“限界声明” Vtuberのモデル使用権を剥奪 「もう支えられない」「全サポート終了」
  2. /nl/articles/2411/20/news028.jpg 「うどん屋としてあるまじきミス」→臨時休業 まさかの“残念すぎる理由”に19万いいね 「今日だけパン屋さんになりませんか」
  3. /nl/articles/2411/20/news224.jpg “ドームでライブ中”に「76万円の指輪紛失」→2日後まさかの展開に “持ち主”三代目JSBメンバー「誰なのか探しています」
  4. /nl/articles/2411/19/news169.jpg 高畑充希と結婚の岡田将生、インスタ投稿めぐり“思わぬ議論”に 「わたしも思ってた」「普通に考えて……」
  5. /nl/articles/2411/20/news031.jpg 「本当に同じ人!?」 幼少期からイボをいじられていた男性→美容師の“お任せカット”が衝撃 「めちゃくちゃ大変身」
  6. /nl/articles/2411/19/news022.jpg 「おててだったのかぁああああ」「同じ解釈の人いた笑笑」 ピカチュウの顔が“こう見えた”再現イラストに共感続々、464万表示
  7. /nl/articles/2411/20/news042.jpg 「腹筋崩壊」 ハスキーをシャンプー&パックしたら…… “予想外のハプニング”に「こ〜れは大変だわ」「沼にでも落ちたのかとwww」
  8. /nl/articles/2411/20/news216.jpg “歌姫”ののちゃん、6歳現在の姿に驚きの声「あれっ!?」「ビックリしてます!」 2歳で「童謡こどもの歌コンクール」銀賞受賞
  9. /nl/articles/2411/20/news041.jpg 黄ばみのある68年前のウエディングドレスを修復すると…… 生まれ変わった姿に「泣いた」「受け継ぐ価値のあるドレス」
  10. /nl/articles/2411/18/news107.jpg 走行中の車から同じ速さで後方へ飛び降りると? 体を張った実験に反響「問題文が現実世界で実行」【海外】
先週の総合アクセスTOP10
  1. 「飼いきれなくなったからタダで持ってきなよ」と言われ飼育放棄された超大型犬を保護→ 1年後の今は…… 飼い主に聞いた
  2. ドクダミを手で抜かず、ハサミで切ると…… 目からウロコの検証結果が435万再生「凄い事が起こった」「逆効果だったとは」
  3. 「明らかに……」 大谷翔平の妻・真美子さんの“手腕”を米メディアが称賛 「大谷は野球に専念すべき」
  4. まるで星空……!! ダイソーの糸を組み合わせ、ひたすら編む→完成したウットリするほど美しい模様に「キュンキュンきます」「夜雪にも見える」
  5. 妻が“13歳下&身長137センチ”で「警察から職質」 年齢差&身長差がすごい夫婦、苦悩を明かす
  6. 人生初の彼女は58歳で「両親より年上」 “33歳差カップル”が強烈なインパクトで話題 “古風を極めた”新居も公開
  7. 「ごめん母さん。塩20キロ届く」LINEで謝罪 → お母さんからの返信が「最高」「まじで好きw」と話題に
  8. 互いの「素顔を知ったのは交際1ケ月後」 “聖飢魔IIの熱狂的ファン夫婦”の妻の悩み→「総額396万円分の……」
  9. ユニクロが教える“これからの季節に持っておきたい”1枚に「これ、3枚色違いで買いました!」「今年も色違い買い足します!」と反響
  10. 中央道から「宇宙戦艦ヤマト」が見える! 驚きの写真がSNSで注目集める 「結構でかい」「どう見てもヤマト」 撮影者の心境を聞いた
先月の総合アクセスTOP10
  1. 50年前に撮った祖母の写真を、孫の写真と並べてみたら…… 面影が重なる美ぼうが「やばい」と640万再生 大バズリした投稿者に話を聞いた
  2. 「食中毒出すつもりか」 人気ラーメン店の代表が“スシローコラボ”に激怒 “チャーシュー生焼け疑惑”で苦言 運営元に話を聞いた
  3. フォロワー20万人超の32歳インフルエンサー、逝去数日前に配信番組“急きょ終了” 共演者は「今何も話せないという状態」「苦しい」
  4. 「顔が違う??」 伊藤英明、見た目が激変した近影に「どうした眉毛」「誰かとおもた…眉毛って大事」とネット仰天
  5. 「ごめん母さん。塩20キロ届く」LINEで謝罪 → お母さんからの返信が「最高」「まじで好きw」と話題に
  6. 星型に切った冷えピタを水に漬けたら…… 思ったのと違う“なにこれな物体”に「最初っから最後まで思い通りにならない満足感」「全部グダグダ」
  7. 「泣いても泣いても涙が」 北斗晶、“家族の死”を報告 「別れの日がこんなに急に来るなんて」
  8. ジャングルと化した廃墟を、14日間ひたすら草刈りした結果…… 現した“本当の姿”に「すごすぎてビックリ」「素晴らしい」
  9. 母親は俳優で「朝ドラのヒロイン」 “24歳の息子”がアイドルとして活躍中 「強い遺伝子を受け継いだ……」と注目集める
  10. 「幻の個体」と言われ、1匹1万円で購入した観賞魚が半年後…… 笑っちゃうほどの変化に反響→現在どうなったか飼い主に聞いた