色々と連携するアプリを考えてみる


最近、日本アンドロイド友の会の皆さんも交え、色々と連携するアプリを開発しよう!!という活動を進めています。元々BluetoothやUSBでつながる周辺機器と連携するストアアプリや、Internet Of Thingsの世界で、組込み機器+一般端末+クラウドの連携なども話しているので、まぁその自然な延長ってやつです。

スマートフォンは、移動しながら(基本ながら見は厳禁ですがw)とかチラ見するとかに適しているけど、会議中にちらちら見るのは失礼だったり、画面が小さく老眼にはきつかったり、タブレットは移動にも使えて、行った先でパネル的に使えるけど、細かな情報を編集したりするのは普通の人にはちょっと厳しい、ノートPCは細かな編集に便利でドカッと腰を据えてアプリを使うのに便利、家の中などでは、ハイスペックのデスクトップやオールインワンがやっぱり便利と、デバイスの特性に合わせて、アプリとして提供するコンテンツ、操作性はそれぞれに最適化されていた方が便利。

日常生活を考えると、例えば、仲間と飲みに行ったり遊びに行ったりするときには、誰かの「飲みてー」や「あそこ行きてー」、「○○やりてー」があって、知り合いと「行く?」とか「やる?」的なやり取りがあって、「どこ行くか?」「○○なんかどうよ?」、「○時に○集合だよ~」、「誰が参加するの?」「○さん呼ぼうよ」とか、当日「みんな集まってるか?」「○さん来ないけど今どこ?」、イベント中も、パーティ系なら盛り上げるための余興とか、旅先なら「あ”~あそこ行けばよかった」的な後悔を残さない仕組みとか、イベント中に起こった出来事やハプニングの記録や、幹事さんからの適時連絡とか、特定個人通しの秘密の会話支援が必要で、終わった後も、「楽しかったね~」、「またやろうね~」と振り返り…と一連の流れが続きます。これ全て一つのアプリとして詰め込むという考え方もありますが、タッチ主体の操作性では、階層が深かったり、機能が複雑なアプリは使いにくいし、今時、共有データは簡単にクラウド上に蓄積して、様々なデバイス、アプリからアクセスできるので、それぞれのシーンを切り出して、各シーン毎に用途に応じたアプリがあれば便利なのではと思うわけです。
例えば、参加する仲間が集合しているシーンでは、移動中の人は位置情報通知+集合場所に辿り着く為の支援機能を持ったモバイル端末で動くアプリと、既に待合せ場所についた人や参加したかったけど参加できずに別の場所にいる人とかが、参加者が今どこにいるかを地図に重ねてパッと見れるアプリや、参加者にリアルタイムに連絡を通知するための幹事さん向けアプリ、など、一つのシーンにおいても、役割や目的に応じて複数のアプリが考えられます。

こうやって考えていくと、他にも、パーティで良く行われるビンゴ、これも、参加者各自の数字ヒット状況を表示するアプリ、主催者側が次の玉をランダムに選び出したり色々何するアプリ、参加者向けに出玉の数字や景品の残り状況を表示するアプリの三つで構成するとか、ポーカーやコントラクトブリッジ、麻雀など、プレイヤー向けアプリ、誰かがプレイしているのを観戦するアプリ、勝負の記録を閲覧するアプリ、等々、見方をいろいろ変えるとアプリのアイデアがどんどん出てきます。Androidアプリ、Windows ストアアプリを開発している皆さん、頭の体操を兼ねて、色々と考えてみてみるのも面白いでしょう。

最近沢山市場に出つつある、Bluetooth SMART対応の時計や健康器具、面白そうなガジェット達、これも、スマートフォンやPCの機種によって、つなげられたり、つなげられなかったり。ならば、スマートフォン+ガジェット⇔PCや、スマートフォン⇔PC+ガジェットで連携させるとか、リアルタイム系のアプリはモバイル端末で、後からじっくり見る分析・活用形のアプリはタブレット、旧来のPCで、というケースもあります。

読者のみなさん、色々考えてみてくださいね。

さて、では、AndroidアプリとWindowsストアアプリを連携させる方法を紹介していきましょう。必要なのは、AndroidデバイスとWindows PC間でのデータ通信です。データを送受信さえできれば、何とでもなります。つなぎ方にはネットワークの観点から、

  • ピアツーピア
  • ローカルネットワーク
  • インターネット(クラウド)

の三種類に分類できます。先ずピアツーピアですが、考えられるのは、

  • Bluetooth RfcComm(旧来の仮想ポートにマップされてシリアル通信するタイプ)
  • NFCやWi-Fi Directによる近接間通信

の二方法です。前者は知見者の助けも借りて現在研究中。後者が将来的には本命だと思いますが、残念ながら、NFCやWi-Fiに対応しているWindows PCが少ないのが弱点。こちらについては、別途、色々とわかってきた段階で実装方法を紹介していく予定。

次にローカルネットワークですが、一番シンプルなのは、UDP Multicast Group通信の利用です。Wi-Fiも含め同じルーターに接続されていれば、あらかじめ決められたグループアドレスとグループポートを使って、アドホックに連携してシンプルな形式でデータを交換可能です。ビンゴアプリやゲーム進行、特定の誰かとのひそひそチャットなどで利用できます。Androidアプリでは、http://developer.android.com/reference/java/net/MulticastSocket.htmlで紹介されているライブラリで実装可能。Windows ストアアプリでは、https://aka.ms/Win8UDPMCGComm を参考にしてください。UDP Multicast Group通信は、家電のEchonet-Liteなどでも使われていて、スマートフォン、タブレット、PCだけでなく、.NET Micro FrameworkやArduino端末でも通信可能です。

最後のインターネット(クラウド)ですが、端末がインターネットに接続されている環境なら、これが一番楽でしょう。ここでは、Windows Azure で提供されているサービスで利用可な二つのサービスを紹介します。

  • SignalRによるリアルタイム通信
  • Windows Azure モバイルサービス

SignalRは、インターネット上でリアルタイムにデータを通信しあうためのプロトコルです。UDP Multicast Group通信のインターネット版とも言ってもいいと思います。SignalR対応のWebサイトにデータを送信すれば、そのサイトにConnectしているデバイスはすべてリアルタイムにデータを受信可能です。Windows AzureのWebサイトで、構築可能です。Windows ストアアプリ向けのライブラリやJavaScript向けのSignalR対応ライブラリが提供されています。Androidアプリでは、Xamarin向けのライブラリが提供されているのでそれを使います。Xamarinについては、http://msdn.microsoft.com/ja-jp/magazine/dn385713.aspx を参考にしてください。iOSアプリもこれで、SignalR対応のアプリが開発可能です。Windows AzureのWebサイトは無料運用も可能なので、技術検証やプロトタイピング、テストにも便利です。

Windows Azure モバイルサービスは、SQL Azureに蓄積されるテーブル形式のクラウドストレージと、アプリにPush通知を送るサービスを提供します。このサービスは、Windows ストアアプリやWindows Phoneアプリだけでなく、Androidアプリ、iOSアプリ、Webアプリ、Xamarin向けの、テーブルアクセスとPush通知に関する機能が実装されたプロジェクトのひな形をダウンロードできます。そのひな形をスタート地点にアプリ開発が進められるので、とても便利です。こちらも無料運用枠があるので、検証やテストで活用できます。

 …といったような話を、昨日1月15日の日本アンドロイド友の会の1月定例会でお話しした次第。

SignalRとWindows Azure モバイルサービスについては、MSC2013やET2013で活用したInternet Of Things系のデモシステムを披露していて、これらのデモシステムを簡略化した構成(.NET Gadgeteer+Windows Azure+Windowsストアアプリ)でのハンズオン資料を現在作成中です。出来上がり次第、公開しますのでよろしく。

Comments (0)

Skip to main content