QRコードを大量生産して段ボールの中身を見える化しよう

押し入れの中に段ボールがたくさん入っていて、何が入っているのか分からなくなったことはないだろうか。そこで、QRコードを使って、押し入れの整理を実行しよう。今回は、無料のPython実行環境Google Colaboratoryを使って、大量のQRコードを生成してみよう。

段ボール整理にQRコードを使うアイデア

段ボールなどの整理にQRコードが大活躍する。その方法だが、QRコードには、様々な文字を埋め込むことができる。そのため、段ボールの中身を撮影した写真のURLをQRコードに埋め込むことができるのだ。つまり、段ボールを開けなくても、段ボールに貼り付けたQRコードをスキャンすることで、段ボールの中身の写真を確認できるという訳だ。

なお、写真のURLを得る方法だが、Googleドライブを使うのが簡単だ。段ボールの中をスマートフォンで撮影しておこう。そして、写真をGoogleドライブに保存する。すると、写真の「リンクをコピー」できるようになる。このリンクは、GoogleドライブへのリンクURLだ。このURLをQRコードに埋め込む。

難しくないが、改めて手順を確認してみよう

(1) スマートフォンなどで段ボールの写真を撮影
(2) 写真をGoogleドライブに保存
(3) ドライブでリンク(URL)をコピー
(4) URLをQRコードに変換
(5) 段ボールに印刷したQRコードを貼り付ける
(6) スマホのQRスキャナーでQRコードを読むと写真が確認できる

ところが、生成したURLをもとにQRコードの画像を生成するの面倒な作業だ。そこで、今回は、Pythonを利用して、大量のURLを元にして、QRコード画像を生成する方法を紹介する。

無料のPython環境Colaboratoryでやってみよう

それでは、無料のPython実行環境のColaboratoryにアクセスして作業を開始しよう。

まずは、ColaboratoryのURLにアクセスする。利用には、Googleアカウントが必要だ。ログインすると、ファイル一覧ダイアログが表示される。そこで、画面下にある「PYTHON 3の新しいノートブック」をクリックしよう。

  • 新しいノートブックを作成しよう

    新しいノートブックを作成しよう

qrcodeライブラリのインストール

Pythonには「qrcode」モジュールがあるので、比較的簡単にQRコードを生成することができる。しかし、残念ながら、Colaboratoryには「qrcode」がインストールされていない。だが、心配は無用だ。Colaboratoryで「! (コマンド)」のようなコードを書くと、任意のコマンドを実行できる。

つまり、以下のようなコードを書いて実行すると、Pythonの「qrcode」モジュールをColaboratory上にインストールできる。

 !pip install qrcode
  • QRコードライブラリをインストールしたところ

    QRコードライブラリをインストールしたところ

QRコードを表示しよう

それでは、QRコードを表示してみよう。以下は、Colaboratory上でQRコードを生成する最も簡単な例だ。

 # QRコードを生成
 import qrcode
 img = qrcode.make('トイレットペーパー')

 # 画面に出力
 from IPython.display import Image,display_png
 display_png(img)

プログラムを実行すると、Colaboratory上に、QRコードが表示される。

  • QRコードを表示したところ

    QRコードを表示したところ

このQRコードを、スマートフォンのQRコードスキャナーで読むと、QRコードに埋め込んだ文字を確認することができる。今回は、URLではなく、適当な文字「トイレットペーパー」を埋め込んだので、それが表示される。

  • QRコードをスキャンしたところ

    QRコードをスキャンしたところ

プログラムだが、qrcode.make()メソッドを呼ぶと、引数に指定した文字列を元にQRコード画像が生成される。それを、display_png()関数を利用して、Colaboratory上に出力するという流れだ。

大量のURLをQRコードに変換しよう

ところで、上記のプログラムのように、QRコードに何が入っているのか文字で埋め込むくらいなら、直接、マジックで段ボールに品名を書く方が楽だ。Googleドライブに保存した写真のリンク(URL)をQRコードに埋め込んでこそ意味がある。URLの一覧を元にQRコードを生成するプログラムを作ってみよう。

以下は、5個のURLを一気にQRコードに変換するプログラムだ。

 # QRコードを作成するURLの一覧 --- (*1)
 urls = [
     "https://drive.google.com/open?id=1zk5mn7hVi5YN2mz81JYK74W2O4WAb92V",
     "https://drive.google.com/open?id=1tnso4EdyGtMWM5GcbR4bHe1LWfDg2Ype",
     "https://drive.google.com/open?id=1U56KIP3BivtNUhXMCp1ldtYhrq3ke4Zw",
     "https://drive.google.com/open?id=1Kd4hELrSQsj5iXbN00iyzHRGgwBLAxkj",
     "https://drive.google.com/open?id=1XmfCWwBd_1O5vkfzlMrPWac551Ga1_qs"
 ]

 import qrcode
 from IPython.display import Image,display_png

 # 一気にQRコードを生成 --- (*2)
 for url in urls:
     img = qrcode.make(url, box_size=3)
     display_png(img)

プログラムを実行すると、一気にQRコードが生成される。このようにしてブラウザ上に表示されたQRコードを選択してコピーし、マイクロソフト Wordなどに貼り付けると、印刷することができる。実際に、このプログラムを使う場合は、(*1)の部分を任意のURLに置き換えて使う。この書式に合わせてカンマで区切ってURLを書いて行くなら、5個と言わず、いくつでもQRコードを生成できる。

  • QRコードを5個一気に作成したところ

    QRコードを5個一気に作成したところ

最後に、プログラムを確認してみよう。プログラムの(*1)の部分で、リスト型変数のurlsに代入した複数のURLに対して、(*2)の部分で、for構文を利用して繰り返し一つずつQRコードを生成する。先ほどのプログラムとそれほど変わっているわけではないので、それほど難しくはないだろう。

ただし、たくさんのQRコードを生成する場合、Colaboratoryの画面からQRコードがはみ出してしまっていたので、qrcode.make()メソッドを実行する際に、QRコードのサイズを表すキーワード引数のbox_sizeに3を指定した。デフォルトは、10なので、比較的大きな画像が生成されるようになっている。画像をコピーする場合には、スクロールするので問題ないが、それほど大きな画像が不要な場合には、指定すると良いだろう。

まとめ

以上、今回は、無料のPython環境Colaboratoryを利用して、QRコードを大量に出力する方法を紹介した。Pythonのqrcodeモジュールを使えば、このように非常に手軽にQRコードが作成できる。今回紹介したように、段ボールの整理などで、QRコードを一気に生成したい場合に役立つだろう。また、QRコードにURLを埋め込むアイデアは、荷物整理以外にも使えるので、業務に活用できるので試してみよう。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2005年IPAスーパークリエイター認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。