2023/08/14

ノーツで QR コード:#4)QR コードの生成手順

構造や構成要素が見えてきました。今回は、いよいよ、生成手順の調査です。


参考にさせていただいたのは、こちらのサイトです。

QRコードをつくってみる


QR コードの作成手順を中心に必要な知識やデータが整理されています。また、処理の過程も具体的に例が示されており、わかりやすく構成されています。ところどころリンク切れがあったのは残念ですが、長く存在するページですから仕方がないですね...


このサイトを順に読み進めます。

まず、新たな用語『バージョン』が出てきました。今回調査している QR コードモデル2において、バージョンは、1~ 40 まで存在します。バージョンが1つ上がるごとに4マス(モジュールという)増える仕組みで、生成される QR コードは、一辺が 21 ~ 177 マスになるそうです。


続いて、2ページ目では、モードと文字数の指定方法、データの2進数化の手順が記載されています。QR コードでは、データを 8 ビット単位で処理するようで、不足する場合は、0 のビットをセットします。

次に、バージョンと誤り訂正レベルに応じて、必要なデータコード数(?)が決まり、不足する場合は、11101100 と 00010001 を交互に付加するようです。

少し雲行きが怪しくなってきました。また、漢字に関する記載もありません。ただ、このあたりはパターンなので、他のサイトも参考にできるかと思い、先に進みます...


いよいよ、ボスの誤り訂正の登場です。

まず、QR コードでは、リード・ソロモン誤り訂正方式を使用しているそうです...。聞いたことがありませんが、情報システムに携わる者として、知っておくべきと判断し、後で調べることとして読み進めます。

ところがその直後に脱落決定です。以下の一文が引用されていました。JIS の規定だそうです。

QRコードの多項式は2を法とする算術および100011101を法とする 算術(体の原始多項式 x8+x4+x3+x2+1 の係数を示す100011101を持つ 28のガロア体)を使用して求める。データコード語は多項式の項の係数で 最高次項を最初のデータコード語とする。誤り訂正コード語はRS誤り訂正で 使用される多項式g(x)によってデータコード語を除算して得られた剰余とする。

2を法とする?原始多項式?ガロア体?データコード語?最高次項?

数学の話なのか、IT の話なのか、国語の問題なのかも判別できません。サイトでは、この後延々と解説がありますが、私の力不足を痛感しました。数学は嫌いではないのですが、得意ではないことを思い出しました...


以降は、データの配置やマスク処理に関して記載されています。ざっと読んだ感じ、何とかなりそうな気がします。残念ながら、後の祭り状態です...


まとめ

コピペ職人にはなりたくないと、仕組みの理解を試みましたが、1つ目の目標はクリアできませんでした。

数回にわたってまとめた結末がこんな結果で申し訳なく思いますが、調べたことをメモっておきたくて記載しました。ご容赦くださいませ。

次回からは、既存ライブラリをノーツに移植し、QR コードを作成する方法についてまとめます。

前回 ノーツで QR コード 次回

0 件のコメント:

コメントを投稿