IoT Gatewayの要件
IoT Gatewayとはここでは以下のような定義をして、いくつか市場にあるプロダクトを考察したいと思います。
-
IoTの3階層アーキテクチャの中でIoT Deviceを集約し、EdgeのGatewayとしてDatacenterと通信を行うハードウェアやソフトウェアのこと。
-
IoTの3階層アーキテクチャとは、IoT Device (Edge Device)、Iot Gateway (Edge Gateway / Smart Gateway)、IoT Service (Datacenter / Backend Service)のこと。
-
主な要件
-
リモートからIoT Gatewayにアクセスできる
-
アプリの更新、ファームウェアの更新、監視や診断ができる
-
センサーやマイコンなどEdge DeviceをGPIOや様々な無線規格で接続してインターネットにつなげることができる
Eclipse Kura
OSGiという歴史のあるコンテナをベースにしたJavaのソフトウェアです。いまさらOSGi?という感じはしますが、Eclipse IoTでも中核を担い、現時点では本命だと思います。EurotechやRed Hatが中心になり開発を進めています。最近ではApache Camelの統合や、BackendのEclipse Kapuaとの連携など非常に開発が活発になっています。
DeviceHive
DeviceHiveはDataArtがOSSで開発をしているソフトウェアです。AllJoynに準拠しD-BusにBackendのサービスを接続できる興味深いアーキテクチャだったのですが、いろいろあったみたいでAllJoynの開発は止まっています。現在ではIoT GatewayはシンプルなPythonやJavaのクライアントになっています。
Resin.io
Resin.ioは、EtcherというSDカードやUSBメモリにイメージを焼くツールの開発元としても有名です。次にご紹介するAGILE IoTにも参加していますが、Raspberry Pi 2などARMv7で動作するDockerイメージを開発しています。How it worksがわかりやすいですが、DockerをインストールしたカスタムのYoctoベースのOSをクラウド上でビルドして手元のSDカードに焼くことができます。アプリのインストールはDockerを使うので、Ubuntu Coreのsnapsに近い感じです。
AGILE IoT
AGILE IoTはユーロのHorizon2020プログラムに参加しています。開発が始まったばかりですがロードマップが提示され2018年末頃にはBackendの実装も予定されています。KuraのOSGiと違い言語非依存で、 D-BusとDocker/Snappyをプラガマブルなアーキテクチャが特徴です。Eclipse IoTにもEclipse Agilis IoT Gatewayとしてproposalを提出しています。
IoTivity
Thread Groupと提携、AllSeenを統合したOCFが前身のOICから継続してIoTivityを採用しています。IoT規格がOCFに統一された形となり、おそらくIoT標準になるのだと思いますが、仕様が大きすぎて追いつけません。
Linaro LITE
Linaro IoT and Embedded (LITE) Segment Groupです。ARM陣営のLinaroがIoTの3階層アーキテクチャのリファレンスを2016年12月を目標に策定しようとしています。Edge DeviceはZephyr、IoT GatewayはUbuntu Core、BackendはRHELベースらしいです。
Ubuntu Core
snapsは新しいパッケージフォーマットとしてUbuntu Coreの他にArch Linux やDebianなどでも利用できます。Dockerコンテナのようにアプリを配布できます。Dell Edge Gateway 5000、DeviceHive、IoTivity、Kaa、LITE、AGILE IoTなどのIoT Gatewayで採用しています。だだしUbuntu 16.04ではsnappyコマンドではsnapパッケージをビルドできなくなり、snapcraftのsnapコマンドを使います。そのためまだ古いコマンドを使っているIoT Gatewayのソフトウェアは対応OSのバージョンの確認が必要になります。