はじめに
近年、QRコードは商品やイベント、Webサイトへの入り口として、日常のあらゆる場所で目にするようになりました。その作成方法はさまざまですが、プログラミング未経験者にとっても、Pythonを使えば簡単にQRコードを生成できます。このブログでは、Pythonの「PyQRCode」ライブラリを使い、QRコードの基礎から応用まで段階的に解説します。WindowsやMac、Ubuntuなど複数の環境で動く実用的なコードを随所に紹介するので、ぜひQRコード作成を手元で体験してみましょう。
Chapter 1: PyQRCodeのインストール
PyQRCodeはpipコマンドで簡単にインストールできます。まずはPythonの環境が整っていることを確認し、以下のコマンドを実行しましょう。
# コマンドラインで実行
pip install pyqrcode
Chapter 2: 初めてのQRコード生成
PyQRCodeを使えば、たった数行のコードでQRコードが作れます。まずは、文字やURLをQRコードとして生成してみましょう。
import pyqrcode
url = pyqrcode.create('https://www.python.org/')
url.svg('python_qr.svg', scale=8)
このコードは「python_qr.svg」というファイルにQRコード画像を保存します。SVG形式なので拡大しても劣化しません。
Chapter 3: テキストQRコードの作成
文字列(日本語も含む)をQRコードにできます。好きなメッセージをQRコード化してみましょう。
import pyqrcode
message = pyqrcode.create('こんにちは、PythonとQRコード!')
message.png('message_qr.png', scale=6)
PNG形式で保存できるので、さまざまな用途に活用できます。
Chapter 4: QRコードのSVG保存
PyQRCodeは特にSVGでの保存が得意です。高品質なベクター画像として使いたい場合はSVGを選択しましょう。
import pyqrcode
data = pyqrcode.create('SVG形式のQRコードです')
data.svg('svg_sample.svg', scale=10)
Chapter 5: 複数データのQRコード生成
一度に複数のQRコードを自動で生成する場合、forループを活用しましょう。リストを使い複数のURLをQR化します。
import pyqrcode
urls = ['https://yahoo.co.jp', 'https://google.co.jp', 'https://github.com']
for i, url in enumerate(urls):
qr = pyqrcode.create(url)
qr.png(f'qr_{i}.png', scale=5)
Chapter 6: QRコードのサイズを変更
scale引数でQRコード画像のサイズ調整が可能です。用途に合わせて適切なサイズで保存しましょう。
import pyqrcode
qr = pyqrcode.create('サイズを変えてみよう')
qr.png('small_qr.png', scale=2)
qr.png('large_qr.png', scale=10)
Chapter 7: エラーレベルの設定
QRコードには復元能力を示すエラーレベル設定があり、PyQRCodeはそれにも対応しています。次のように使います。
import pyqrcode
data = pyqrcode.create('エラーレベル設定', error='H')
data.png('error_qr.png', scale=6)
Chapter 8: 日本語QRコードの扱い
日本語はUTF-8でエンコードされている必要があります。PyQRCodeはそのまま日本語のテキストを問題なくQR化できるので便利です。
import pyqrcode
jp_text = pyqrcode.create('横浜とカナガワでPythonを学ぶ')
jp_text.png('yokohama_qr.png', scale=8)
Chapter 9: カスタムパスで保存
生成したQRコードは好きな場所に保存できます。ファイルの保存先パスを指定してみましょう。
import pyqrcode
import os
save_path = os.path.join('output', 'custom_qr.png')
qr = pyqrcode.create('保存先をカスタム')
qr.png(save_path, scale=6)
Chapter 10: QRコードをPythonで表示
作成したQRコード画像を、Pythonコード経由で表示するにはPillowライブラリを使う方法が便利です。
import pyqrcode
from PIL import Image
qr = pyqrcode.create('表示テスト')
qr.png('show_qr.png', scale=6)
img = Image.open('show_qr.png')
img.show()
Chapter 11: コマンドラインでのQR生成
スクリプトを作れば、コマンドライン引数で自由な内容のQRコードをさくっと生成できます。
import sys
import pyqrcode
if len(sys.argv) > 1:
content = sys.argv[1]
qr = pyqrcode.create(content)
qr.png('cli_qr.png', scale=6)
端末で python thisscript.py 好きなテキスト と打つとQRコードができ上がります。
Chapter 12: QRコード画像の拡張子変更
SVG以外にもPNGを活用したい場合は、pngメソッドで保存します。必要に応じて拡張子を変更しましょう。
import pyqrcode
data = pyqrcode.create('拡張子を選ぼう')
data.png('ext_qr.png', scale=6)
Chapter 13: ファイルの存在チェック
生成したファイルが確実にあるか確認するには、os.pathモジュールでチェックできます。
import pyqrcode
import os
filename = 'check_qr.png'
qr = pyqrcode.create('ファイルチェック')
qr.png(filename, scale=6)
print(os.path.exists(filename))
Chapter 14: QRコードのバイナリデータ取得
ファイル保存せず、画像データそのものを取得したい場合はStringIOを使います。Webアプリで活用できるテクニックです。
import pyqrcode
from io import BytesIO
qr = pyqrcode.create('バイナリデータ取得')
buffer = BytesIO()
qr.png(buffer, scale=4)
data = buffer.getvalue()
print(type(data)) # <class 'bytes'>
Chapter 15: QRコード付きWebページ自動生成
flaskなどのWebフレームワークと連携して、動的にQRコード画像を返すWebシステムも作れます。
from flask import Flask, send_file, request
import pyqrcode
from io import BytesIO
app = Flask(__name__)
@app.route('/qr')
def generate_qr():
text = request.args.get('text', 'デフォルトのQRコード')
qr = pyqrcode.create(text)
buffer = BytesIO()
qr.png(buffer, scale=8)
buffer.seek(0)
return send_file(buffer, mimetype='image/png')
if __name__ == '__main__':
app.run(debug=True)
まとめ
このブログ記事で、PyQRCodeによるPythonプログラミングを通して、QRコード生成の基本から応用までを体系的に解説しました。どの章も実際に動くサンプルコードとともに、初心者が扱いやすい内容になるよう工夫しています。QRコードはビジネスでも日常でも活用できる便利な技術です。自分で手を動かし、「コードからQRコード」が作れる体験をぜひ味わってください。本記事が、PythonとQRコード開発の第一歩になれば幸いです。