PythonでQRコードを生成する方法

プログラミング

PythonでQRコードを生成する方法

PythonでQRコードを生成するには、いくつかのライブラリが利用できます。中でも最も一般的で使いやすいのが`qrcode`ライブラリです。このライブラリを使用することで、手軽にQRコードを生成し、画像ファイルとして保存したり、表示したりすることが可能です。

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

`qrcode`ライブラリをインストールするには、Pythonのパッケージ管理システムである`pip`を使用します。ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行してください。

pip install qrcode[pil]

`[pil]` の部分は、QRコードを画像として保存するために必要な `Pillow` ライブラリを同時にインストールするためのオプションです。

基本的なQRコードの生成

最も基本的なQRコードの生成は、非常にシンプルです。生成したい文字列を `qrcode.make()` 関数に渡すだけです。

import qrcode

# 生成したいQRコードのデータ
data = "https://www.example.com"

# QRコードを生成
qr = qrcode.make(data)

# QRコードを画像ファイルとして保存
qr.save("example_qr.png")

このコードを実行すると、カレントディレクトリに `example_qr.png` という名前のQRコード画像ファイルが生成されます。

生成されたQRコードの確認

生成された `example_qr.png` ファイルを画像ビューアで開くと、指定したURL(この例では `https://www.example.com` )をエンコードしたQRコードが表示されているはずです。スマートフォンのQRコードリーダーアプリなどで読み取ると、ブラウザが開き、指定したURLにアクセスできます。

QRコードのカスタマイズ

`qrcode` ライブラリでは、QRコードの様々な要素をカスタマイズすることが可能です。例えば、エラー訂正レベル、ボックスサイズ、ボーダーなどを調整できます。

エラー訂正レベル

QRコードには、欠損や汚れがあってもデータを復元できる「エラー訂正機能」が備わっています。エラー訂正レベルは4段階あり、レベルが高いほど復元能力は高まりますが、QRコードの密度(データ量)も増加します。

* `ERROR_CORRECT_L` (約7%の誤り訂正)
* `ERROR_CORRECT_M` (約15%の誤り訂正)
* `ERROR_CORRECT_Q` (約25%の誤り訂正)
* `ERROR_CORRECT_H` (約30%の誤り訂正)

エラー訂正レベルを指定するには、QRコード生成時に `error_correction` パラメータを使用します。

import qrcode
from qrcode.constants import ERROR_CORRECT_H

data = "This is a highly error-corrected QR code."
qr = qrcode.QRCode(
    version=1,
    error_correction=ERROR_CORRECT_H,
    box_size=10,
    border=4,
)
qr.add_data(data)
qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")
img.save("highly_corrected_qr.png")

この例では、最も高いエラー訂正レベル `ERROR_CORRECT_H` を使用しています。

ボックスサイズとボーダー

`box_size` パラメータは、QRコードの各ボックス(モジュール)のピクセルサイズを指定します。 `border` パラメータは、QRコードの外周に配置される白い枠(ボーダー)の幅を指定します。これらの値を変更することで、QRコードの見た目の大きさを調整できます。

import qrcode

data = "Adjusting size and border."
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=15,  # ボックスサイズを大きくする
    border=8,     # ボーダーの幅を広くする
)
qr.add_data(data)
qr.make(fit=True)

img = qr.make_image(fill_color="blue", back_color="yellow") # 色も変更可能
img.save("custom_size_qr.png")

この例では、ボックスサイズを `15` 、ボーダーを `8` に設定しています。また、 `fill_color` と `back_color` でQRコードの色をカスタマイズしています。

QRコードオブジェクトの利用

`qrcode.QRCode()` クラスを使用してQRコードオブジェクトを作成することで、より柔軟な設定が可能になります。

import qrcode

# QRコードオブジェクトの作成
qr = qrcode.QRCode(
    version=None,  # QRコードのバージョン(Noneにすると自動で最適なものが選択される)
    error_correction=qrcode.constants.ERROR_CORRECT_M,
    box_size=10,
    border=4,
)

# QRコードにデータを追加
qr.add_data("Some data to encode")

# QRコードを生成(fit=Trueで、バージョンとデータ量に合わせて最適なサイズが決定される)
qr.make(fit=True)

# 画像として生成
img = qr.make_image(fill_color="black", back_color="white")

# 画像を保存
img.save("qr_object_example.png")

`version` パラメータは、QRコードのバージョンを指定します。バージョン1から40まであり、バージョンが大きいほど多くのデータを格納できます。 `None` を指定すると、 `fit=True` と組み合わせて、データ量に最適なバージョンが自動的に選択されます。

SVG形式でのQRコード生成

QRコードは画像ファイルとしてだけでなく、スケーラブルベクターグラフィックス(SVG)形式で生成することも可能です。SVG形式は、拡大・縮小しても画質が劣化しないため、デザイン用途などに適しています。

import qrcode
import qrcode.image.svg

# SVG形式でQRコードを生成するためのファクトリ関数を指定
factory = qrcode.image.svg.SvgPathFillImage

# QRコードオブジェクトの作成
qr = qrcode.QRCode(
    version=None,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)
qr.add_data("Data for SVG QR code")
qr.make(fit=True)

# SVGイメージを生成
img = qr.make_image(image_factory=factory, fill_color="darkgreen", back_color="lightyellow")

# SVGファイルを保存
img.save("svg_qr_code.svg")

このコードを実行すると、 `svg_qr_code.svg` という名前のSVGファイルが生成されます。このファイルは、ウェブブラウザやSVG対応の画像編集ソフトで開くことができます。

その他のライブラリ

`qrcode` ライブラリ以外にも、PythonでQRコードを生成できるライブラリは存在します。例えば、 `pyqrcode` ライブラリもよく利用されます。

`pyqrcode` ライブラリ

`pyqrcode` ライブラリも同様にQRコードを生成できます。インストールは `pip install pyqrcode` で行えます。

import pyqrcode

data = "Another way to generate QR codes."
qr = pyqrcode.create(data)

# PNG形式で保存
qr.png("pyqrcode_example.png", scale=8)

# SVG形式で保存
qr.svg("pyqrcode_example.svg", scale=8)

`pyqrcode` ライブラリでは、 `create()` 関数でQRコードオブジェクトを作成し、 `png()` や `svg()` メソッドでファイルに保存します。 `scale` パラメータで画像のサイズを調整できます。

QRコード生成の応用例

QRコードは、単なるURLのエンコードにとどまらず、様々な用途で活用できます。

連絡先情報の共有

`vCard` 形式のデータ(名前、電話番号、メールアドレスなど)をQRコードにエンコードし、名刺代わりに利用することができます。

Wi-Fi接続情報の共有

Wi-FiのSSIDとパスワードをQRコードにエンコードすることで、簡単かつ安全にWi-Fi接続情報を共有できます。

テキストメッセージの送信

特定のテキストメッセージをエンコードしたQRコードを生成し、スキャンするとそのメッセージでSMSアプリが起動するようにすることも可能です。

ジオロケーション情報の共有

緯度と経度情報をエンコードし、スキャンすると地図アプリでその場所が表示されるようにできます。

まとめ

PythonでQRコードを生成する方法は、 `qrcode` ライブラリを利用するのが最も一般的で推奨されます。このライブラリは、手軽に基本的なQRコードを生成できるだけでなく、エラー訂正レベル、サイズ、色などのカスタマイズも柔軟に行えます。また、SVG形式での出力も可能であり、多様なニーズに対応できます。 `pyqrcode` のような他のライブラリも選択肢として存在します。QRコードは、URLの共有だけでなく、連絡先、Wi-Fi情報、位置情報など、様々なデータを効率的に共有するための強力なツールとなり得ます。Pythonを活用することで、これらのQRコード生成プロセスを自動化し、アプリケーションやサービスに組み込むことが容易になります。