PayPay、LINE Pay、ファミペイ、メルペイなど様々なペイが生まれ、そして消えています。元々日本では非接触型の決済(Suica、Pasmoなど)が使われてきましたが、置き換わる存在になろうとしているかのようです。
そんな○○Payで使われているのがQRコードです。一時的に生成されるQRコードを読み取って決済したり、QRコードに加えて決済金額を入力することで決済処理を実行します。QRコードが技術的な肝と言える存在でしょう。
今回はそんなQRコードを生成する方法を紹介します。
APIを使う
少し前まではGoogle Chartsの一機能としてQRコード生成を使うことが多かったのですが、現在は非推奨となっています。その代替になるサービスは各種存在します。
- QR code API
- URL専用QRコード生成API
- QR Code Generator – create QR codes for free (Logo, T-Shirt, vCard, EPS)
APIを使う場合の利点として、特別な準備を必要とせず、QRコードを生成できます。多くは画像として生成できますが、APIによってはPDFやEPSのようなフォーマットで生成できるものもあります。
オープンソースライブラリを使う
外部のAPIを使う場合、QRコードの元になるテキストを外部サービスに送信しなければなりません。そういった外部サービスを使う際のセキュリティリスクは一定量存在するでしょう。特に決済に使うようなQRコードを生成する場合は注意すべきです。
そこでAPIと同等の仕組みを自分たちで用意することもできます。例えば以下のようなプログラミング用ライブラリがあります。
- chillerlan/php-qrcode: A QR Code generator for PHP7.2+
- whomwah/rqrcode: A Ruby library that encodes QR Codes
- zxing/zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Android
Google Charts同様にグラフを生成できるライブラリもあります。
Open Source Image Charts Replacement API | QuickChart
クライアントサイドで生成する
API、オープンソースのライブラリをサーバサイドで使う場合の双方ともインターネット接続が必要になります。オフラインで使えないのが問題になることもあるでしょう。また、低速なネットワークの時にQRコード画像が表示できない可能性もあります。そこで、クライアントサイドでQRコードを生成するライブラリが活躍します。
- Android : journeyapps/zxing-android-embedded: Port of the ZXing Android application as an Android library project, for embedding in an Android application.
- iOS : aschuch/QRCode: A QRCode generator written in Swift.
- JavaScript : qrcode.js
これらのライブラリを使うことで、QRコードで読み取らせる文字列はサーバサイドから送り、表示部分はクライアントサイドで実現できるようになります。画像をダウンロードするのに比べて高速に行えるでしょう。
まとめ
QRコードの利便性は高く、様々な場面で利用されています。アプリとしては読み込みが多いですが、逆にQRコードを表示して他のデバイスに読み取ってもらうことも良く行われています。これらのAPIやライブラリを使って、QRコードをアプリ内で活用してください。