今回はQRコードを生成します。QRコードはDENSOが開発した二次元コードです。詳細はDENSOのページで確認できます。

・QRコードとは
https://www.denso-wave.com/ja/system/qr/fundamental/qrcode/qrc/index.html

様々な用途に利用され、今では決済などにも使われるようになったQRコードですが、コマンドを使って生成することができます。コマンドを使えば大量のURLをQRコードに変換するといったこともできます。

Linux (Ubuntu) でQRコード生成 (qrcode-terminal)

 最初にLinuxでQRコードを生成してみます。環境によって何もインストールしなくてもターミナル上で生成できるコマンドがあります。ターミナルで以下のように入力してみてください。

qrcode-terminal 

もしコマンドがあれば以下の図のように表示されます。

Raspberry Piのようにコマンドがない場合は以下の図のように表示されます。

qrcode-terminalが使えるものとして進めます。使えない場合は次に説明するqrencodeをインストールします。なお、qrcode-terminalは日本語は対応していないみたいですので、文字列に日本語が含まれるとQRCodeリーダーで読み込むことができません。

qrcode-terminalの使い方は簡単でパラメーターに生成する文字列を指定するだけです。以下のようにするとLinuxの文字がQRコードとして生成されます。

qrcode-terminal 'Linux'

iPhoneのカメラで、このQRコードを読み込むと"Linux"を検索と表示されます。指定した文字が認識されているのがわかります。

この連載の目次のURLを指定すると以下のようにQRコードが生成されます。iPhoneで読み込ませると指定したURLのページが表示されます。

macOSでqrcode-terminalを使いたい場合はNode.jsをインストールした後にnpmを使ってインストールします。

Node.js
https://nodejs.org/
sudo npm install -g qrcode-terminal

Linux (Ubuntu) でQRコード生成 (qrencode)

 qroce-terminalが使えない場合はQRコードを生成するコマンドをインストールします。ここではqrencodeを使ってみます。以下のようにコマンドを入力します。

sudo apt install qrencode

途中でYesかNoか聞いてくるのでYキーを押してインストールを進めます。

無事にインストールできたら以下のようにコマンドを入力します。使用できるオプションなどの説明が表示されます。

qrencodeでLinuxの文字のQRコードを生成してみます。出力するファイル名は-oの後に指定します。ここではq1.pngとします。以下のように入力します。正常に処理されるとカレントディレクトリにq1.pngというファイルが作成されます。

qrencode -o q1.png 'Linux'

q1.pngファイルを表示すると図のようになります。iPhoneなどのカメラで読み込むとLinuxの文字が認識されているのがわかります。

ファイルの内容をQRコードにしたい場合は-rの後にファイル名(ファイルパス)を指定します。問題なく生成されるとQRコードリーダーなどで内容を読み込むことができます。

Raspberry PiでQRコード生成 (qrencode)

 Raspberry PiにはQRコード生成を行うコマンドは入っていないので以下のように入力してqrencodeをインストールします。

sudo apt install qrencode

 インストールできれば先ほど説明したようにqrencodeを使うことができます。

macOSでQRコード生成 (qrencode)

 次にmacOSでQRコードを生成してみます。一番手軽なのはHomeBrewを利用してインストールする方法です。まず、HomeBrewがインストールされていない場合は以下のようにHomeBrewのページに記載されたコマンドを入力します。しばらくするとインストールされます。

Homebrew
https://brew.sh/ja/

HomeBrewをインストールしたら以下のようにコマンドを入力します。するとqrencodeがインストールされます。

brew install qrencode

 インストールできればこれまで説明したようにqrencodeを使うことができます。

macOSのターミナルでQRコードを表示 (viu)

 viuをHomeBrewからインストールするとターミナルでQRコードを表示することができます。以下のコマンドを入力してインストールします。

brew install viu

無事にインストールできたらviuの後に表示したいQRコードの画像ファイル名(ファイルパス)を指定します。

1行単位でQRコードを生成

 最後にテキストファイルに書かれたURLをQRコードに変換してみます。複数行あれば、その数だけQRコードが生成されます。
 まず、URLが羅列されたテキストファイルを用意します。ここでは、この連載のURLを記載したテキストファイル(list.txt)を用意しました。

・list.txtの内容

https://news.mynavi.jp/techplus/series/natonakucommand/
https://news.mynavi.jp/techplus/article/natonakucommand-1/
https://news.mynavi.jp/techplus/article/natonakucommand-2/
https://news.mynavi.jp/techplus/article/natonakucommand-3/

次に以下のコマンドを入力します。正常に処理されるとq1.png、q2.png、q3.png、q4.pngの画像ファイルが生成されます。

i=1; while read -r line; do qrencode -o "q${i}.png" "$line"; i=$((i+1)); done < list.txt

なお、上記のコマンドはテキストファイルに空行があると正しく処理されないので注意してください。
ちなみにqrcode-terminalの場合は以下のように入力して処理することもできます。が、後処理が面倒なのでqrencodeで画像ファイルを生成した方が楽でしょう。

cat list.txt | qrcode-terminal

ということで、また次回。

著者 仲村次郎
いろいろな事に手を出してみたものの結局身につかず、とりあえず目的の事ができればいいんじゃないかみたいな感じで生きております。