QRコードを表示する

Last-modified: Wed, 03 Sep 2014 05:25:00 HADT (1875d)

QRコードについて

 QRコード*1とは二次元コードとも呼ばれる。白と黒(色はこの二色以外もある)のドットがランダムに敷き詰められたような四角い模様のようなもので、文字データを埋め込むことができ、携帯電話のカメラで撮影するとURLを取り込めたりする。最近はすっかり「続きはWEBで」に置き換わってしまったが、一時期、電車内の広告に携帯サイトのアドレスが埋め込まれたQRコードがよく付いていたのを覚えている人も多いだろう。

上の動画はPHSのカメラでQRコードを撮影しているところ。

 では現在はもう用なしになったのかというと、私はそうでもないと思う。一時期の流行のおかげで「QRコードには大抵、携帯用サイトのアドレスが埋め込まれている」ということがユーザに半ば常識として刷り込まれており、よって、QRコードをサイトに表示しておけばそれは「当サイトは携帯表示に対応してますよ」というアピールになるからだ。会社や自宅のPCで通常のサイトを見て、外出先でふと携帯から同じサイトを見たくなったとする。PCでアクセスしたときに、携帯表示について特になにも書かれておらずQRコードもなかったサイトと、同じく携帯表示についての説明書きは見なかったもののQRコードが表示されていたサイト、どちらに携帯でアクセスしようという気になるか、それはやはり断然後者だろう。

 XOOPSはデフォルトの状態では携帯用の表示に対応していないので、ユーザは「XOOPSだから携帯に対応している」という判断はできない。よって、「WizMobile」「携帯対応レンダラー」「xmobile」などの携帯対応モジュール及びスクリプトをインストールしていたら運営者が「当サイトは携帯表示に対応している」というアピールを行うべきだろう。

QRコードを作成する

 QRコードを作成するには二つの方法がある。一つ目はQR Code Editorのようなソフトを使って、あらかじめ決めておいたURL(たとえばトップページのURL)をQRコードにするという方法。それをGIFなどで保存して任意のページに貼る。
 もう一つは、PHPなどを使ってユーザがアクセスしたページごとにURLをQRコードとして動的に生成するという方法。ユーザから注文(アクセス)があった時点で作って表示するということになる。当然、example.com にアクセスした場合と example.com/a/ にアクセスした場合ではQRコードが変わるということになる。
 どちらがいいのかというのは運営者の考え次第だが、メリットデメリットでいうなら、サイト全体の表示が遅くなることが少ないのは前者で全体の表示が遅くなる可能性があるのは後者。ただ、ネットカフェなどで実際に携帯でQRコードを取り込むユーザがいると仮定すると、どのページのQRコードを取り込んでも全部同じとなるよりはページごとのQRコードを表示した方がいいし、技術的な観点でオシム前サッカー日本代表監督風にいうなら「エレガント」なのは間違いない。

QRコードを動的に生成するには

 これもやはり二つ方法がある。一つはQRcode Perl CGI & PHP scriptsをサーバに設置して出力する方法。もう一つはGoogle Chart APIというサービスを使う方法だ。メリットデメリットはそれぞれにあり、

QRcode Perl CGI & PHP scriptsGoogle Chart API
設定、設置を一からしないといけないので面倒URLを一つ貼るだけで全部済むので楽
自分のドメインでできるので暗号化通信(SSL)で文句を言われないログインページなどを暗号化通信(SSL)にして、そのページでQRコードを表示すると一部の通信は暗号化されていません、となる
サーバに負荷が掛かるサーバに負荷が掛からない
出力できるQRコードの画像の大きさがいくつか決まっているQRコードの画像の大きさは多分自由
設置すればずっと使えるいつサービスが終わるかわからない(Googleのサービスが終わった例は多々ある)

ということになる。うちの本家では少しでもサーバの負荷を減らすためにGoogle Chart APIを使っている。

 ページごとのQRコードを出力するためには、ユーザがアクセスしたページのURLを正確にGoogle Chart APIに伝えなければならない。
 XOOPSは現在のURIを表示するための<{$xoos_requesturi}>というsmartyが使えるので、

<img src="http://chart.apis.google.com/chart?chs=任意のサイズx任意のサイズ&amp;cht=qr&amp;chl=http%3A//サイトのドメイン<{$xoops_requesturi}>&amp;choe=サイトの文字コード" width="任意のサイズ" height="任意のサイズ" alt="" />

 を、theme.htmlか常に表示されるブロック(たとえばpicoのブロック)に貼ればいい。記述にミスがなければ、ユーザがアクセスしたページのURLが含まれたQRコードが表示される。picoで表示する場合は「本文フィルター」の「Smarty(XoopsTpl)」にチェックを入れることを忘れずに。

参考サイト

 Google Chart API で QRコードも生成してくれるようになった
 PHPでQRコードを作成する | 携帯サイトをつくろう。


[PR]