アンドロイドのアプリの1つであるQRコードスキャナーを使うと、QRコード経由でWi-Fiの設定やカレンダーやコンタクトデータの転送が出来るようなります。アプリケーションをインストールする必要があるので、アンドロイドの機能というわけでもないのですが、アンドロイドには、SSIDやパスワードを設定する機能や、予定やコンタクトを外部アプリケーションから追加できるようなAPIがあるため、このようなアプリケーションを作ることができるわけです。それで、これは実際使って見ると意外に便利です。そこで、今回は、このQRコードスキャナーの使い方を考えてみることにします。

QRコードとは、2次元バーコードの1種で日本のデンソーウェーブ社で開発されたもの。現在では国際規格(ISO/IEC 18004)になっており、その範囲であれば、自由に利用できます。スーパーマーケットなどで商品に付いているバーコードは、線の太さでデジタルデータを表現するもので、これを1次元バーコードといいます。これに対して2次元バーコードは、ドットの有無などでデジタルデータを表現するものです。縦横2つの方向のスキャンが必要であるために2次元といいます。1次元バーコードは、スーパーのレジみたいに赤いレーザー光を使った読み出し装置が主流ですが、2次元バーコードの場合、カメラを使って画像入力を行ってこれを解析する方法がスマートフォンなどで利用できます。カメラは多くのスマートフォンに装備されており、特殊なデバイスでないために、アンドロイドならアプリのインストールだけで利用が可能になります。

1次元バーコードでは、原則数字のみを記録していましたが、2次元バーコードは記録できる情報量が多いために文字列の記憶ができます。一番よく見かけるのは、WebサイトアクセスのためのURLなどをQRコード化してポスターや出版物などに印刷するものです。また、カメラを使うため、印刷物だけでなく画面に表示しても読み取りが可能になります。

QRコードスキャナー

QRコードスキャナーでは、アンドロイド用に以下のような機能を提供します。

  • Wi-Fi設定
  • カレンダーへの予定登録
  • 連絡先への登録
  • メールアドレス(メール送信)
  • 電話番号による発信
  • 電話番号によるSMS送信
  • 地球上の位置(緯度経度)によるマップの起動
  • URLによるWebページ閲覧
  • その他文字列の指定

いろいろな機能がありますが、QRコード自体は単純に文字列を記録していて、その文字列の形式を判断してQRコードスキャナーが呼び出すアプリケーションを切り替えているだけです。たとえば、Webページを開く場合、URLがそのまま文字列として入っていて、その形式からURLだろうと判断してQRコードスキャナーがWebブラウザを起動するかどうかを聞いてきます。

QRコードの使い方にはいろいろありますが、1つは、あらかじめQRコードを作っておき、これを使って、複数のアンドロイド機でこれを読み込んで利用する方法です。たとえば、モバイルルータのWi-Fi設定を作って、これをルータに貼っておくなどすれば、Wi-Fi設定が簡単に行えます。他人にちょっとの間、ルーターを使わせたり、あるいは、なんかの集まりで、無線LANを共有するときなどにもQRコードがあれば簡単です。必ずしも印刷する必要はなく、たとえば画像にしてスマートフォンに保存しておけば、他のスマートフォンで簡単に読み出しが可能になります。

Wi-Fi設定だけでなく、電話番号、メールアドレス、URLや地図上の位置など、QRコード化して画像や印刷した紙を用意すれば、簡単に他のアンドロイドスマートフォンで利用できるようになるわけです。

筆者は、自宅のWi-Fiの接続方法をQRコード化してPCのモニターの脇に貼っています。ラベルプリンタがあれば簡単に作られますが、普通のプリンタで印刷して切り抜いてセロハンテープで貼っても問題はありません。モバイルルーターの場合には、簡単にはがれてしまうと困るので、印刷した紙の上から透明な幅の広いテープなどで貼り付けます。名前ラベル用など透明な保護シートのあるシールが販売されているのでこれを使うといいでしょう。パソコンにつながるラベルプリンタがあると完璧ではあるんですが、このためだけに買うというものでもありません。

少量データの転送に使う

もう1つの利用方法は、少量のデータの転送でしょうか。最近の機種にはNFCや赤外線インタフェースが搭載されていて、簡単にデータ転送できますが、転送する相手のマシンに必ずしもNFCや赤外線インタフェースが搭載されているとは限りません。しかし、アンドロイドでカメラのないスマートフォンは見かけたことがありません。転送は1件ごとになりますが、必ず転送できる方法です。ちなにみに背面カメラのないNexus 7でもQRコードスキャナーはフロントカメラで動作できます。ちょっと不便ですが、まったく使えないわけでもないのです。

QRコードスキャナーには、QRコードを作る機能も搭載されており、連絡先を表すQRコードは簡単に作ることが可能です。そのほかの項目も何らかの形で文字列を作ることができるなら、QRコードを作ることが可能です。また、共有機能のあるアプリならば、そのアプリの扱うデータからQRコードを作ることもできます。

たとえば、アンドロイドの「連絡先」アプリは、選択中の項目をメニューの「共有」で「バーコードで共有する」を選ぶだけで、QRコード化できます。これを相手に読み取ってもらえば、相手の連絡先に自分の項目が登録されます。また、自分のテザリングで設定しているWi-Fi設定をQRコード化して他のマシンに簡単に設定出来るようにするのも便利です(後述)。

自分で作ったQRコードを頻繁に使うのなら、表示されたQRコードの画面をキャプチャーしておきます。アンドロイドに標準で付属する「ギャラリー」ウィジェットを使って、キャプチャーしたQRコードを常にホーム画面に出しておくことも不可能ではありません。ただし、セキュリティ上の問題があるので、扱いにはちょっと注意が必要です。

予定もQRコードで表現が可能なのですが、適当なカレンダーアプリがありません。QRコードで表示が可能としたアプリもあるのですが、日本語の扱いができないといった問題があり、ここについては今後の開発を待ちたいところです。

QRコードリーダーがインストールされているとき、連絡先アプリで項目を共有すると、共有アプリとしてQRコードリーダー(バーコードで共有する)が表示される

アドレスデータをQRコードにエンコードしたもの。これを他の機種で読み取れば住所録へ登録が可能

QRコードスキャナーは読み取ったQRコードが持つ文字列を解析して適当なアプリを選択してボタンを表示する。これは連絡先データが含まれているQRコードを読んだもの

QRコードスキャナーの「共有」メニューを開くと、QRコード作成画面となる。ボタンでデータを選択するか、下の欄に文字列を入れてQRコード画像を生成する

QRコードスキャナーで扱えるデータの形式

QRコードスキャナーは、アンドロイドのAPIで処理可能ないくつかのデータ形式に対応しています。これらは、簡単なテキストであったり、予定や連絡先の標準的な交換フォーマットに準拠しているものであるため、他のバーコードを扱うアプリケーションでも対応しているものがあります。

では具体的にどんな形式なのでしょうか。ここでは、その形式を簡単に解説します。

・Wi-Fi設定

比較的便利なのがWi-Fiの設定ですが、これは以下のような形式になっています。文字コードにはUTF-8を使い、以下のような形式にします。

WIFI:S:SSID文字列;T:暗号タイプ;P:暗号キー;;

ここで「SSID文字列」にはSSIDが、「暗号キー」には、「暗号タイプ」に応じた暗号キーが入ります。「暗号キー」は、「WEP」、「WPA」、「nopass」の3種類の文字列のどれかになります。「WEP」は「Wired Equivalent Privacy」で初期に使われた無線LANの暗号化方式(現在はほとんど使われていない)、「WPA」は「Wi-Fi Protected Access」で具体的な仕様としては「WPA/WPA2」に対応する場合です。暗号化が設定されていない場合には「nopass」を使います。これらは、接続する相手に合わせて設定します。たとえば、以下のようなアクセスポイントに設定する場合には、「WIFI:S:MyNavi;T:WPA;P:WifiAngoKey;;」という文字列を指定します。

SSID MyNavi
暗号化方式 WPA2パーソナル(PSK)
暗号キー WifiAngoKey

テザリング設定を他のマシンで使う場合、口頭で伝えたり、再度手で入力するのも面倒です。このようなときには、この形式の文字列からQRコードを作って、その画像を保存しておくと便利です。

・カレンダー項目

カレンダー情報には、汎用のデータ交換方式として「iCalendar」(RFC5545)というものがあり、これにのっとったデータを作ることでアンドロイドのカレンダー情報として登録することが可能になります。たとえば以下のようなデータを文字列としてQRコードスキャナーに渡します。この文字列には改行コードが含まれます。


時間を指定した予定

BEGIN:VEVENT
SUMMARY:名前
DTSTART:20130419T202500Z
DTEND:20130419T212500Z
LOCATION:場所
DESCRIPTION:メモ
END:VEVENT


時間を指定しないイベント

BEGIN:VEVENT
SUMMARY:名前
DTSTART;VALUE=DATE:20130420
DTEND;VALUE=DATE:20130422
LOCATION:場所
DESCRIPTION:メモ
END:VEVENT

このとき注意するのは、日時の指定はUTCで行う必要があることです。QRコードスキャナー固有の問題と思われますが、タイムゾーンがUTC(データの最後にあるZはUTCを意味しています)でないと、ただしくカレンダー用データと認識しないようです(一般文字列と同じ扱いになる)。

イベントと予定の違いは、DTSTARTとDTENDの値が日付のみか、日付と時間を含むのかという違いです。日付と時間を指定する場合には、西暦(4桁)月(2桁)日(2桁)に「T」を続け、そのあとに24時間の時刻表示を時、分、秒各2桁で行います。日付のみの場合には、少し形式が異なり、「DTSTART;VALUE=DATE:20130420」などのようにします。これは、DTSTARTというタグに後続する引数が日付のみであることを表す「VALUE=DATA」という表記をセミコロンを付けてタグと引数の間のコロンの前に置いたものです。

・連絡先

連絡先には2つの形式があります。1つは、vCardと呼ばれるデータ交換形式と、MECARDと呼ばれるドコモの作ったデータ交換形式です。どちらも似たような形式なのですが、キーワードが違っていること、MECARDはデータの区切りに改行コードを使わないという違いがあります。連絡先は、アンドロイドの連絡先アプリが共有に対応しているので、実際にデータとしてさわることはないでしょう。また、MECARDには、役職などを表す「タイトル」に相当するフィールドがありません。


MECARD形式の場合(実際には全部1行の文字列になる)

MECARD:N:名前;ORG:会社;TEL:0300000000;URL:http\://www.example.com;EMAIL:user@example.com;ADR:住所;NOTE:メモ欄;;


vCard形式の場合

BEGIN:VCARD
N:名前
ORG:会社
TITLE:タイトル
TEL:0300000000
URL:http://www.example.com
EMAIL:user@example.com
ADR:住所
NOTE:メモ欄
END:VCARD

・電子メール、電話番号、SMS

連絡先は、連絡先データとして登録されますが、これとは別にメールアドレスを指定したメールアプリの起動などの機能があります。また、電話を発信する機能などもあります。これは以下のような形式になっています。


tel:電話番号(数字のみ)
mailto:メールアドレス
smsto:電話番号:メッセージ本文

たとえば、mailtoの形式を使えば、これをスキャンしたときにQRコードスキャナーでは、「メール送信」、「連絡先追加」の2つの選択肢が表示されます。「メール送信」を選び、対応アプリケーションを指定してやれば、メール作成画面が表示され、メールアドレスが入力された状態になります。他人にメールアドレスを教えるようなとき、自分のメールアドレスを入れたこのQRコードを読み込んでもらえば、その場でメールを送ってもらうことができ、これで相手のメールアドレスを入手することが可能です。他人とメールアドレスの交換をすることが多いようなら、画面キャプチャするなどして画像をすぐに表示できるようにしておくといいでしょう。同様に電話番号も「電話」アプリが起動し電話番号が入力された状態になるので、すぐに発信することができます。電話番号の場合、海外ローミング中には、国際番号を使うようにする必要があることには注意しておいたほうがいいでしょう。国内用、海外用と画像を作り分ける方法もありますが、自分の連絡先に国番号をつけた電話番号を登録しておくほうがいいかもしれません。

・場所

緯度経度および、近隣の検索キーワードを入れて地球上の場所を指定することも可能です。緯度は、-90(南緯)から90(北緯)の間、経度は-180(西経)から180(東経)の間を指定します。また、検索キーワードはなくてもかまいません。特定の場所を表示させたいような場合、緯度経度を表記しておけば他の地域の似たような場所と間違うことがありません。たとえば、「本町」などという地名は全国にあります。Googleマップなどの地図アプリが指定された緯度経度でそれを見つけることができるならラベルとして利用することもできるでしょう。ただし、緯度経度と検索キーワードのどちらが優先されるのかはアプリ次第です。


geo:緯度,経度?q=検索文字列

また、Googleマップなどでは、特定の地点や施設などを指定して場所に対して「共有」を行うとデータとして住所やマップの表示ページなどのURL入れたデータを作成するようです。こちらもスキャンすると、場所として認識されます。自宅や自分のオフィスなどを教えるような場合には、こっちでQRコードを作ったほうがいいかもしれません。

・その他

QRコードは、最大でかな漢字文字列を1800文字程度(シフトJISコードの場合)、半角英数(いわゆるASCIIコードの範囲)なら4296文字まで格納できます。またバイナリコードも記録できます。ただし、データ量が増えるほどQRコード自体も大きくなります。

文字列の中には、URLのように種類を判別しやすい情報があるので、これらをそのまま入れることも可能です。URLを入れたQRコードは比較的よく見かけます。また、URLによっては、検索文字列やその他の付加情報を入れることも可能なので、URL形式でWeb上のサービスにアクションを要求するようなこともできます。アンドロイド関係の書籍でアプリケーションに対してQRコードを付けるのは比較的よく見かけます。これは、URLの形でPlayストア内の特定のアプリが指定してあります。

文字だけで表現できる何らかの情報を送りたいという場合はあるでしょう。ただ、QRコードスキャナーには、スキャンが完了したときに文字列データをクリップボードにコピーする機能があり、これをオンにしておけば、多くのアプリケーションに文字列データを渡すことができます。また、特定の形式として認識されなかったばあい、「メール送信」のボタンが表示され、このときに起動するアプリケーション(共有アプリ)を選択できます。このとき、Jota+などのテキストを扱えるアプリケーションも起動するアプリケーションの一覧に表示されます。このボタンはメールアプリに固定されているのではなく、インテントでテキストを受け取ることができるアプリが対象になっているようです。なので、使うときには、特定のアプリを常時起動するように設定しないほうがいいでしょう。

また、スマートフォンなどと一緒に使うことが多いパソコンにQRコードを生成できるアプリを入れておくのも便利です。筆者は、Psytec QR Code Editor for cell phoneというアプリを使っています。これは、文字列からQRコードのイメージを生成できるだけでなく、PCの画面に表示されているQRコードをキャプチャして認識することもできるWIndowsアプリケーションです。

URLやGoogleマップで指定した場所など、ちょっとした文字列を簡単にQRコードにして、スマートフォンに読み込ませることができます。たとえば、グーグルマップなら、地図上で右クリックして「この場所について」を選び、左側の領域にある「リンク」(鎖のアイコン)をクリックして共有用のURLを取得します。これをQRコードにしてQRコードスキャナーで読み込んで表示されたURLをタップすれば、マップアプリケーションが起動されてその場所を示してくれます。スターやマイマップ使って共有する場合に比べて時間差がなく手軽な方法です。スターやマイマップを使う場合、スマートフォンとPC(のGoogleマップ)で同じアカウントを使っていなければならず、PCで付けたスターやマイマップへの登録がスマートフォン側に反映されるまでに多少時間がかかることがあります。しかし、QRコードを使う方法では、瞬時に地図が表示され、双方で同じアカウントを使っている必要もありません。

PC用のQRコードアプリPsytec QR Code Editor。QRコードの作成と読み取りが可能。読み取りは画面をキャプチャして行える

■Psytec QR Code Editor(Windowsアプリケーション)
http://www.vector.co.jp/soft/win95/writing/se478998.html
■QRコードスキャナー
https://play.google.com/store/apps/details?id=com.google.zxing.client.android
■Copy to Clipboard
https://play.google.com/store/apps/details?id=se.johanhil.clipboard
編集部注: 本稿は、2013年4月23日にAndorid情報のWeb専門誌「AndroWire」に掲載した記事を再構成したものです。