> qr-optimized | efficient | modern <

// QR コードおよびデジタル証明書向けに最適化された Base45 エンコード

[QR-OPTIMIZED]

QR コードに最適化

QR コードの英数字モードに合わせた文字セットを使用し、データ密度とスキャンしやすさのバランスを最適化します。

[RFC 9285]

モダンな標準仕様

EU デジタル COVID 証明書などで採用されている Base45 標準(RFC 9285)に準拠しています。

[COMPACT]

スペース効率が高い

Base32 と比べて QR コード内でより効率的にデータを格納でき、Base64 よりも QR に適した選択肢です。

>> 技術情報

Base45 の仕組み:

Base45 は、QR コードの英数字モードで利用可能な 45 文字を使用します。データは通常 2 バイトごとに 3 文字の Base45 へ変換され、QR コードに格納したときの効率が向上します。

例:

"Hello" → %69 VD92EX0

Base45 を使う理由:

  • >QR コード 1 個あたりの有効データ量を最大化できる
  • >EU デジタル COVID 証明書などの標準に準拠したフォーマットをテストできる
  • >モジュール数やバージョンを抑えた、読み取りやすい QR コードを生成できる
  • >画質の低いカメラや厳しい環境でもスキャン成功率を高めやすい
  • >QR コード用途では Base64 より効率が良い

>> よくある質問

Base45 エンコードとは?

Base45 は RFC 9285 で定義されているエンコード方式で、QR コードの英数字モードで効率よく扱える 45 文字を使ってデータを表現します。

Base45 はなぜ作られたのですか?

Base45 は、特に EU デジタル COVID 証明書のようなデジタル証明書を QR コードにコンパクトに埋め込むために設計されました。Base64 よりも QR コード上で効率的です。

Base45 は他のエンコード方式とどう違いますか?

Base45 は、QR コードの英数字モードでサポートされている文字だけを使用します。そのため、同じ QR サイズでも Base64 より多くの情報を格納できます。

どのような場面で Base45 を使うべきですか?

デジタル健康証明書、アクセス用トークン、構成情報など、構造化されたデータを小さな QR コードに載せたい場合に Base45 が有効です。

// クイックリファレンス

入力Base45
ABBB8
Hello!!%69 VD92EX0
base-45UJCLQE7W581
ietf!QED8WEX0

// コード例

Alphabet  0-9 A-Z space $ % * + - . / :        (45 characters)
Length    2 bytes -> 3 chars,  1 byte -> 2 chars
Python    pip install base45   base45.b45encode(b"AB")  # b'BB8'
Node.js   npm i base45-js      // RFC 9285
EU DCC    JSON -> CBOR -> COSE -> zlib -> Base45 -> "HC1:" -> QR

>> その他の質問

Q: Base45が使う45文字は何ですか?

A: QRコードの英数字モードで扱える文字そのものです。0–9、A–Z(大文字のみ)、スペース、$ % * + - . / : で、RFC 9285で定義されています。

Q: Base45文字列の長さは元のバイト数に対してどうなりますか?

A: 入力2バイトが3文字、余りの1バイトが2文字になります。nバイトなら 3·⌊n/2⌋ + 2·(n mod 2) 文字で、入力長の約150%です。

Q: QRコードでBase45がBase64より優れているのはなぜですか?

A: QRの英数字モードは1文字約5.5ビット、バイトモード(Base64の + や / に必要)は8ビットです。そのため同じコードにより多くのデータが入ります。EUのCOVID証明書は CBOR → COSE → zlib → Base45 → 接頭辞 HC1: → QR の流れです。

他の言語