開発: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