QRコード
2015年08月10日
【経緯】
札幌で毎年開催されている、IT系技術者向けの合宿型イベント「Code 2015」に参加していた。こちらでは毎年お題(問題)を出題するコーナーがあるのだが、そのときに出題された問題で、「大量のQRコードが画像として与えられ、それが何を意味しているのかを見つける」というものがあった。
それに私は心血を注いで寝る間を惜しんで取り組んでいたのだが、ぐぐって見つけたQRコード読み込みのライブラリを利用しても、画像処理の問題なのか規格への対応度の問題なのか読み込めない画像が多く[注1]、そこで詰まって一番面白いところに取り組めないまま[注2]タイムアップとなってしまった。
最後の答え合わせの際、そこで詰まっていた自分は他の方々にどんなライブラリを使ったのか尋ねたのだが、「ライブラリではなく、ZBarのコマンドラインツールを使った」という方がいて、コマンドラインツールということに気付けなかった自分はとてつもない敗北感を感じたのだった。ちなみに出題者は「自分の環境で試した際はZBarのライブラリを使っていて、即座に読み込めたので、他の人に解いてもらう時にそれが問題になるとは考えてなかった」とのことだった。
ただ、当日ぐぐった結果や、後で「QRコード 読み取り コマンドライン」や「QRコード 読み取り CUI」などでぐぐっても、ZBarは上の方に出なかったので、これは当日気づくのは難しかったのではないかと感じた次第であった。
ということで、読み取り精度のよいQRコード(とバーコード)読み取りライブラリ「ZBar」を紹介します。(プログラム例等はないのであしからず)
【紹介】
ZBar bar code reader公式サイトの記述によると、
use it stand-alone with the included GUI and command line programs(同梱のGUI・コマンドラインプログラムでそれ単独で利用する)
easily integrate a bar code scanning widget into your Qt, GTK+ or PyGTK GUI application(Qt・GTK+・PyGTKといったGUIアプリケーションにバーコードスキャン機能を付加する)
leverage one of the script or programming interfaces (Python, Perl, C++)(スクリプトやプログラミングインターフェイスに投入する (Python, Perl, C++))
...all the way down to a streamlined C library suitable for embedded use.(これ全体が、組み込み用途でも使えるような効率的に動作するCのライブラリとなっている)
と説明されている。
また、Windows向けバイナリが提供されているのはWindowsユーザにはうれしいところである。(オープンソースのライブラリでは、ソースコードからのコンパイルが前提になっているものもよくあるので、その場合Windows環境では何かと面倒が多い)
【おわりに】
Zbarはもっとぐぐった結果上位に出るようにならないですかねえ。ということで、地道にプッシュしたいがためにとりあえずこの記事を書いたのでした。[注1] 私は使っていたパソコンの開発環境の関係で、Javaや.NET向けのものを使うのが難しく、最初はC++やPure Rubyなどで動くものを探していた。試してみたのはlibdecodeqr(C++)やqrio(Pure Ruby)だったが、正しく処理できない画像が多数見受けられた。なおぐぐって先頭に出たものはZXingであったのだが、最初これはJava向けということで断念しており、その後C++版があることに気付いたのだが時間の都合で利用方法を理解するに至らず断念している。
[注2] 実際には、QRコードを読み取った結果が他のフォーマットになっているなど、そういった謎解きを楽しむ問題になっていたのだが、その謎解きの部分に辿り付けなかったのである。