SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

IoTとfog computing
~「Wasted energy of TV」というサンプル実装

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第22回

fog computingのサンプル実装

 それでは手元にある機材を用いて、fog computingの概念を意識したサンプル実装を行ってみましょう。プロダクトレベルでfog computingを実現する場合、fogとcloudの対障害性の確保や通信が不安定な場合への対応、fogとcloudおよび通信経路のセキュリティの担保など、解決すべき課題がたくさんあります。しかしそれらすべてを考慮するのは大変なので、このサンプル実装ではまず、fogとcloudの役割分担にのみ着目して実装を行います。

サンプルアプリの概要

 サンプルアプリとして、ヒトとテレビの関係を少し幸せにする「Wasted energy of TV」というサービスを考えてみましょう。

 Wasted energy of TVは、日常生活において「点いているけれど見ていないテレビ」に費やされている時間を可視化します。赤色に近ければ集中してテレビを見ていますが、青色に近ければテレビが点いているけれど見ていないという状態を表します(灰色はテレビが点いていない時間です)。

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

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

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

サンプルアプリのアーキテクチャ

 このWasted energy of TVは、Intel EdisonRaspberry Piが中心となって構成するfogと、IBM Bluemixが中心となるcloud、およびGUIとしてWebブラウザが連携して動作します。

fogを構成するデバイスとプログラム

 fogは次のデバイスで構成しました。

  • Intel Edison Kit for Arduino(Yocto Linux 3.10.17-yocto-standardカスタム)x 3台
  • Raspberry Pi Model B+(Raspbian 3.18.11+)x 1台
  • 赤外線センサー: PL-IRM0101
  • 赤外線LED: OSI5FU5111C
  • USBカメラ: LOGICOOL C270
  • 単極双投ON-OFF-ON型トグルスイッチ
  • カラーLEDやカーボン抵抗など

 Edison 1号機はRaspberry Piとクロスケーブルで直結されており、Raspberry Pi経由で赤外線センサーと赤外線LEDがつながっています。Edison 2号機にはUSBカメラがつながっており、Edison 3号機はInternetに接続されています。これら3台のEdisonはad-hocなWi-Fiネットワークで連結されており、そのWi-Fiネットワーク上にConsulクラスタが立ち上がっています。

fogの環境構築

 fogの環境構築に関する詳細は、Githubで公開している環境構築手順書(PDF)を参照ください。

Consul

 Consulは、Hashicorp社が提供するオーケストレーションツールです。単一障害点がないマルチマスタークラスタを構成することができ、運用自動化に有用なさまざまな機能を提供します。

  1. ノードやサービスの死活管理
  2. 障害や環境構成の変化、外部から発火させたイベントなどに応じた処理の自動実行
  3. 分散KVSや分散DNS

 また、これらのEdisonやRaspberry Piでは、赤外線センサーや赤外線LED、USBカメラを制御するためのPythonプログラムが動作しています。プログラムの詳細は、Githubのwasted_energy_of_tv_iotをご確認ください。

cloudを構成するサービスとプログラム

 cloudは次のサービスで構成しました。

  • MQTT Broker: IBM Internet of Things Foundation
  • Key-Value DBサービス: IBM Bluemix MongoLab
  • IBM Bluemix Node-RED

 MQTT BrokerのマネージドサービスであるInternet of Things Foundationを利用して、fogとcloudを接続しデータを送受信します(MQTTの詳細に関しては、IoT時代を支えるプロトコル「MQTT」などをご参照ください)。

 Bluemix上に構築したNode-REDアプリが、MQTT BrokerやKey-Value DBサービスと連携し、fogから得たデータの蓄積や分析を行います。Wasted enegy of TVのBluemix Node-REDアプリをexportしたjsonファイルは、Githubのwasted_energy_of_tv_noderedをご確認ください。

Node-RED

 Node-REDは、IBM Emerging Technologyチームが作成しOSS公開しているブラウザ上でビジュアルプログラミングを行うツールです。「ノード」をマウスで接続することで、データが入力されてから出力されるまでの一連の処理フローをGUIでプログラミングできます。

GUIのプログラム

 GUIはHTML5と次のJavaScriptライブラリで構成しました。これらのHTMLやJavaScriptは、BluemixにNginxやApacheなどのhttpdを立ててホストすると良いでしょう。

  • Bootstrap 3.3
  • RequireJS
  • jQuery 1.11
  • jCanvas

 Webブラウザ上で動作するJavaScriptが、cloudのBluemix Node-REDアプリが提供するREST APIにAjaxを用いてアクセスし、Key-Value DBサービスに蓄積されたテレビの視聴状況データをGETして可視化します。また、Node-REDアプリが提供するREST APIに対して、テレビの自動消灯の指示をPOSTすることもできます。

 GUIプログラムのソースコードは、Githubのwasted_energy_of_tv_guiで公開しています。詳細はソースコードをご確認ください。

次のページ
まとめ

この記事は参考になりましたか?

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

松井 暢之(TIS株式会社)(マツイ ノブユキ)

TIS株式会社 コーポレート本部 戦略技術センターに所属。アーキテクチャ設計やデータモデル策定、フレームワーク構築などバックエンド側のアーキテクトとしてプロジェクトに従事していたが、現部門への異動を契機に戦略技術の検証や新規サービスの事業企画に軸足を移す。近頃はなぜか、インフラ・運用のパターン化と自動化を目...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/9095 2015/12/04 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー