QRコードは手作りできる?肉眼でも読み取れる?「QRコード手作り体験」のススメ
手計算でQRコードを作る、目と手計算でQRコードを読み取るのは授業では格好の教材
QRコードを紙とペンで手書きする。あるいは紙とペンを使ってQRコードを解読する。そんな無駄なことをして何になると思われる方も多いだろう。しかし、何かの仕組みを理解するときは、手を動かしてみるのがいちばん早く、深く理解できる。最近では、決済にまで使われるようになったQRコード。その仕組みを体感しておくのは決して無駄にならない。
手計算でQRコードを作る、目と手計算でQRコードを読み取るというのはかなり面倒な作業だが、適切なワークシートを用意してあげれば不可能ではない。ワークショップや授業では格好の教材となるはずだ。
【関連記事】「未経験だけどIT業界に転職する方法! 職種や仕事内容もご紹介」
QRコードの基本仕様とは!?
まず、QRコードの基本仕様を確認しておこう。左上、左下、右上の3カ所にあるマークは、位置検出パターン。この3つがあるため、QRコードは斜めになっていても、逆さになっていても読み取ることができる。さらに、QRコードが、曲面に貼られて、歪んでいるような場合でも補正ができる。
位置検出パターンの間にある2カ所の「10101」はタイミングパターンと呼ばれる。これにより、QRコードの座標を確認する。
このような基準パターンをうまく使って、斜めになっていたり、歪んだりしているような場合にも読み取れる工夫をしている。
水色の部分は、形式情報が格納される領域で、誤り訂正レベルやマスクパターンの種別が指定されている。左上の14マス、左下+右上の14マスには同じ内容が記述される。残りの黄色い部分にデータが書き込まれている。
誤り訂正レベルというのは、データに冗長性を持たせて、QRコードが汚れたり破損したりしても読めるようにするための工夫だ。実データと同じ内容を一定の算法で変換して格納し、冗長性を持たせている。誤り訂正レベルには4レベルあり、最低7%から最高30%までコードが読み取れなくても、データ読み取りを可能にする。一般的には15%の誤り訂正レベルを採用しているが、工場内などのタフな環境では最高の30%の訂正レベルが採用される(この場合は、誤り訂正符号が多くなり、QRコードのサイズが大きくなる)。
マスクパターンは、データの内容によって、0ばかり、1ばかりになるのを防ぐ仕組みだ。QRコードが白ばかり、黒ばかりになってしまうと読み取りが難しくなるので、なるべく白と黒が均等に現れるようにする工夫だ。一定のパターンで、指定されたドットの色を反転させる。マスクパターンは8種類用意されていて、どのパターンを使うのが最も優れているかが評価され、決定される。
手書きでQRコードを作ってみよう
こんなことを頭に入れて、手書きでQRコードを作ってみよう。ここでは、GEEKROIDという文字列をQRコード化させてみる。
先頭は、文字種と文字数を指定する。この場合英数字モードなので、規格表に従って0010で指定し、文字数は8文字なので、000001000(2進数で8)と指定する。合わせて、
0010 000001000
となる。この後に具体的なデータを加えていく。まず、GEEKROIDを数値化する。これは対応表に従う。単純に0から9までの数値はそのまま、Aが10、Bが11というものだ。
QRコードの英数字モードでは、2文字をひとつの単位として扱う。GEEKROIDであればGEが最初のデータ単位となる。最初のGを45倍して、Eに加え、これを11桁の2進数表記する。01011011110となる。
英数字モードでは、英数字と記号の45種類(2進数で6桁)の文字があるので、そのままだと、2文字を表すのに12桁が必要になる。最初の文字を45倍して合成することで、11桁に収めることができ、同じサイズのQRコードにより多くの情報を格納できるようになる。
これですべてを並べると、
0010 000001000 01011011110 01010001010 10011010111 01100110111
となる。
これをQRコードに記入していく場合は、右下から図のように、右左右左と上がっていき、上まで行ったら右左右左と下がってくる。これを繰り返していく。
データの後には、一定の算法で計算した誤り訂正符号をつけ、QRコード全体が埋まることになる。
最後に、最適なマスクパターンを適用し、指定ドットの白黒を反転させる。これでQRコードが完成する。
実際にワークショップなどの教材に使う場合、誤り訂正符号の計算が手計算では難しい。そこで、あらかじめQRコード作成ツールなどを使って出力したQRコードから、実データ部分だけを白抜きにしたワークシートを用意して、ここを手作業で埋めてもらうというような工夫をする必要がある。
既存のQRコードを目と手作業で読むのは、適切なQRコードを用意すれば不可能ではない
一方で、既存のQRコードを目と手作業で読むのは、適切なQRコードを用意すれば不可能ではない。
まず見なければならないのは、形式情報領域(水色の部分)だ。15桁あるが、重要なのは最初の5桁で、残りの10桁は誤り訂正符号になっている。
最初の5桁を読むと、00 100となる。00が誤り訂正レベルがレベルM(15%まで損失OK)であることを示し、100がマスクパターンの100が採用されていることがわかる。
右下の4マスは、文字種の指定で、マスクパターンに注意して読むと0010となり、英数字モードであることがわかる。次の9マスは文字数の指定、その後の11マスごとに2文字ずつデータが記録されている。データが終わった後には、一定の方式で計算された訂正符号で埋めつくされている。
QRコードの生成と読み取りは、実際にはかなり複雑で、すべてを手計算でやるのは難しい。特に訂正符号の計算は、電卓レベルを超えている。しかし、それ以外の部分は手作業でもなんとかなるので、フレームワークとなる教材を用意してやれば、中学生の情報科学系の部活動研究、高校生の情報科の授業や初級エンジニアのトレーニングなどに使っても面白いと思う。
QRコードの"授業案"
授業案としては、
(1)ツールで生成したQRコードから実データ部分だけを白抜きにしたワークシートを用意し、そこを手作業で埋めてもらう。
(2)簡単な内容のQRコードを生成しておき、手作業で読んでもらう。
であれば、2時間×3回程度で収まるのではないかと思う。その過程で、記数法、マスク、領域の節約手法、誤り訂正の仕組みなどの知識が身につき、さらに運用上の工夫を実感することができるはずだ。
身近になっている小さなQRコードの中に、これだけの知恵が込められることを知るのは、子どもたちや若いエンジニアにとって、貴重な経験となるはずだ。
なお、QRコードの仕様にはさまざまなルールがあるので、この記事の説明だけでは仕組みを理解するのは難しいかと思う。
キーエンスが公開している「よくわかる2次元コードの基本」、デンソーウェーブ公式のQRコード作成サイト「arara」などを、合わせて読みながら理解していただければ幸いだ。
ライター
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから