QRコードアートというジャンル
従来の白黒でシンプルに構成されたものではなく、デザインに凝ったクリエイティブなデザインのQRコードのことを「QRコードアート」と呼ぶ。
最近はQAコートAIアートジェネレーターが話題になった。誰でも簡単に独自なデザインのQRコードを生成できるというものである。
実は話題になる前から、QRコードアートというジャンルは存在した。2016年のこちらの記事では「世界のQRコードを使った広告戦略がとても面白い!」というテーマで、さまざまなデザインのQRコードが紹介されている。
ディズニーキャラクターの顔の形をしたデザインや、一見するとQRコードには見えないような工夫が施されていたり、その種類は多岐にわたる。
ここでは紹介しないが、「これ本当に読み取れるの!?」みたいなデザインが施されていて非常に興味深い。
私も気づいたらスマホのカメラアプリを開いて、QRコードを読み取ろうとしてしまっていた。してやられたり、という感じである。
今回の挑戦
AIによって簡単にデザインが作れるようになったけれど、文字で構成されたQRコードは見たことがないなと私は考えた。例えば「吾輩は猫である。名前はまだない...」のような文字が大量に敷き詰められた黒色の塊をうまく配置すれば、QRコードとして成立するのではないかと考えたのだ。
(👇こんな感じのブロックを敷き詰めればいけそう)
吾輩は猫で
吾輩は猫で
ある。名前
ある。名前
はまだない
はまだない
吾輩は猫で
吾輩は猫で
ある。名前
ある。名前
はまだない
はまだない
特に実用性のあるデザインではないと思うが、気になってしまったのでとりあえず作ってみようと思った。今回はその経緯を簡単にまとめたいと思う。
QRコードはなぜデザインが崩れても読み取れるのか
そもそもなぜQRコードアートが、不都合なく読み取れるのだろうか。
QRコードが多様なデザインを受け入れられる理由は、その設計に組み込まれた「エラー訂正機能」にある。この機能は、QRコードの一部が損傷や変更されても、元のデータを復元できるようにする優れた技術である。
これによって、障害物に一部が遮られていても読み取ることができるし、以下のようなQRコードが成立するのである。
エラー訂正レベル
QRコードには4段階のエラー訂正レベルが用意されている。
レベルL:約7%のデータを復元可能
レベルM:約15%のデータを復元可能
レベルQ:約25%のデータを復元可能
レベルH:約30%のデータを復元可能
ちなみに今回の文字QRコードでは最高レベルの「H」を使用している。これにより、QRコードの約30%が変更されても(文字で置き換えられても)、正常に読み取ることが可能だ。
ただし、3つの角にある正方形の切り出しシンボル(四角くて大きく目立つ部分)が汚れている場合は、ビットパターンの位置がわからず読み取れなくなるらしい。汚れ・破損が許されるのは、ここ以外に限られている。
使用技術
最初は「適当なQRコードを作って、手動で同じ形になるように文字を貼り付けていこうか」などと狂気じみたアイディアが浮かんだが、それは絶対後悔することになるので却下した。時間がかかるし、その結果読み取れない謎のデザインが完成したら悲しくなってしまう。
次に思い浮かんだのは、無難にpythonでコードを書いてしまうというもの。最近はAIに聞けば簡単に作り方を教えてくれるし、pythonは経験がそれなりにあるのでこの案を採用した。
PythonのQRコード画像生成ライブラリ「qrcode」を使用し、実装は案外サクッと完了した。今のAIの精度は本当に感動レベルで、初期の実装はほんの5分程度で完了した。
- python
- VSCode
- qrcode
- Claude
完成したQRコード
結論、この試みは成功し、実際にQRコードを読み取れた。私の運営アプリのURLをQRコード化してみたので、ぜひ確認してみて欲しい。
(かなり細かい粒度で画像出力されているので、よーーーーーく目を凝らしてみないとよくわからない。というかスマホなどではほとんどよくわからないかもしれないが、確かに超拡大するとそれぞれが文字になっている)
冒頭にもお伝えした通り、全然実用的ではない。文字間の空白が生じるのでどうしても読み取りづらくなってしまうし、そもそも言われなければこれが文字で構成されていることに気がつけないだろう。
しかし個人的にはとても面白い試みだと思っているし、無事成功して感動している。身近なQRコードの技術が素晴らしいものであることを再認識させられる良い機会になった。
もし気になる人がいれば、コメントをもらえればもしかしたらソースコードも公開するかもしれないので、ぜひ感想などもらえるとありがたい。