ニュース
» 2018年01月31日 11時00分 公開

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

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

[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/2111/30/news172.jpg 46歳と18歳の内田有紀、“2人そろって”『STORY』表紙へ 「自分の妹と撮影しているみたい」
  2. /nl/articles/2111/30/news032.jpg 黒猫「おしぼり いりませんか」 とっておきの宝物を配達してくれる黒猫サービスが「何枚でももらいたい」ほどかわいい
  3. /nl/articles/2111/30/news093.jpg 「素敵なカップル」「ラブラブじゃん」 上地雄輔、“元カレ”松坂大輔との2ショット&ダンス動画に反響
  4. /nl/articles/2111/30/news142.jpg 原日出子、長男とウオーキング 仲むつまじい親子ショットに「優しい息子さん」「めっちゃイケメン」などの声
  5. /nl/articles/2111/29/news184.jpg 橋本愛、「青天を衝け」栄一の再婚に戸惑うファンをフォロー 吉沢亮との秘蔵2ショットに粋な一言を添える
  6. /nl/articles/2111/30/news145.jpg ゴマキ弟・後藤祐樹、拳交えた朝倉未来のアフターフォローに感激 “妻号泣”のサプライズが大反響「感動しました」
  7. /nl/articles/2111/29/news130.jpg 【漫画】「おべんとうに にどと とんかつをいれない」 6歳娘の威圧感たっぷりな抗議文に「かわいすぎますね(笑)」の声
  8. /nl/articles/2111/29/news101.jpg 「目が覚めたかね」「猫になった気分はどうだ?」 猫医者のような見下ろす猫に脳内アフレコする人続出
  9. /nl/articles/2111/30/news053.jpg 「永遠に見ていられる」「可愛くて泣ける、もん絶級」 保護猫4兄妹の“こしょこしょぱっ”がかわいすぎて胸が苦しい
  10. /nl/articles/2111/29/news181.jpg 【その視点はなかった】夫「惑星を英語でいえるなんて天体詳しいね」 → 今の30代日本女性は大概答えられるんだよ……

先週の総合アクセスTOP10

先月の総合アクセスTOP10

  1. 池田エライザ、 “お腹が出ている”体形を指摘する声へ「気にしていません」 1年前には体重58キロ公表も
  2. 「前歯を取られ歯茎を削られ」 広田レオナ、19歳デビュー作で“整形手術”を強制された恐怖体験
  3. ゴマキの弟・後藤祐樹、朝倉未来とのストリートファイトで45秒負け 左目腫らした姿を自ら公開し「もっと立って闘いたかった」
  4. 清原和博の元妻・亜希、16歳次男のレアショットを公開し反響 「スタイル抜群」「さすがモデルの遺伝子」
  5. 小林麻耶、おいっ子・めいっ子とのハロウィーン3ショットに反響 元気な姿に安堵の声が続々「幸せそうでなにより!」
  6. カエルに普段の50倍のエサをあげた結果…… 100点満点のリアクションに「想像以上で笑った」「癒やされました」
  7. 「左手は…どこ?」「片腕が消えてる」 中川翔子、謎が深まる“心霊疑惑”ショットにファン騒然
  8. 「家ではまともに歩けてない」 広田レオナ、左股関節に原因不明の“炎症” 夫から「凄い老けたと言われてます」
  9. 小林麻耶、髪ばっさりショートボブに「とても軽いです!」 ファンも反応「似合います」「気分も変わりますよね!」
  10. キンタロー。浅田舞の社交ダンス挑戦を受け体格差に驚がく 「手足が長い!!」「神様のイタズラがすぎるぞ!!」