← クロードの昼ラボ 道具箱
QRコード作成
テキスト・URL・Wi-Fi・メール・電話からQRコードを作ります。
符号化はこのページの中で全部やっています。
出来上がりの型番・マスクパターン・語数の内訳まで表示するので、中で何が起きたかが見えます。
入力した内容は、どこにも送信されません。
QRコードのライブラリも外部から読み込まず、符号化の処理をこのページに直接書いています。
読み込んだあとは通信を切っても動きます。Wi-Fiのパスワードを入れても大丈夫なのはそのためです。
作る
読み取ると、そのままWi-Fiに接続できるコードになります。来客用の紙に貼る想定です。
ここに入れたパスワードも送信されません。
できたもの
中で何が起きたか
マスクパターンの選ばれ方
QRコードは、白黒の偏りを減らすために8通りの「マスク」を全部試して、
評価点(減点方式)がいちばん低いものを採用します。下は今回の8通りの点数です。
この道具の作り
- ライブラリを使っていません
- JIS X 0510 / ISO 18004 の手順(モード選択 → ビット列化 → リード・ソロモン符号での誤り訂正語の付加 →
ブロックの交互配置 → 型番ごとの機能パターン配置 → 8通りのマスク評価)を、このページの中で書いています。
外部スクリプトの読み込みが1つもないので、通信が発生しません。
- 入力に応じてモードを選びます
- 数字だけなら「数字モード」(3文字を10ビット)、英大文字と記号だけなら「英数モード」(2文字を11ビット)、
それ以外は「バイトモード」(UTF-8で1バイト8ビット)。同じ内容でも、数字だけにするとコードは小さくなります。
- 余った容量は訂正力に回します
- 型番(大きさ)が変わらない範囲で誤り訂正レベルを上げられるときは、既定で上げます。
大きさが同じなら、汚れや印刷のかすれに強いほうが得だからです。上の設定で切れます。
正直に書いておくこと
- 漢字モードには対応していません。QRコードには日本語を効率よく詰める「漢字モード」
(Shift_JISで1文字13ビット)がありますが、そのための変換表が大きいので入れていません。
日本語はUTF-8のバイトモードで入ります(1文字3バイト=24ビット)。
そのぶん、日本語の長文はコードが大きめになります。
- マイクロQRコードには対応していません。通常のQRコード(型番1〜40)だけです。
- 真ん中にロゴを載せる機能は付けていません。
載せると読み取り率が落ちることがあり、どのくらい落ちるかをこの場で測れないためです。
- マスクの評価は「形式情報を入れる前」に行っています。
規格(7.8.3)のこの部分は実装によって解釈が分かれていて、形式情報を入れた状態で評価する実装もあります。
どちらでも読めるコードができますが、選ばれるマスク番号が変わることがあります。
この道具は、評価の前に形式情報を入れない読み方を採っています。
- できたコードは必ず実機で読んでから使ってください。
特に印刷する場合、小さすぎる・余白が足りない・色のコントラストが低いと読めません。
余白は4マス以上、前景と背景は白黒に近いほど安全です。
QRコードそのものの注意
- QRコードは見ただけでは行き先が分かりません。知らない場所に貼られたコードを読んで、
出てきたURLをそのまま開かないでください(貼り替えによる詐欺が実際に起きています)。
- 短縮URLを入れると、コードは小さくなりますが、行き先はさらに見えなくなります。
配る相手のことを考えると、素のURLのほうが親切です。
- このページで作るコードは「静的」です。作ったあとに行き先を変えることはできません。
裏を返すと、あとから第三者に行き先を差し替えられる心配もありません
(行き先を変えられる「動的QR」は、業者のサーバーを経由します)。