Tech Sketch Bucket of Technical Chips by TIS Inc.

IoTとfog computing 1

Pocket

IoT」が流行している昨今ですが、IoTに適したアーキテクチャとはどのようなものでしょうか。

本連載では、Intel Edison + Raspberry Pi を IBM Bluemix と連携させるプロトタイプを例にとり、IoTデバイス側(fog)で行うべき処理とサーバ側(cloud)で行うべき処理を適切に組み合わせた、fog computing アーキテクチャについて考察します。

そもそもIoTとはなんだろう?

Gartnerの先進テクノロジのハイプ・サイクル[1] によれば、IoT(Internet of Things)は2011年から着目されはじめ、2014年のハイプサイクルでは過度な期待のピーク(Peak of Inflated Expectations)に達しているとされています。

またIoT AnalyticsによるIoT市場の予測によれば、2020年にはIoT市場で最大で7兆ドルの収益が生み出されるそうですし、国内でも経済産業省の産業構造審議会にて「IoT時代に対応したデータ経営2.0の促進」について活発な議論が行われています。

このように非常に期待されているIoTですが、そもそもいったい「IoT」とはなんなのでしょうか。

実はこの問いに対する明確な回答はありません。「IoT」という言葉はかつての「cloud」と同様、明確な定義の無いバズワードと化しており、関与する人々が自らの思いを込め様々な意味でこの言葉を使っているのが現状だからです。

(本連載における)IoTとは

ただしIoTに対する共通認識が無いとアーキテクチャを考察しづらいので、本連載ではIoTを次のような全体的な活動として捉えようと思います。

これは「様々なモノをインターネットに接続する技術」自体が価値を生むのではなく、「様々なモノやヒトなどからデータを得て処理し、現実世界へフィードバックする」一連の活動の成果として価値が生まれると考えるためです。

1.ヒトやモノや社会が相互連携して営まれる現実世界の活動を、

2.「データ」としてコンピュータの世界へ映し出し、

3.様々な種類の「データ」を組み合わせて分析・学習し、

4.得られた知見を現実世界へフィードバックすることで、

現実世界の活動へ新たな価値を生み出すこと。

iot

IoTに対するこの考え方は、経済産業省が推進している「CPS: Cyber Physical System」の概念[2] とも連動しています。CPSによって全ての産業でデータを核としたビジネスモデルの革新が生じると予想されていますが、その根幹にこの「IoT」の考え方があります。

fogとcloud

ではこの「IoT」と呼ぶ一連の活動を支えるには、どのようなアーキテクチャがふさわしいのでしょうか。キーワードは fogcloud が分散協調動作を行う fog computing です。

fog_cloud

fog computingとは

fog computingとは、ヒトやモノに近い場所(エッジ)で行う処理とクラウドで行う処理を分割し、それらが分散協調して動作する仕組みのこと[3] です。シスコシステムズがこの概念を明確化し、近年その重要性が認知されつつあります(シスコシステムズが提唱する"Fog Computing"については、このページが参考になります)。

ここで言うfogとは、ヒトやモノに近い場所で動作する機器類を連結し自律動作する機能を持たせたものを意味します。IoTデバイスとcloudを連結する単なるネットワークではありません。

全てのIoTデバイスをcloudに直結するのではなくfogの概念を持ち込み、fogとcloudで適切に役割分担することで、リソース消費を押さえ不用意な情報漏洩を防ぐことができ、かつ適切に収集されたデータをもとに適切なタイミングで適切なフィードバックを行うことができるアーキテクチャを組み立てることができるようになります。

fogとcloudの特徴

fog computingにおいては、「目の前にあるfog」と「土地代と電気代が安い雲の向こうのどこかにあるcloud」の特徴を捉え、適切に役割分担を行うことが重要となります。極端な場合で比較してみると、fogとcloudには以下のような特徴があります。

 fogcloud
ロケーション重要か?重要どこでもよい
距離目の前どこでもよい
ネットワークレイテンシ低い高い
遅延のジッタ小さい大きい
利用できる帯域非常に狭い大きい
ノード非常に多い数えられる程度
性能低い高い
消費電力非常に気にする利用者は気にしない
多様性様々な機器それほど種別は無い
移動するか?するしない
セキュリティ物理的盗難や不正利用に注意事業者にお任せ
プログラム的ノウハウが蓄積されていない標準的なプラクティスがある

fog computingのアーキテクチャ

このような特徴を踏まえると、以下のような役割分担がfog computingには適していると考えられます。

fogに適した処理cloudに適した処理
リアルタイム性が重要な処理大量データを背景にした分析や学習処理
fog内で得られた情報を組み合わせる処理ソーシャルや他のfogと組み合わせる処理
個人の機微にかかわるデータの処理匿名化されたデータの処理

またfogを考える上では、これまでのクラウドコンピューティングでは意識してこなかった次のようなポイントも重要になってきます。

fogで追加考慮すべきポイント
・電力消費をなるべく少なくする
・通信するデータ量をなるべく小さくする
・劣悪なネットワーク環境下でも確実にデータが伝達できる
・移動するヒトやモノに適応できるように、動的なトポロジー変更に適応する
・fog内の機器が物理的に盗難・破損しても、fog全体としては機能が保全される
・fog内の通信が傍受改竄された場合、不正ノードを検出して自律的に排除する

これらの役割分担やポイントを意識することで、fogにとって非常に貴重なリソースである電力やネットワークリソースの消費を押さえ、不用意な情報漏洩を防ぐことができ、かつ適切に収集されたデータをもとに適切なタイミングで適切なフィードバックを行うことのできるfog computingのアーキテクチャが構築できるのではないでしょうか。

fog computingのサンプル実装

上述したfog computingのアーキテクチャにおいては、fog全体としての冗長化やfog自身が自律的に担保するセキュリティなど、実現するには試行錯誤や専用機材が必要な技術もまだまだ多くあります。一方でfogとcloudの役割分担といった部分は、現時点でもある程度まで実装することができます。

本連載では例として、IBM Bluemix Challenge 2015に応募した「ヒトとテレビの関係を少し幸せにする Wasted energy of TV というサービス」を題材にしてfog computingのアーキテクチャを考えてみたいと思います。

Wasted energy of TVとは

Wasted energy of TVとは、日常生活において「点いているけれど見ていないテレビ」に費やされている時間を可視化するサービスです。カラーチャートによって、テレビの視聴状態というヒトとテレビの関係性を可視化します。

  • 赤色に近ければ集中してテレビを見ており、青色に近ければテレビに視線を向けていない
  • 灰色の時間は、テレビが点いていない
WastedEnergyOfTV_1

またfogから送られたデータをcloudで分析し、「テレビは点いているけれど誰も集中して見ていない状態だ」と判断すれば、自動的にテレビを消すという機能も実装しましょう。

WastedEnergyOfTV_2

このサービスを使うと、テレビを見ていたつもりでもテレビに集中しておらず、無駄に費やしてしまった時間に気づくことで、生活にメリハリがつくようになります。また集中してテレビを見ていないならばテレビが消えてしまうため、無駄な電力消費も削減できるようになります。

"今テレビを見ているか?"をfogで、"集中して見ているか?"をcloudで判断し結果を現実世界にフィードバックすることで、ヒトとテレビの関係性が少し幸せになるのではないでしょうか。

Wasted energy of TVの全体像

ではこのWasted energy of TVを、fogとcloudの役割分担を意識しながら実装してみましょう。

全体像は下記となります。3台のIntel EdisonとRaspberry Pi、赤外線センサーや赤外線LED、USBカメラ等で構成されたfogと、IBM Bluemixの複数のサービスで構成されたcloudを連携させるアーキテクチャです。

WastedEnergyOfTV_3

次回は

全体像を語るまでで、ページがいっぱいになってしまいました。次回からは、fogとcloudの具体的な実装を解説します。


[1] ハイプ・サイクル: テクノロジとアプリケーションの成熟度と採用率をグラフィカルに表示したもの。(by Gartner)

[2] Cyber Physical System (CPS): データを通じて人間を介さず、直接サイバー空間に実世界の状況が写し取られ、サイバー空間での情報処理結果が実世界の動きを制御するもの。(by 経済産業省 情報経済小委員会 中間取りまとめ報告書について)

[3] fog computing (fogging): A distributed computing infrastructure in which some application services are handled at the network edge in a smart device and some application services are handled in a remote data center -- in the cloud. (by WhatIs.com)

エンジニア採用中!私たちと一緒に働いてみませんか?