今月もほとんど更新できず、申し訳ありません。

先日、Android携帯(スマートフォン)を買いました。いろいろといじりたいところですが、仕事の緊急連絡用に使うので、あまり無謀なことはできません。Androidマーケットで無料配布されている「QRコードスキャナー」が結構よかったので、いろいろなQRコードを読み込んで遊んでいました。

そこで、UbuntuでQRコードは作れるのか?と疑問に思い、調べてみたところ、「qrencode」というパッケージを発見。…したのですが、コマンドラインでしか使えないので、安直ですがzenityでGUIフロントエンドを作ってみました。PythonとかPerlでも作れると思いますけど、面倒なので手抜きしました、すみません(笑

QRmake-manual
←作成したQRコードの例。後述のスクリプトの使用法が書かれています。

qrencodeのインストール

ソフトウェアセンターかSynapticパッケージマネージャで「qrencode」を検索して入れるか、または、下記のコマンドでインストールします。

$ sudo apt-get install qrencode

qrencodeコマンドのオプション

代表的なオプションは以下のとおりです。

【「-o」オプション】
出力する画像ファイル名を指定する。

【「-l」オプション】
誤り訂正レベル (Error Correction Level):L,M,Q,Hの4レベルが指定できる。デフォルトは「L」。

 L - コード語の約7%が復元可能
 M - コード語の約15%が復元可能
 Q - コード語の約25%が復元可能
 H - コード語の約30%が復元可能

【「-s」オプション】
ドットのサイズをピクセル単位で指定できる。デフォルトは「3」。

【「-m」オプション】
余白の幅を指定できる。デフォルトは「4」。

【「-v」オプション】
型番(Version)を指定できる。デフォルトは「auto」。型番(Version)というのは、1から40の番号で表されるシンボルの大きさ。最小は「型番1」の21×21モジュールで、最大は「型番40」の177×177モジュール。

(注意) モジュール (Module)とは:QRコードのシンボルを構成する最小の単位セル。モジュールの大きさは型番により決定され、データの1ビットが1モジュールに相当する。

QRmake

zenity(Gnomeに付随する簡易なGUIツール)と、この「qrencode」コマンドを利用して、作成したのが次のスクリプトです。下記のコードを「QRmake」という名前で保存して実行権を与えれば、ダブルクリックして「実行」ボタンを押すだけでGUIプログラムが起動します(Ubuntu11.04で動作確認済み)。

#!/bin/bash

# QR Code Generator created by vine_user 2011-06-25

you=`whoami`
outpath=`zenity --entry --title="保存する場所は?" --text=" QRコードの画像を保存する場所をフルパスで指定してください。 \n\n 何も指定しなければ /home/$you/ピクチャ に保存されます。"`
button0=$?
if [ $button0 -eq 0 ];then
if [ -z $outpath ];then
outpath=/home/`whoami`/ピクチャ
fi
pname=`zenity --entry --title="ファイル名は?" --text=" ファイル名は何にしますか?\n 拡張子は不要(png形式になります) "`
button1=$?
if [ $button1 -eq 0 ];then
if [ -z $pname ];then
zenity --warning --title="失敗!" --text=" ファイル名を入力してください。終了します。"
else
content=`zenity --entry --width 200 --height 50 --title="コード化する文字列" --text=" QRコードに変換したい文字列を入力してください。 "`
button2=$?
if [ $button2 -eq 0 ];then
if [ -z $content ];then
zenity --warning --title="失敗!" --text=" 何か文字を入力してください。終了します。"
else
qrencode -s 10 -o "$outpath"/"$pname".png "$content"
zenity --info --title="成功!" --text=" QRコードは\n\n  $outpath/$pname.png  \n\n に保存されました。\n"
fi
else
zenity --info --title="キャンセル" --text=" QRコードの内容をキャンセルしました。 \n\n 終了します。 "
fi
fi
else
zenity --info --title="キャンセル" --text=" QRコードのファイル名をキャンセルしました。 \n\n 終了します。 "
fi
else
zenity --info --title="キャンセル" --text=" QRコードの保存先をキャンセルしました。 \n\n 終了します。 "
fi

※ 追記
Fedora15でもqrencodeをインストールすれば使えることがわかりました。上のスクリプトをFedoraで利用する場合は、Fedoraのフォルダ名に合わせて「ピクチャ→画像」と置き換えてください。


使い方は…

QRmake-manual
←これを携帯やスマートフォンで
 読み込んでみて下さい(笑



これだけでは申し訳ないので、画面で紹介しておきます。説明表示を日本語でわかりやすくしておいたので、実行していただければわかると思います。

QRmake-1完成した画像の保存場所を指定します。デフォルトはホームディレクトリの「ピクチャ」フォルダになってます。

QRmake-2ファイル名を入力します。拡張子は不要です。何も入力せずに「OK」をクリックしてしまうと、エラーになります。

QRmake-3変換したい文字列を入力。携帯の感度にも依存しますが、日本語フォントで400字程度が限界。URLでもOKです。

QRmake-4成功すると、この画面になるはずです。


えーと、ここまで書いておいて、非常に言いづらいのですが…。実はWEBサービスでQRコードを作れるところが結構あることを知ってしまいました。驚いたのは、QRコードでブログを書いてる人がいたことですね。あまり長文はかけないでしょうけど、Twitter程度なら十分いけます。

あと気になるのは、バーコードですが、スタイルファイルを追加すれば、TeXのコマンドでも作成可能です。機会があれば紹介します。