QRコードの中身:読み取ると自動でWiFi接続や連絡先登録が起きる仕組み

四角ドット・四角い目のQRコード
標準の四角ドット
丸ドット・丸い目のQRコード
丸ドット+丸い目
角丸ドットのQRコード
角丸ドット
ダイヤ形ドットのQRコード
ダイヤ形ドット
グラデーションカラーのQRコード
グラデーション配色
中央に絵文字を置いたQRコード
中央に絵文字(誤り訂正レベルH)
枠とキャプション付きのQRコード
枠+キャプション付き

QRコードの正体はただのテキスト

QRコードを読み取ると、ただの文字列がその中から出てくる。カメラアプリが「WiFiに接続しますか」「連絡先に追加しますか」といったボタンを出すのは、QRコード自体にそういう機能があるからではなく、出てきた文字列の書式をカメラアプリ側が判定して処理を振り分けているだけになる。

WiFi接続を自動化する書式

QRメーカーのWiFi種別が実際に生成する文字列は、次の形式になる。`WIFI:T:WPA;S:ネットワーク名;P:パスワード;;` 。T が暗号方式(WPA/WEP/nopass)、S がSSID、P がパスワード、非公開SSIDの場合は H:true; が付く。SSIDやパスワードにセミコロン・コロン・バックスラッシュ・カンマが含まれる場合は自動的にエスケープされる。

この「WIFI:」という書式は、QRコード自体の国際規格には含まれていない。バーコードスキャナライブラリ「ZXing」が広めた業界慣習であり、iOS・Androidの標準カメラアプリはこの接頭辞を見つけると、通常のテキスト表示ではなくWiFi接続確認ダイアログを出す。

実際のエスケープ処理を通した出力例(SSID: Mikoto Cafe / パスワード: p@ss;word)
WIFI:T:WPA;S:Mikoto Cafe;P:p@ss\;word;;

連絡先・地図・予定も同じ仕組み

連絡先QRは vCard 3.0 形式(BEGIN:VCARD 〜 END:VCARD、RFC 6350で標準化された形式)でテキストを構成する。地図の位置は geo:緯度,経度 という形式(RFC 5870で定義されたgeo URIスキーム)、カレンダーの予定はiCalendarのVEVENTブロックになる。いずれも汎用のテキスト形式だが、この構造を認識したカメラアプリが「連絡先に追加」「マップで開く」といったネイティブの操作ボタンを表示する。

デザインを変えても中身の文字列は変わらない

QRコードの見た目(ドットの形・目の形・グラデーション・中央の絵文字など)は、上記のテキストを画面上にどう描画するかという表現の話であり、エンコードされているデータそのものには影響しない。同じWiFi接続情報でも、ドット形状や色を変えた複数のQRコードを作れる。

中央にアイコンを置くと誤り訂正レベルが自動的に上がる

同じURL(https://mikoto-gateway.com)を実際にエンコードして比較すると、中央装飾なしの場合は229個の図形(誤り訂正レベルM)で描画されるのに対し、中央に絵文字を1つ置くと自動的に誤り訂正レベルHへ切り替わり、432個の図形に増える。中央のくり抜き部分で失われるデータを補うため、コード全体の冗長度を上げる設計になっている。

参考資料