撮影することでURLなどを読み取れる正方形の模様、QRコード。スマホなどから利用するのが一般的ですが、どうしてもスマホが取り出せないときは、どうやって読み取ればいいのでしょうか。
ご存じの通り、人間にも目というカメラがあります。実は文明の利器なんて使わなくても、人力で解読できるのです。それでは、QRコードリーダーをあなたの脳にもインストールしてみましょう。
●QRコードの基本構造を知ろう!
内容を読み取る前に、そのための準備作業から始めましょう。
まず着目してもらいたいのが、QRコードの隅などにある四角形の模様です。これはカメラで読み取ったときの角度の違いを補正するためのもの。これ自体は読む必要がありませんが、周辺に重要なフォーマット情報として「誤り訂正レベル」「コード全体に施されたマスク」が書かれています。
誤り訂正レベルというのは、コードの読み取りミスを訂正する能力のことで、4段階に設定可能。レベルが高いほど読み取りの精度が悪くても(例えばQRコードの大部分が見えなくても)正しく読み取りが行えますが、その分データ量(追加する誤り訂正符号の数)が増え、コードが大きくなります。
マスクというのは、QRコードの黒と白をバランス良く配置するための加工のことで、8種類存在します。やたらと黒(もしくは白)が多いQRコードを見掛けないのは、このマスクのおかげです。
今回使用するQRコードのフォーマット情報は15マスにわたって書かれています(2カ所ありますが、どちらも内容は同じ)。黒いマスを1、白いマスを0とすると「111110110101010」になります。
ここには「101010000010010」というマスクが掛かっています。対応するマスクの数字が「1」のときは「0」に、「0」のときは「1」に反転させると、正しい情報が読み取れます。
・111110110101010(書かれているフォーマット情報)
・101010000010010(マスク)
・010100110111000(マスクを掛ける前の、元の情報)人間にはちょっと大変な作業かもしれませんが、実は誤り訂正レベルは最初の2マス、コード全体に施されたマスクの種類は次の3マスで表されており、以降の10マスは、読み取りが間違っていないか調べるための「誤り訂正符号」が書かれているだけ。今回は、読まなくて大丈夫です。
対応表を参照すると、この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コードは右下から、しかもジグザグに書かれています。例えば、1マス目は一番右下にありますが、2マス目はその左隣。そして、3マス目は1マス目の上にあります。このため、目の動きは左、右斜め上、左、右斜め上……という感じ。普通の文章を読むときとは、かなり違いますね。
1~4マス目には、読み取った数字を文字などに変換するためのルールが書かれています。今回は「0100」で、「8ビットバイトモード」という形式で記録されていることが分かります。
8ビットモードでサイズが25マス×25マスの場合(今回のQRコードが該当)、次の8マスには記録されている文字数が記載。そこから先が実際のデータ内容で、8マスずつ区切って読み取った2進数を、対応表を使いながら文字に置き換えていきます。
実際に右下から読んでいくと次のようになります。
・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進数として読み取る作業自体はかなり単純なものですが、量が量なので簡単ではありません。しかも、その数字を文字などに変換するための対応表を丸暗記する苦労なんて、想像すらできません。こんな大変なことを一瞬でやってくれるスマホって、やっぱり便利ですよねえ……。
ただ、暗号を解読するような面白さもあるので、パズルなどが好きな人は楽しめるかもしれません。レッツ・チャレンジ!
●参考文献
JIS X 0510_2004 二次元コードシンボル – QRコード – 基本仕様
特集:あなたも描ける! JIS X0510準拠 QRコード超入門 – OSSHC 岡崎高校スーパーサイエンス部出典:https://headlines.yahoo.co.jp/hl?a=20180131-00000004-it_nlab-sci
QRコードの肉眼解読に対する意見
10時間前
わかる人にとっては楽しい遊び
わからぬ人にとっては訳が分からぬ
わい、高みの見物
7時間前
この記事批判する人って心の余裕無さそうね
22分前
これを知っていれば、彼に贈る手編みのセーターにQRコードを忍ばせるのも簡単ですな
46分前
そのうちとっても簡単な方程式を発見する猛者が現れる
10時間前
懐かしい!QRコード出た当初、人力解読する遊び流行った。もちろん、一部の暗号解析マニアの間だけ。
6時間前
仕組みは知っておいて良いのかもしれないけど、携帯で読み取ったほうが早くないか?
54分前
時間あるときやりたいと思います。
1時間前
記事の画像のQRコード読み込んだら、コジマさんというライターのTwitterに飛ばされた…。
2時間前
おまえはウルトラ警備隊の隊員か!
初代ウルトラマンぐらいの時代の特撮だと、コンピュータがデータを紙テープで出力してて、それを隊員が読んで「隊長!東京湾に怪獣が出現しました」とかやってるのを思い出した。
紙テープもQRコードも人間が読むものじゃないよ。
2時間前
数年前SECCONにQRコード解析の問題が出てたね。
9時間前
暇つぶしには良さそう
ロジックが判れば紙と鉛筆で自作出来そう
1時間前
目がチカチカしそうだ…
10時間前
説明下手すぎてなんのことやら。記事にする必要あんのかこれ?
10時間前
だから人間がこんなばかばかしい事をしなくて済むように、スマホが必要じゃないか。
ていうか、そもそも何でコンピュータ向けの2進法コードを、人間が肉眼で解読する必要があるか、意味が分からん。
楽しむマニアックには、勝手に遊んでてという一言。
1時間前
興味があって読み始めたけど1/3で挫折した
3時間前
仕組みについては元記事の方でしっかり読ませていただきました。
でも、肉眼で解読する行為は、よほどの事が無い限りやらないですが、こういうのがあるよ、というのを知識として頭に入れておくと、話のネタになりますねw
28分前
もう少しわかりやすく頼む(笑)
50分前
暇な時に手書きでQRコードを作ってみよ。
47分前
そんな暇じゃないです。
11時間前
電卓があるのに筆算するみたいな無駄な努力(笑)
1時間前
いや、それでも難過ぎwww(笑)!
1時間前
暇人か?…( ̄▽ ̄;)
10時間前
> 「とにかく面倒くさい」。
難解で読むのも面倒くさかった
人気のコメント