仕組みが分かれば、スマホなどいらぬ……ッ! 肉眼のみで解読する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/2410/02/news120.jpg 「泣いても泣いても涙が」 北斗晶、“家族の死”を報告 「別れの日がこんなに急に来るなんて」
  2. /nl/articles/2410/01/news047.jpg プロ警鐘「エアコン、夏が終わったらコレやらないと……」が530万再生 水漏れや“内部のスライム化”を防ぐコツが目からウロコ
  3. /nl/articles/2410/02/news185.jpg “医療ミス”で両頬に大きな火傷 「鏡見るたび涙が止まらない」フォロワー24万人のモデルが悲痛の声 「周りの目が怖い」
  4. /nl/articles/2410/02/news188.jpg 「平成に戻っちゃった」 マクドナルドが「まさかの内容」を投稿→“ネット老人会”のみなさんが思わず二度見
  5. /nl/articles/2410/03/news031.jpg 実家からヤバそうな「母のイチオシ」段ボールが届く→開けてみると…… 胸がじわっとあたたまる裏切りに「母様 最高」「愛がいっぱい詰まってる」
  6. /nl/articles/2410/03/news172.jpg 「驚愕の修理代」の金額明かす お見送り芸人しんいち、約2000万円の愛車が故障で「終わった」「お金がないです」
  7. /nl/articles/2410/02/news013.jpg 【今日の計算】「5−5÷5+5」を計算せよ
  8. /nl/articles/2410/03/news073.jpg 母が高校生娘に作る“モザイク弁当”をのぞくと…… 325万再生の芸術のような美しさとおいしそうな見た目に驚き
  9. /nl/articles/2410/03/news022.jpg 「こんなことになるなんて」 安全靴を購入→10分もしないうちに…… 買った直後に起きた“まさかの事態”に騒然
  10. /nl/articles/1809/23/news019.jpg 炊飯器いっぱいに炊けまくった米…! 「5.5合炊いて」が生んだ悲劇に「全米が泣いた」「笑いすぎてしんどい」
先週の総合アクセスTOP10
  1. ネットで大絶賛「ブラウニー」にカビ発生 業務スーパーに7万箱出荷…… 運営会社が謝罪
  2. 「全く動けません」清水良太郎がフェスで救急搬送 事故動画で原因が明らかに「独りパイルドライバー」「これは本当に危ない!!」
  3. トラックがあおり運転し車線をふさいで停車…… SNSで拡散の動画、運転手の所属会社が謝罪
  4. 「ヤヴァすぎる!!」黒木啓司、超高級外車の納車を報告 新車価格は5000万円超 2023年にはフェラーリを2台購入
  5. そうはならんやろ “ドクロの絵”を芸術的に描いたら…… “まさかのオチ”に「傑作」の声【海外】
  6. 「ウソだろ?」 ハードオフに3万円で売っていた“衝撃の商品”に思わず二度見 「ヤバいことになってる」
  7. 「結局こういう弁当が一番旨い」 夫が妻に作った弁当に「最強すぎる!」「絶対美味しいビジュアル」
  8. “メンバー全員の契約違反”をライブ後に発表 異例の脱退騒動背景を公式が釈明「繋がり行為などではなく」
  9. 「言われる感覚全く分からない」 宮崎麗果、“第5子抱いた服装”に非難飛び……夫・黒木啓司は「俺が言われてるのかな?」
  10. 大沢たかお、広大プールを独り泳ぐ“バキバキ姿”が絵になり過ぎ 盛り上がる筋肉の上半身に「50代とは思えない」「彫刻みたい」
先月の総合アクセスTOP10
  1. “緑の枝付きどんぐり”をうっかり持ち帰ると、ある日…… とんでもない目にあう前に注意「危ないところだった」
  2. 「しまむら」に行った58歳父→買ってきたTシャツが“まさかのデザイン”で3万いいね! 「同じ年だから気持ちわかる」「欲しい!」
  3. 友人に「100円でもいらない」と酷評されたビーズ作家、再会して言われたのは…… 批判を糧にした作品が「もはや芸術品」と490万再生
  4. 高校3年生で出会った2人が、15年後…… 世界中が感動した姿に「泣いてしまった」「幸せを分けてくださりありがとう」【タイ】
  5. 「ま、まじか!!」 68歳島田紳助、驚きの最新姿 上地雄輔が2ショット公開 「確実に若返ってる」とネット衝撃
  6. 荒れ放題の庭を、3年間ひたすら草刈りし続けたら…… 感動のビフォーアフターに「劇的に変わってる」「素晴らしい」
  7. 食べた桃の種を土に植え、4年育てたら…… 想像を超える成長→果実を大収穫する様子に「感動しました」「素晴らしい記録」
  8. 「天才!」 人気料理研究家による“目玉焼きの作り方”が目からウロコ 今すぐ試したいライフハックに「初めて知りました!」
  9. 「エグいもん売られてた」 ホビーオフに1万1000円で売られていた“まさかの商品”に「めちゃくちゃ欲しい」
  10. 義母「お米を送りました」→思わず二度見な“手紙”に11万いいね 「憧れる」「こういう大人になりたい」と感嘆の声