perl で QRcode生成

2012/6/7 [17:16:16] (木) 天気

perlは本当にスゲー。こんなのないかな、あるかな、と思ったら、ほとんどすでにCPANに登録されている。ほかの lightweight language の状況は知らないので比較できないけど、perlがあればほとんど用が足りてしまうんじゃないか。

てことで、QRコードの生成。


創作文芸見本誌会場HappyReadingのスマホ版を作ったことだし、スマートフォンで見てもらえるように、誘導したい、というのが目的。スマートフォンでちまちまURLを入力するのはうっとーしーんで、QRコードの出番だろう、と。

レンタルサーバーのlolipopには GD モジュールと一部の関連モジュールはインストールされているらしい。ただ、ここで肝心の、QRコードがインストールされていないので、CPANからもってきた。

CPAN http://search.cpan.org/~kwitknr/GD-Barcode-1.15/

↑これをダウンロードして解凍展開。中を見ると、何かをコンパイルするワケでもなく、ただ所定のディレクトリにコピーしてるだけの pure perl モジュール。そのままlolipopにFTPでアップロードしたら、問題なく使えた。


use GD::Barcode::QRcode;
binmode STDOUT;
print qq{Content-type: image/png\n\n};
print GD::Barcode::QRcode->new(STRING,
    {Ecc=>M, Version=>10, ModuleSize=>2})->plot->png;

コードは、これだけ。

STRINGの部分にURLとかテキストを入れる。日本語もOKだけど、検索してみると、ガラケーはSHIFT JIS なので、文字コードを SHIFT JIS にしていることが多い。

これで、QRコードの画像 png を出力してくれるので、img タグに、このスクリプトのURLを書いておけばいい。ちょっと調べたのがQRコードの仕様。

ECC というは、エラー修復レベル。

アウトドアなど汚れ・破損が激しそうなところで使う場合には Hレベル(修復30%)、などなど修復できるレベルがあるので、それを指定する。

ModuleSize というのは、文字通りセルサイズ。

ひとつひとつのセルのサイズを指定できる。

Version・型番というのはセル構成=セル数。

1~40まであって、大きいほど記録する文字数が増える。

て、ウチみたいな素人ヨタ話のブログを見るより、開発者の一次情報を確認しましょう。

QRコードドットコム


画像を生成して表示するのに、ほんの少し時間がかかるので、サイトではajaxを使ってスクリプトを呼び出すようにした。情報としては、URLとサークル名、本のタイトル。

スマホのQRコードで読み取って、URLに飛ぶとその本のページが開く。おお、これは便利だ。便利なはずだ。きっと。だがしかし。


QRコードの活用例として、流通の現場で商品の確認とか、製造の現場での商品トレースとか、バス停で時刻表とか、有効に活用されている。たとえば、WEBへ誘導するのに、チラシや名刺にQRコードがプリントされていたら便利。だけど、サイト上にQRコードを表示して、さてそれってどうなの?PCでサイトを見ていて、そのページをスマートフォンでも見てみたい、というリクエストがそんなにあるとは思えない。

QRコードが使えるのでとりあえずつけてみました感が漂う。


WEBサイト上にQRコードが表示してあって、こいつは便利だぜ、待ってたぜ、という事例があったら、ぜひ教えてください。


<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】