GAEでQRコードを使う。

GAEでQRコードを使いたいなぁと思い、Debianにpython-qrencodeパッケージがあるので、早速試してみた。

import qrencode
from google.appengine.ext import db

class HogeDB(db.Model):
    qrcode = BlobProperty()

(snip)

    hoge = HogeDB()
    hoge.qrcode = qrencode.encode_scaled("hoge",100)[2]

な感じで生成したQRコードのイメージをGAEのデータストアに格納したれ、と思ったらできなかった。

理由は、そもそもqrencodeが使えなかった。python-qrencodeが、Cで書かれたライブラリlibqrencode3のバインディングだったため。GAEってpure Pythonしかダメなのか。 [1]

http://code.google.com/intl/ja/appengine/docs/python/overview.html

インタープリタは純粋な Python 環境であるため、C コードが記述された Python モジュールを読み込めません。

で、他の手段無いかなぁと、こんなtweetを発見。

https://twitter.com/#!/najeira/status/505204424318976

#appengine でQRコード作るためにpure Pythonのライブラリ探しかけたが、Google Chart API大先生がいらっしゃったのを思い出した。

というわけで、Google Chart APIを使って、無事、こんなやり方でできましたよと。 [2]

<img src="http://chart.apis.google.com/chart?cht=qr&chs=200x200&chl={{hoge}}" />

データストアに格納するのやめて、直接img要素で表示させることにした。こっちの方が簡単ですな。

[1]なので、python-qrencodeのコードやqr_encode.soとか、libqrencode3パッケージのlibqrencode.so.3とか持っていってももちろん使えない。
[2]Debian全く関係ない…。