QRコードを肉眼解読する方法まとめ
スポンサーリンク

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

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

こいつ……読めるぞ!

 撮影することで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コード出た当初、人力解読する遊び流行った。もちろん、一部の暗号解析マニアの間だけ。

名無しさん
説明下手すぎてなんのことやら。記事にする必要あんのかこれ?

名無しさん
わかる人にとっては楽しい遊び
わからぬ人にとっては訳が分からぬ
わい、高みの見物

名無しさん
だから人間がこんなばかばかしい事をしなくて済むように、スマホが必要じゃないか。
ていうか、そもそも何でコンピュータ向けの2進法コードを、人間が肉眼で解読する必要があるか、意味が分からん。
楽しむマニアックには、勝手に遊んでてという一言。

名無しさん
暇つぶしには良さそう
ロジックが判れば紙と鉛筆で自作出来そう

名無しさん
この記事批判する人って心の余裕無さそうね

ゆーくん
仕組みは知っておいて良いのかもしれないけど、携帯で読み取ったほうが早くないか?

名無しさん
仕組みについては元記事の方でしっかり読ませていただきました。
でも、肉眼で解読する行為は、よほどの事が無い限りやらないですが、こういうのがあるよ、というのを知識として頭に入れておくと、話のネタになりますねw

名無しさん
おまえはウルトラ警備隊の隊員か!
初代ウルトラマンぐらいの時代の特撮だと、コンピュータがデータを紙テープで出力してて、それを隊員が読んで「隊長!東京湾に怪獣が出現しました」とかやってるのを思い出した。
紙テープもQRコードも人間が読むものじゃないよ。

いっちゃん
数年前SECCONにQRコード解析の問題が出てたね。

名無しさん
暇人か?…( ̄▽ ̄;)

名無しさん
記事の画像のQRコード読み込んだら、コジマさんというライターのTwitterに飛ばされた…。

名無しさん
いや、それでも難過ぎwww(笑)!

名無しさん
興味があって読み始めたけど1/3で挫折した

名無しさん
目がチカチカしそうだ…

スポンサーリンク


こちらの記事も人気です!!