Qraft (クラフト)

英数字モード

読み: エイスウジモード

英数モードとは?

数字モード (Alphanumeric Mode) は、QR コードの 4 つのエンコードモードのうち、数字モードに次いでデータ効率が高いモードです。扱える文字は 0-9 の数字、A-Z の大文字アルファベット、スペース、そして $、%、*、+、-、.、/、: の記号を合わせた 45 種類です。小文字のアルファベットは含まれない点に注意が必要です。

このモードは「英数モード」と「英数字モード」の二通りで呼ばれます。英語名 Alphanumeric Mode の alpha (アルファベット) と numeric (数字) を訳した呼称で、どちらも同じ仕組みを指します。「英数字モード」の方がアルファベットと数字の両方を扱う点を明示するため、技術文書ではこちらが使われることが多い傾向があります。

45 種類の文字と圧縮の仕組み

圧縮の仕組みは、2 文字をペアにして 11 ビットに変換する方式です。各文字に 0 から 44 の値を割り当て、ペアの 1 文字目を 45 倍して 2 文字目を加算した値を 11 ビットで表現します。末尾が 1 文字余る場合は 6 ビットで表現します。この方式により、最大 4,296 文字を格納できます。

格納できる文字数は QR コードのバージョン (サイズ) と誤り訂正レベルで変わります。たとえば誤り訂正レベル M の場合、バージョン 1 (21×21 セル) で約 20 文字、バージョン 10 で約 213 文字、最大のバージョン 40 で 3,391 文字まで扱えます。誤り訂正レベルを上げるほど復元用の冗長データが増え、その分だけ格納できる文字数は減る傾向があります。短い文字列ほど小さなバージョンで済み、読み取りやすい QR コードになります。

数字モード・バイナリモードとの違いと URL での活用

QR コードのライブラリは、入力文字列を見てどのモードを使うか自動で判定します。文字列に小文字や日本語が一つでも含まれればバイトモードへ切り替わるため、英数字モードが選ばれるのは入力全体が 45 種類の対応文字だけで構成されているときに限られます。同じ文字数でもバイトモードより少ない容量で収まるため、製品コードやシリアル番号のように大文字英数字だけで設計された文字列では、自動的にこのモードが選ばれてデータ密度が高まります。

URL は英数字モードの代表的な用途ですが、落とし穴があります。URL には通常小文字が含まれるため、そのままではバイトモードが選択されてしまいます。URL を大文字に変換してから QR コードを生成すると、英数字モードが適用されてデータ量を約 40% 削減できます。HTTP や HTTPS のスキーム部分、ドメイン名は大文字・小文字を区別しないため、大文字変換しても問題なく動作します。ただしパスやクエリパラメータが大文字・小文字を区別するサーバーでは注意が必要です。