Diff of QRコードを表示する


*QRコードについて [#i8d68b0d]
 QRコード((QRコードは(株)デンソーウェーブの登録商標です))とは二次元コードとも呼ばれる。白と黒(色はこの二色以外もある)のドットがランダムに敷き詰められたような四角い模様のようなもので、文字データを埋め込むことができ、携帯電話のカメラで撮影するとURLを取り込めたりする。最近はすっかり「続きはWEBで」に置き換わってしまったが、一時期、電車内の広告に携帯サイトのアドレスが埋め込まれたQRコードがよく付いていたのを覚えている人も多いだろう。
#u2b(http://www.youtube.com/watch?v=VXev4Loo6Pw&feature=youtube_gdata)
上の動画はPHSのカメラでQRコードを撮影しているところ。

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

 XOOPSはデフォルトの状態では携帯用の表示に対応していないので、ユーザは「XOOPSだから携帯に対応している」という判断はできない。よって、「[[WizMobile>http://www.gusagi.com/modules/download/wizmobile.html]]」「[[携帯対応レンダラー>http://xoops.hypweb.net/modules/xpwiki/383.html]]」「[[xmobile>http://www.bluemooninc.biz/~xoops/modules/mydownloads/singlefile.php?cid=4&lid=53]]」などの携帯対応モジュール及びスクリプトをインストールしていたら運営者が「当サイトは携帯表示に対応している」というアピールを行うべきだろう。
**QRコードを作成する [#z6ceaf18]
 QRコードを作成するには二つの方法がある。一つ目は[[QR Code Editor>http://www.psytec.co.jp/docomo.html]]のようなソフトを使って、あらかじめ決めておいたURL(たとえばトップページのURL)をQRコードにするという方法。それをGIFなどで保存して任意のページに貼る。
 もう一つは、PHPなどを使ってユーザがアクセスしたページごとにURLをQRコードとして動的に生成するという方法。ユーザから注文(アクセス)があった時点で作って表示するということになる。当然、example.com にアクセスした場合と example.com/a/ にアクセスした場合ではQRコードが変わるということになる。
 どちらがいいのかというのは運営者の考え次第だが、メリットデメリットでいうなら、サイト全体の表示が遅くなることが少ないのは前者で全体の表示が遅くなる可能性があるのは後者。ただ、ネットカフェなどで実際に携帯でQRコードを取り込むユーザがいると仮定すると、どのページのQRコードを取り込んでも全部同じとなるよりはページごとのQRコードを表示した方がいいし、技術的な観点でオシム前サッカー日本代表監督風にいうなら「エレガント」なのは間違いない。
**QRコードを動的に生成するには [#c5c2eae4]
 これもやはり二つ方法がある。一つは[[QRcode Perl CGI & PHP scripts>http://www.swetake.com/qr/qr_cgi.html]]をサーバに設置して出力する方法。もう一つは[[Google Chart API>http://code.google.com/intl/ja/apis/chart/]]というサービスを使う方法だ。メリットデメリットはそれぞれにあり、
|''QRcode Perl CGI & PHP scripts''|''Google Chart API''|
|設定、設置を一からしないといけないので面倒|URLを一つ貼るだけで全部済むので楽|
|自分のドメインでできるので暗号化通信(SSL)で文句を言われない|ログインページなどを暗号化通信(SSL)にして、そのページでQRコードを表示すると一部の通信は暗号化されていません、となる|
|サーバに負荷が掛かる|サーバに負荷が掛からない|
|出力できるQRコードの画像の大きさがいくつか決まっている|QRコードの画像の大きさは多分自由|
|設置すればずっと使える|いつサービスが終わるかわからない(Googleのサービスが終わった例は多々ある)|
ということになる。うちの本家では少しでもサーバの負荷を減らすためにGoogle Chart APIを使っている。

 ページごとのQRコードを出力するためには、ユーザがアクセスしたページのURLを正確にGoogle Chart APIに伝えなければならない。
 XOOPSは現在のURIを表示するための<{$xoos_requesturi}>というsmartyが使えるので、
#pre{{
<img src="http://chart.apis.google.com/chart?chs=任意のサイズx任意のサイズ&amp;cht=qr&amp;chl=http%3A//サイトのドメイン<{$xoos_requesturi}>&amp;choe=サイトの文字コード" width="任意のサイズ" height="任意のサイズ" alt="" />
<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>http://xoops.peak.ne.jp/md/mydownloads/singlefile.php?lid=96&cid=1]]のブロック)に貼ればいい。記述にミスがなければ、ユーザがアクセスしたページのURLが含まれたQRコードが表示される。picoで表示する場合は「本文フィルター」の「Smarty(XoopsTpl)」にチェックを入れることを忘れずに。
***参考サイト [#o27ce5cc]
 [[Google Chart API で QRコードも生成してくれるようになった>http://chalow.net/2008-07-04-3.html]]
 [[PHPでQRコードを作成する | 携帯サイトをつくろう。>http://www.plusmb.jp/2009/01/23/2116.html]]

[PR]