Ruby+barbyでバーコードやQRコードを生成する
Ruby+barbyでバーコードやQRコードを生成する

Ruby+barbyでバーコードやQRコードを生成する

タグ
RubyQRコードバーコードGS1JANGS1-128
投稿日
July 6, 2021
著者
💩 うんち

どうも、うんちです。

仕事でバーコード(JAN, GS1-128)とQRコードを生成する必要があったのでメモ書きしておきます。

Gem は barby が必要最低限な機能をいい感じに備えていたので、今回はこれを採用しました。

目次

JANのバーコード生成

JANはEANをもとに作られた仕様なので、EANのライブラリを使うことで生成できます。

出力されるのはバーコードだけのシンプルなものです。

商品パッケージでよく見る数字が食い込んだかっこいいバーコードって作っているんだろう🤔

数字付きのものがほしいときは別途合成させる必要があるので、バーコードをPNGで書き出して mini_magick などを使って数字を合成させるのが良いかと思います。

image

↑実際に生成されるバーコード。

GS1-128のバーコード生成

GS1-128のバーコードはCODE128という仕様が使われているので、CODE128のライブラリを使うことで生成することができます。

ただし注意点として、GS1-128は純粋なCODE128と区別するためにスタートコードの直後と可変長データの直後に FUNC1 を挿入する必要があります。これがないとバーコードリーダーやシステムによってはGS1-128として扱えず、ロット番号などをパースしないということが発生してしまいます。

このことはこちらのサイトでわかりやすく解説してあります。

GS1-128は、通常のCODE128と区別するため、スタートコード(CODE-A~C)のすぐ後に[FNC1]( ファンクション1)を付加するように決まっています。 アプリケーション識別子の後に続くデータの桁数が可変長である場合にも、データの区切りを表すため、[FNC1]が付加されます。

image

↑実際に生成されるバーコード。

こちらも数字なしのシンプルなバーコードが生成されます。

数字付きのものがほしいときは別途合成させる必要があるので、バーコードをPNGで書き出して mini_magick などを使って数字を合成させるのが良いかと思います。

この例ではGTINのみ(16桁)ですが、アプリケーション識別子とともにロット番号など様々な情報を追加することができます。

QRコードの生成

image

↑実際に生成されるQRコード。

barby を使ってQRコードを生成するには rqrcode も一緒に追加する必要があります。

2つのgemを使ってやるくらいなら1つのgemで済むものがいいと思い探しましたが、結局このやり方に落ち着きました。

バーコード生成と統一感がでてわかりやすいですし、実際に記述量が増えるわけでもないのでこれでいいと思います。