2015.07.28

クラウドとつながるIoT/WoTデバイスのためのプラットフォーム

KDDI研究所の清水です。メディア処理やアプリケーション等に関する技術等に携わっています。さて、当ブログでは先に「IoTの究極の形『WoT』にKDDIが取り組む理由」で我々のWoT (Web of Things)に対する考え方と取り組みをご紹介していますが、本記事では、Webテクノロジーやクラウドとの連携などの技術的な側面にフォーカスして深く掘り下げてみます。

クラウド連携で扱いやすくなるIoT/WoT

自宅やオフィスで、インターネットに繋がって通信できるIoT (Internet of Things)やWoT (Web of Things)のデバイスが使えるようになると、ユーザにとっては、「どこからでも操作できるようになる」等の効果が期待されます。例えば、「帰る前にスマートフォンから自宅のエアコンを操作して着く頃には適温になるようにする」「ベランダに取り付けたカメラの映像を見てプランターの土が乾いていたらリモート操作で水をやる」など、様々な使い道が考えられます。

デバイスの操作や設定の方法として、例えばブロードバンドルータ等では、同一LAN内のWebブラウザからアクセスして設定するような手順が一般的になっています。この場合、デバイスがWebサーバでWebブラウザがクライアント、という構成となります(図1)。

図1: LAN内でブラウザからデバイスを操作

図1: LAN内でブラウザからデバイスを操作

一方、IoT/WoTの時代には、自宅やオフィス内のデバイスが多種多様となります。この場合、各デバイスにアクセスするためのURLをWebブラウザ等のクライアントに毎回入力するのは非常に面倒です。このような多数のデバイスを活用して、スマートに連携させたり、リアルタイムに大量のデータを収集・分析したりするためには、クラウドが重要な役割を担うことになります(図2)。

図2: IoT/WoTデバイスとクラウドの関係

図2: IoT/WoTデバイスとクラウドの関係

クラウド指向のWoTプラットフォーム

さて、IoT/WoTデバイスとクラウドの連携を前提とすると、前述のWebブラウザからデバイスに直接アクセスする形態とは少々勝手が異なります。ユーザのWebブラウザもIoT/WoTデバイスもクライアントとしてクラウド(Webサーバ)にアクセスするため、デバイスがWebサーバである必要はなくなります(デバイスのWebサーバがクラウドと通信しても構いません)。よって、クラウドとの連携が前提であれば、デバイス側の動作もWebアプリと同じ作法で実装できる方が好都合と言えます。このような構成では、Firefox OS (以下、FxOS)のように、Webブラウザのエンジン部分(ユーザエージェント; 以下、UA)をベースとしたOSが好適なプラットフォームとなります。そして、クラウド(サーバ)、デバイス、クライアントも全てWebのテクノロジーだけで構築する、Web of Thingsらしい全体像が出来上がります(図3)。なお、LAN内でユーザのWebブラウザから直接アクセスできるようにするために、FxOSのAPIを使ってWebサーバを実装しても構いません。

図3: Webブラウザ(UA)ベースで構築するWeb of Thingsの技術的構成

図3: Webブラウザ(UA)ベースで構築するWeb of Thingsの技術的構成

ここで、クラウドと連携動作する前提のWoTデバイスの場合、クラウドと連携するための通信や挙動を設計するアプローチとして、次の2通りが考えられます。

1.プロトコルやフォーマットを共通化・標準化(図4(a))
クラウドとWoTデバイスの間で通信するプロトコルやデータのフォーマットの仕様を予め規定し、これに従ってクラウドとWoTデバイスそれぞれを設計・実装します。規定に従っている限りではクラウドやWoTデバイスを別々のメーカーやベンダ等が開発しても確実に互換性が保証されますが、実装が制約されるため独自機能や拡張、アップデートなどの自由度が低くなるというデメリットが生じます。

2.連携動作のロジックごとWebアプリとして実装(図4(b))
UAベースのプラットフォームでは、WoTデバイスがクラウドからWebアプリをダウンロードして起動することができます。よって、プロトコルやフォーマットに従って通信する動作ロジック自体をWebアプリで実装してクラウドからWoTデバイスに渡すようにすることで、WoTデバイスもプロトコルやフォーマットに対応した動作が可能になります。すなわち、自由にプロトコルやフォーマットを規定しても確実にクラウドとWoTデバイスの間で整合性が取れるのがこのアプローチの利点となります。

図4: WoTデバイスとクラウドの連携のパターン

図4: WoTデバイスとクラウドの連携のパターン

UAベースのプラットフォームが快適に動作するには、WoTデバイスに対して十分なパフォーマンスでUAが動作するレベルの性能が求められます。一方、当ブログの記事「オープンソースプロジェクトMozOpenHardに参加して:FirefoxOSが動く小型ボードコンピュータ「CHIRIMEN」の開発」にて、FxOSが動作するWoTデバイス「CHIRIMEN」を紹介しているように、Webアプリを利用したWoTデバイスのクラウド連携は十分現実的なものとなってきています。

これからのWoTとWeb標準

これまで述べてきたWoTデバイスやクラウド、クライアントWebアプリは、実装スキルやクラウドの運用ノウハウといった、汎用的なWebテクノロジーを共通に適用できるのが大きな特徴です。また、継続的に進められているWeb標準の拡張によって、WoTもまた同様に進化していきます。

1.WoTデバイスとWebのセキュリティモデル
UAベースのプラットフォームの大きな特徴の一つとして、クラウドサービスでは日常的に運用されているWebのセキュリティモデルをそのまま適用できるという点が挙げられます。例えば、悪意あるサーバと勝手に通信することを防ぐためにUAで適用される同一生成元ポリシー(Same-Origin Policy)や、UAのクロスオリジン通信をクラウド側から制御するCross-Origin Resource Sharing (CORS)、UA側に意図せぬリソースの読み込みや不正なスクリプトの実行を防ぐためにクラウド側から制御するContent Security Policy (CSP)等が、UAベースのWoTデバイスとクラウドの連携においても活用できます。

2.多種多様なJavaScript API
HTML5の登場によって利用可能となった多数の高度な機能は、当然ながらWoTデバイスでも活用できます。WebSocketでクラウドと双方向に通信したり、クライアントWebアプリにWebRTCでリアルタイムに音声や映像を送ったりすることも、もちろん可能です。さらに、今後の標準化に向けて、W3Cでは例えばBluetoothNFCなどのAPIの議論が進行中です。(セキュリティやプライバシー等に配慮して慎重に議論が進められています。)

3.Webアプリのリアルタイム連携の強化
Webアプリによるリアルタイム連携をさらにスマートにする新しいWeb標準の仕様策定も進行中です。例えば、現在W3Cで標準化が進められている新しいAPIの一つに、Webアプリを開いていない間でも特定のバックグラウンド処理を可能にするService Workersがあります。本来はキャッシュの管理が主な機能ですが、他にも拡張機能として、プッシュ通知を受け取るPush APIや、ある場所(緯度経度)の近くに移動したことを通知するGeofencing API等の検討が進んでおり、Webアプリを開いていない間でも何らかのイベント発生時にUAに通知するための仕組みの標準化が着々と進んでいます。これらのAPIの標準化が進むと、クライアントWebアプリを開いていない時でもWoTデバイスとの柔軟なリアルタイム連携が可能になります。

まとめ

UAベースのWoTデバイスがクラウドと連携して動作すると、HTML5ならではの柔軟性や高い互換性、これまで確立されてきた膨大なクラウド運用のノウハウ、Service WorkersやWebRTC等のようなリアルタイム連携を強化するAPIの拡大、等の恩恵を受けられるという大きな利点があります。これによって、非常に幅広い目的や用途で(マルチユース)、多種多様なWoTデバイスやスマートフォン、タブレット等が(マルチデバイス)、それぞれのデバイスに適した通信によってクラウドと連携して(マルチネットワーク)、幅広いサービスを迅速かつ柔軟に構築することがWoT時代では十分可能になるのです。

カテゴリ
タグ

KDDI株式会社
KDDI研究所

清水 智行

新着記事
タグ
アーカイブ
カテゴリー
Contact
TOP