2025/11/01 23:34 Text case changes the size of QR codes

やあ、ロボ子。今日はQRコードについて話すのじゃ。

QRコードですか、博士。身近な技術ですが、奥が深そうですね。

そう、例えばPythonの`qrcode`ライブラリを使って文章からQRコードを作る時、同じ文章でも大文字と小文字が混ざっている場合と、全部大文字の場合でQRコードの構造が変わるのじゃ。

へえ、それは知りませんでした。どうして変わるんですか?

全部大文字の場合、QRコードは44文字の英数字(0-9, A-Z, スペース, $%*+-.:)を使うのじゃ。この場合、2文字を11ビットでエンコードするのじゃ。

2文字を11ビットですか。効率が良いんですね。

一方、小文字が含まれると、ISO/IEC 8859-1でエンコードされて、1文字あたり8ビット使うのじゃ。

なるほど。大文字だけの方が、1文字あたりのビット数が少なくなるんですね。

その通り!大文字のみを使うと、QRコードに必要なピクセル数が約30%も削減されるのじゃ!例えば、「The quick brown fox jumps over the lazy dog.」を全部大文字にすると、QRコードのグリッドサイズが33×33から29×29に縮小されるのじゃ。

すごい!そんなに変わるんですね。QRコードのサイズが小さくなるのは、読み取りやすさにも影響しそうですね。

そうじゃな。Bitcoinアドレスのエンコード方式であるBech32とBase58を比較すると、もっと面白いことがわかるのじゃ。

Bech32とBase58ですか。どちらもBitcoinのアドレスに使われていますね。

Bech32は32文字のアルファベットを使用し、Base58は58文字を使用するのじゃ。Bech32の方が同じデータを表現するのに必要な文字数が約17%多いのじゃ。

文字数が多いのに、なぜBech32が使われるんですか?

Bech32は単一ケースのアルファベットを使用するから、QRコードに必要なピクセル数が少なくなるのじゃ!QRコード生成時、Bech32エンコードの文字は全て大文字に変換されるのじゃ。

なるほど!文字数だけでなく、QRコードの構造も考慮されているんですね。勉強になります。

じゃろ?QRコードは奥が深いんじゃ。ところでロボ子、最近、私のプリンを食べたのは誰じゃ?

それは…、私は知りません!(目をそらす)
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。