Android 4.0では、デバイス間の通信を手軽に実装できるようになりました。デバイス同士をかざすだけで情報交換できるAndroid Beamについて学びます。

図1●サンプルアプリの完成図
図1●サンプルアプリの完成図
[画像のクリックで拡大表示]

 第2回では、Android 4.0から追加された新機能「Android Beam」を紹介します。今回はAndroid Beamを用いたメッセージ交換アプリを作成します(図1)。

Android Beamとは?

 4.0から追加されたAndroid Beamは、Near Field Communication(NFC:近距離無線通信)の規格に従って、デバイス間で情報のやり取りを手軽に行うための機能です。NFCに対応したデバイス同士ならば、お互いをタッチするだけで自分の連絡先やお気に入りのWebページなど様々な情報を共有できます。

 実は、スマートフォン向けのOSであるAndroid 2.3系からNFCに対応していました。2.3では、NFC関連のAPI(Application Programming Interface)が初めて追加され、このAPIを利用することでデバイスに搭載されているICチップ内のデータを読み込んだり、他のデバイスのICチップを検出したりすることができました。Android 4.0では、APIではなくOSレベルでNFCを使った通信をサポートしました。この機能がAndroid Beamになります。

 まずは、従来のNFC関連のAPIとAndroid Beamの違いをみていきましょう。

OSレベルの振る舞いを決めた

 Android Beamは、対応するデバイス上で「設定」→「無線とネットワーク」→「その他...」を選択して、「NFC」項目にある「端末が他のデバイスと接触したときのデータ交換を許可する」にチェックを入れるだけで利用できます。

 Android Beamの特徴は、どんなアプリケーションでも対応するデバイス同士をタッチすると何かが起こるということです。例えば、Android Beamを許可したデバイスを2台用意して、一方がYouTubeアプリを利用して動画を見ていたとしましょう。動画を視聴している状態で2台のデバイスをタッチすると、もう一方のデバイスでもYouTubeアプリが立ち上がり見ている動画を共有します。連絡帳アプリであれば、表示している人のデータをもう一方のデバイスに送れます。このように通信相手のデバイスにインストールされている同じアプリを立ち上げてデータを送受信できるのです。もう一方のデバイスに該当するアプリがインストールされていない場合は、Android Marketを表示できます。

図2●Android Beamが送信可能な状態
図2●Android Beamが送信可能な状態
[画像のクリックで拡大表示]

 4.0では、起動するアプリを送信側から指定できるようになりました。Android 2.3のNFC用のAPIでは、dispatchメソッドを使ったり、IntentFilterの設計を工夫したりして、起動するアプリの優先順位を制御する必要があったのです。この優先順位を適切に設計しなければ、意図せずに他のアプリが反応してしまい正しくデータを受信できないといった問題がありました。

 4.0では、アプリ側で受信デバイスに送るメッセージを作成する際、Android Application Record(AAR)というデータを含めることで、受信デバイスで起動するアプリを指定できるようになりました(図2)。

 このようにOSレベルで「NFCの使い方」を定義したので、NFCを使ったアプリがより開発しやすくなりました。執筆時点(2012年1月下旬)では、Android Beamに対応した端末がNTTドコモのGalaxy Nexusしかありません。現段階では、対応デバイスに限りがあるためユーザーに広く使ってもらうことは難しい状況です。国内メーカーにNFCを搭載したAndroid 4.0対応デバイスを早く開発してほしいところです。