QRコードが一部のスマートフォンで読めない理由
QRコードは、リンクを写した絵ではありません。角の目印、タイミングの線、設定値の写し、そして残った場所に散らされたデータからなる、決まった骨格を持つ白黒の格子です。スキャナーは一ビットを読む前に、まずその骨格を見つけなければなりません。ある場所では読めて別の場所では読めないコードは、たいていその骨格の一部か、骨格が必要とする条件を失っています。
スキャナーが最初に探すもの
四隅のうち三つに大きな四角があります。どの角度からでも見つけられるように作られた目印で、その四角を横切る線をどう引いても、暗と明の比率が同じになります。おかげでカメラは、何も解読しないうちにコードの位置と向きを見定めることができます。ほかの場所にある小さな位置合わせの四角は、ボトルの曲面や斜めから撮った写真を補正するために使われます。
だから傷の重みは場所によって違います。データ領域を横切る引っかき傷はたいてい復元できますが、角の四角の上に貼られたロゴや、片方の角が切れたコードは、傷んだコードではありません。カメラにとっては、そもそもコードですらないのです。
余白もコードの一部
規格は、四辺すべてにモジュール四つ分、つまり四角四つ分の空白を静穏領域として求めています。飾りではありません。スキャナーはその余白で格子がどこで終わるかを判断するので、枠や写真や文字列にぴったり接したコードには、頼れる境界がありません。
印刷物では、これが群を抜いてよくある失敗です。デザイナーは自然と黒い画素に合わせて切り抜くからです。白い紙に貼れば読めるのにレイアウトの中では読めないなら、まずここを見てください。
誤り訂正は予算であり、ロゴはそれを使う
誤り訂正の水準は四段階あり、汚れたり覆われたりしたときにおよそ7、15、25、30パーセントを復元します。コードの中央にロゴを置けるのは、この余裕があるからです。覆われたモジュールは損傷として扱われ、復元されます。
落とし穴は、その余裕が結局は余分なモジュールでできていることです。同じ物理的な大きさなら、水準を上げるほど四角ひとつは小さくなります。小さく印刷し、訂正水準を最高にし、その上ロゴで覆えば、同じ予算を三回使ったことになります。ロゴを入れるなら小さく入れ、コードは大きく取り、思い込みではなく仕上がった画像を解読して確かめてください。
明暗差、反転、そして光る表面
カメラは画像を明と暗に分けるので、効くのは色の違いではなく明るさの違いです。目には十分に対比して見える二色、たとえば中間の青と中間の緑は、灰色に変換するとほぼ同じ値になり、読めなくなります。
コードは明るい地に暗いモジュールが原則です。暗い地に白いモジュールの反転コードは、読むスキャナーと拒むスキャナーがあり、これこそ自分のスマートフォンでは読めて相手のでは読めないという現象の典型です。光沢印刷や箔、明るい照明の下の画面は反射で格子の一部を飛ばし、ガラス越しのコードは特定の角度だけ失敗しがちです。
大きさと距離、そして印刷が支えられる限界
計画のときに使える目安は、コードの一辺を読み取り距離の十分の一ほどにすることです。二メートル離れて読むコードなら、一辺は二十センチほど欲しいところです。名刺サイズのつもりで作ったポスターのコードは、誰にも読めないポスターになります。
印刷は下限も決めます。インクは紙の上でわずかに広がるので、モジュールひとつが0.3ミリ前後になると隣り合う黒い四角がつながり始め、カメラがどれほど良くても格子は格子でなくなります。刺繍や彫刻など、最小の表現サイズがあるものすべてに同じことが当てはまります。
何を入れるかが密度を決める
データ量が型番を決め、型番が一辺のモジュール数を決めます。いちばん小さいもので21、いちばん大きいもので177です。追跡用のパラメータが付いた長いリンクは、短いリンクより何段階も密なコードになり、その分だけ大きく印刷しないと読めません。
符号化の仕方も効きます。数字がもっとも詰めて入り、英大文字といくつかの記号には専用の圧縮モードがあり、それ以外はすべてバイトとして扱われます。同じリンクでも大文字で書けば目に見えて単純なコードに収まります。印刷物のアドレスがときどき全部大文字なのは、このためです。
実際に世に出すものを試す
生成したファイルではなく、最終的な仕上がりを解読してください。不具合はたいていその後で入ります。切り抜き、色の変更、輪郭をぼかす拡大縮小、圧縮の一手間が原因です。読み返せば、まだ解読できることと、思ったところを指していることの両方を同時に確かめられます。
そのうえで、使われるとおりに試してください。最終サイズで印刷し、自分のではないスマートフォンで、実際の場所の距離と照明で。そしてコードが短縮リンクを指しているなら、紙は短縮サービスより長生きすることを忘れずに。作り直せないコードは、そのアドレスを生かし続けるという約束です。