goでQRコード生成(終了)

開発:PNGの生成がgoでサクッとできちゃうことがわかったので、QRコードの生成を考え始めました。規格としては、JIS X 510:2018です。ざっと眺めたのですが、これは結構骨かなと。

社長:おおー。規格協会がタダで見せてくれるPDFの質もずいぶんまともになったね。以前は劣化したFaxのようだったものですが。

開発:115ページあるし、なんだか気がノリません。原理を説明している仕様書としては面白いと思うのですが、これをただ実装するのって、ジューシーじゃないというか、遊べる隙間が無いと言うか、人生をロスする気がします。

社長:まあうちはとりあえず、ありきたりのQRコードを生成するだけのユーザだからね。ひょっとして、go のライブラリにあったりしないかな。

基盤:調べてみます。

*** 数分経過 ***

基盤:ありました。barcode というパッケージですね。ライセンスはMIT。Githubで配られているんですが、ここってGoの開発者向けサイトの一環みたいで、今年2020年1月のGoの公式ブログからリンクされてます。で、そのページにある利用例がこれです。

package main

import (
	"image/png"
	"os"

	"github.com/boombuler/barcode"
	"github.com/boombuler/barcode/qr"
)

func main() {
	// Create the barcode
	qrCode, _ := qr.Encode("Hello World", qr.M, qr.Auto)

	// Scale the barcode to 200x200 pixels
	qrCode, _ = barcode.Scale(qrCode, 200, 200)

	// create the output file
	file, _ := os.Create("qrcode.png")
	defer file.Close()

	// encode the barcode as png
	png.Encode(file, qrCode)
}

で、これを走らせると、こういうPNGができました。

社長:おお、iPhoneのカメラをかざすと「Hello World」と認識されます。

基盤:「http://its-more.jp」で作ると、こんな感じ。見た目にも情報量が増えてますね。

ついでに、空文字列だとこんな感じ。これがミニマムでしょうか。

逆に長い文字列、ここではこのプログラムの LICENSE ファイルの600文字くらいを食わせてみましたが、こんな感じです。

それと、こんなふうにボカしても認識できますね。

開発:おおー、素晴らしい! これは助かりました。美しい人生よ、限りない喜びよ。

社長:この胸のトキメキをあなたに。やっぱりあったんですね。まあ、そんなこともあろうかと思って png-go.com というドメインは取って置きました。ピンゴ!(笑)

基盤:必要なのは QR にちなんだドメイン名ですよね。

営業:何かの商売になりますかね?

経理:それって、いつもの安かろうもんのXSOnamae じゃなくて N. Sol. で取ったのはなぜですか?

社長:それがXSOがこのドメインについては何かトラブってましてね、なんか失敗する。で、NSOにいったらさくっと取れまして。XSOの表示の3倍以上の値段でしたねー。さすがドメイン商法の家元!(笑)

経理:… なぜか使われた口座も当社メインバンクじゃなくて、ジャパネット系でした。

社長:それがねー、メインバンクのお上品銀行は、なんか海外送金がダメなんですよ。箱入りなんでしょうかねぇ。2行作っといてよかったです。

2020-0519 SatoxITS

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です