仕組みが分かれば、スマホなどいらぬ……ッ! 肉眼のみで解読する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/2503/10/news085.jpg 夫に「ゴミ買ったの?」と言われたハギレを並べて縫っていくと…… とんでもない完成品に「ワクワクしかない」「かわいすぎる!」
  2. /nl/articles/2503/10/news122.jpg 【べらぼう】“最後”のシーンに「最終回かと」「神回」 27歳俳優が「あんなに演技上手かったんだ……」と話題
  3. /nl/articles/2503/10/news100.jpg 新山千春の娘・もあ、高校卒業後は海外へ「ダンサーの夢に向かって」 高校最後の弁当も公開
  4. /nl/articles/2503/09/news003.jpg 「恩師ビックリするやろなぁ」 中学3年で付き合い始めた“同級生カップル”が10年後…… まさかの現在に反響
  5. /nl/articles/2503/09/news010.jpg ダイソーのセルフレジが「身に覚えのない商品」を認識→“まさかの正体”に大仰天 「そんなことあるんですね」
  6. /nl/articles/2503/08/news043.jpg グッズを高額転売された人気VTuber→「強すぎる」まさかの対処法が「天才か?」「めっちゃいい案」と560万表示
  7. /nl/articles/2503/10/news107.jpg 「お前はーーーッ!!」 マクドナルド、謎のキャラクターを“ドアップ”でネタバラシ→分かる人には分かる“顔”に「おかえりなさい!」
  8. /nl/articles/2503/10/news098.jpg 『ちいかわ』にミスド登場!? エンゼルクリーム売上好調か 「かなり売れてた」「みんな買っている」
  9. /nl/articles/2503/03/news065.jpg 【べらぼう】“問題のシーン”、「子供に見せられない」 身体張った27歳俳優へ「演技やばくない?」
  10. /nl/articles/2503/10/news034.jpg ウサギの帽子をかぶった赤ちゃんが5年後…… 同じ帽子で撮影した“現在の姿”に反響「成長って凄いですね!」
先週の総合アクセスTOP10
  1. 【べらぼう】“問題のシーン”、「子供に見せられない」 身体張った27歳俳優へ「演技やばくない?」
  2. 40代女性、デートに行くため“本気でメイク”したら…… 別人級の仕上がりに「すごいな」「めっちゃ乙女感出てる」
  3. 30年以上前の製品がかっこいい ソニーの小型ラジオのデザインが「すごい好き」「いまでも通用しそう」
  4. 幼くてかわいらしい兄妹が4年後…… 同じポーズで撮影した“現在の姿”に「これはあかん」「よすぎて声出ました」
  5. 「早く買えば良かった」 無印の1490円“本格せいろ”が690万表示の反響 「ほぼ毎日使ってる」「まっっじでいい」と感動の声
  6. ごはん炊き忘れた父「いいこと閃いた!」→完成した弁当に爆笑「アンタすげぇよ!」 息子「意味ねぇことすんなよ」
  7. 使わなくなった折りたたみ傘→切って縫うだけで…… 驚きのアイテムに変身「こうすればよかったのか!」「見事」【海外】
  8. 高3女子「進学を機にイメチェンしたい」→美容師に依頼すると…… 仕上がりが「すげえええ」「鳥肌立ちました」と1000万再生
  9. とんでもない量の糸をくれた先輩→ママがお返しに作ったのは…… 完成した“かわいいアイテム”に「絶対喜ばれるやつ!」
  10. 「洗濯機が壊れた!」→修理を頼む前によくよく調べてみると…… 「えぇ〜」“まさかの原因”が200万表示「何度もやりました」
先月の総合アクセスTOP10
  1. 最初に軽く結ぶだけで…… 2000万再生された“マフラーの巻き方”に反響「これは使える」「素晴らしいアイデア」【海外】
  2. コメダ珈琲店で朝、ミックスサンドとコーヒーを頼んだら…… “とんでもない事態”に爆笑「恐るべし」「コントみたい」
  3. パパに抱っこされる娘、13年後の成人式に同じ場所とポーズで再現したら…… 「お父さん若返った?笑」「時止まってる」2人の姿に驚き
  4. 和菓子屋で、バイトの子に難題“はさみ菊”を切らせてみたら……「将来有望」と大反響 その後どうなった?現在を聞いた
  5. 古いバスタオルをザクザク切って縫い付けると…… 目からウロコの再利用に「すてきなアイデア」【海外】
  6. 「14歳でレコ大受賞」 人気アイドルがセクシー女優に転身した理由明かす 家族、メンバー、ファンの“意外な反応”
  7. 希少性ガンで闘病中だったアイドル、死去 「言葉も発せないほどの痛み」母親が闘病生活を明かす
  8. “きれいな少年”が大人になったら→「なんでそうなったw」姿に驚がく 「イケメンの無駄遣い」「どっちも好きです!笑」
  9. ドブで捕獲したザリガニを“清らかな天然水”で2週間育てたら…… 「こりゃすごい」興味深い結末が195万再生「初めて見た」
  10. 芸能界引退した「ショムニ」主演の江角マキコ、58歳の近影にネット衝撃「エグすぎた」 突然顔出しした娘とのやりとりも話題に