LoginSignup
3
0

車検証のQRコードを生成してみる

Last updated at Posted at 2024-03-01

QRコードについては以下

前回は、QRコードを読み取るため、QRコードの仕組みを解説してみました。

今回は、そのQRコードを生成してみます

車検証の普通車の車検証の場合は、分割(連結)QRコードと言う仕様となっており、軽自動車および軽自動車ICカードの車検証は、通常のQRコードという仕様です。

QRコードはデンソーウェーブの登録商標です

QRコードの仕様は公開されているものの、分割QRコードがあまり利用されていないようで、QRコード生成ライブラリも分割でないQRコード生成はたくさんありますが分割できるものが有りませんでした。

そこで、zxingライブラリのjsバージョンを元に分割QRコードを生成できるようにカスタマイズしました。

車検証QRコード生成ツールは、githubにてソースコードおよびwebとしても公開してます。
image.png

動作URL(実際に動くものを確認できます)

github

またテストしやすいようにGoogle Spreadsheetを用意し、データを管理可能としています。今回は、ナンバープレートの情報と初度登録年月、型式指定番号、類別区分番号のみ書き換えできるようにしています。

image.png

B列:車種「普通自動車」 ・「軽自動車」のどちらか選択
C列:ナンバープレート情報
D列:初度登録年月 年2桁、月2桁の4桁
E列:型式指定番号
F列:類別区分番号

*Google Apps Scriptにて、列番号固定してます

コード解説

ZXing-js libraryの改修

ZXingが更新されなくなっていたので、forkして改修していこうかと思いましたが、とりあえず急ぎで対応が必要だったのもあって、buildした1つのjsファイルを色々いじってみました。

分割QRコードについては以下を参考にさせていただいています。

zxing.js
    const headerBits = new BitArray();
    // Add code page info
    const tmpbyte = 0x3; // 分割QRコードであることを示す 0x3
    headerBits.appendBits(tmpbyte, 4);
    headerBits.appendBits(page, 4);         // 分割されたページ番号 0スタート
    headerBits.appendBits(total_page - 1, 4);   // 最大pege番号(分割数 -1)
    headerBits.appendBits((parity&0xf0)>>4, 4); // parityの上位4bit
    headerBits.appendBits(parity&0x0f, 4); // parityの下位4bit         

もともと「headerBits」を定義していましたが、何もセットされていなかった、というのもあって、エンコード時の処理に上記のみです。

その他、引数で、分割数や分割位置を渡せるように改修したのみです。

google apps scriptによるデータ取得について

もっと便利に利用したいというところから、Google Spreadsheetにデータを置いておき、そのデータを取得する仕組みを作りました。

こちらは、google apps scriptで実現できます。
google apps script(GAS)は、ExcelでいうところのVBAですが、オンライン上に存在することからデプロイという作業で、WEBアクセスができます。API化できるということです。(いろんな用途でも使えそうですね)

こちらはgitに配置しています。googlespreadsheet.gs

ウェブアプリとしてデプロイすれば参照できます。

image.png

githubで公開しているので、ご利用ください。
また、ここちょっとおかしいよ、こうしたほうがいいよとか、アドバイスもいただけますと幸いです。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0