qrencodeを使ってWi-Fi接続用QRコードを作成する
アプリの開発のために、複数のiOSデバイスやAndroidデバイスを持ち歩いている。これらのデバイスでテストする必要があるが、セキュリティ上の理由から、APIサーバーによってはIP制限がかかっており、特定のネットワークからの接続のみに対応しているケースが多い。ネットワークによっては定期的にパスワードが変更されており、複数のデバイスでパスワードを手入力するのは時間がかかり、ミスも起こりやすい。
以前「Swift ConcurrencyとNEHotspotConfigurationでシンプルなWi-Fi接続を実装する」でも取り上げたように、iOS 11以降では特定のフォーマットのQRコードを読み込むことでWi-Fiに接続できる。
本記事では、qrencodeを利用して、Wi-Fiに接続可能なQRコードを作成する方法を紹介する。オフィスや自宅だけではなく、カンファレンス会場やホテル・カフェなどの店舗などで、ユーザーに Wi-Fiを提供したい場合などにもこの方法は役立つだろう。
Wi-Fi接続情報のQRコードフォーマット
Wi-Fiネットワークの設定をQRコードで提供する場合のフォーマットはある程度規格化されている。以下のような形式のQRコードをスキャンすると、デバイスをWi-Fiネットワークに接続できる。詳細はこちらを参照。
例: WIFI:T:WPA;S:mynetwork;P:mypass;H:false;;
フォーマット例:
- WPA/WPA2 Personal:
WIFI:T:WPA;S:MyNetwork;P:mypassword;H:false;;
- WEP:
WIFI:T:WEP;S:MyNetwork;P:mypassword;H:false;;
- オープンネットワーク:
WIFI:T:nopass;S:MyOpenNetwork;H:false;;
各パラメータの説明
パラメータ | 説明 |
---|---|
T | 認証タイプ(例: WPA, WEP, WPA2-EAP, nopass) |
S | SSID(ネットワーク名) |
P | パスワード(認証タイプがnopassの場合は省略可能) |
H | 隠しSSIDかどうか(trueまたはfalse) |
E | EAPメソッド(WPA2-EAPの場合のみ) |
A | 匿名ID(WPA2-EAPの場合のみ) |
I | ID(WPA2-EAPの場合のみ) |
PH2 | フェーズ2メソッド(WPA2-EAPの場合のみ) |
qrencodeを利用してQRコードを作成する
macOSの場合、Homebrewを使ってqrencodeをインストールできる。
brew install qrencode
次に、Wi-FiのSSIDとパスワードを確認する。たとえば、SSIDが"MyNetwork"、パスワードが"MyPassword"の場合、以下のようなテキストとなる。
WIFI:T:WPA;S:MyNetwork;P:MyPassword;H:false;;
このテキストを使って、qrencodeでQRコードを生成する。
qrencode -o wifi_qr.png "WIFI:T:WPA;S:MyNetwork;P:MyPassword;H:false;;"
実行すると、カレントディレクトリに wifi_qr.png
というファイル名でQRコードの画像が出力されているだろう。スマートフォンでこのQRコードを撮影すれば、Wi-Fiネットワークに接続できる。
QRコードリーダーで撮影 | Wi-Fiに接続 |
---|---|
特殊文字を含むパスワードの場合はエスケープが必要
パスワードに特殊文字(例:!, ", :, ;, ,など)が含まれる場合、QRコードの生成時にエラーが発生することがある。これらの文字がQRコードのフォーマットで特別な意味を持つためだ。この問題を解決するには、特殊文字をエスケープする必要がある。
エスケープ方法
特殊文字をエスケープするには、バックスラッシュ(\)を使用してエスケープしたり、文字列全体を二重引用符(")で囲んだりする。たとえばパスワードがMy!Password
の場合、以下のようにエスケープできる。
WIFI:T:WPA;S:MyNetwork;P:My\!Password;H:false;;
エスケープしたパスワードを使用してQRコードを生成するには、以下のようにコマンドを実行する。
qrencode -o wifi_qr.png "WIFI:T:WPA;S:MyNetwork;P:My\!Password;H:false;;"
QRコードにパスワードが含まれているため取り扱いには注意
QRコードにはSSIDとパスワードが含まれている。プライベートなWi-Fiネットワークに接続する際は、第三者に見られないよう注意が必要だ。使用後はQRコード画像を適切に管理することにも注意しよう。