#はじめに
皆さん、Azure やってますか? IoT やってますか? 儲かってますか?
さて、今回は Microsoft Azure で提供されている IoT 向けサービス の最新情報について前編/後編に分けて整理してみます。
「もう Azure で IoT やってるよ!」という方や「これから IoT やりたいと思っているよ!」 という方に、本記事の内容がお役に立てば幸いです。
#IoT Plug and Play (Preview版) の発表から読み解く、Azure IoT サービスの変遷
Azure IoT 界隈での新しい話と言えば、2019月8月22日(US時間)に IoT Plug and Play Preview版 の提供が開始された事はご存知でしょうか?
IoT Plug and Play is now available in preview (Microsoft Blog - Announcements)
今回発表された IoT Plug and Play は、一言で言えば IoT デバイス側の開発・実装を効率化する 新しい仕組みです。
さて、この IoT Plug and Play のサービス、どのような目的や背景があって登場したのか気になりませんか?
これまで提供されてきた Azure の IoT 向けサービスの歴史を理解すると、その答えが見えてきます。
##IoT システムを構築する上での課題とは?
センサー&デバイスから収集したデータをインターネット(クラウド)上に送信し、データを分析、可視化、更にデバイス側にフィードバックするような IoT システムの構築においては、デバイス側とクラウド側の両方の実装スキルが必要ですよね。
クラウド側は Microsoft Azure の PaaS や SaaS を利用して、比較的簡単に構築できるようなサービス群が揃っていましたが、デバイス側の構築・実装は目的に合わせて様々なセンサーやデバイスを組み合わせたシステムを個別に開発する必要があり、この部分をどのように効率化するかが、従来より課題になっていました。
ここでのポイントは、IoT システムを構築する上では、クラウド側の課題とデバイス側の課題の両方が存在するという事です。
それでは、Azure の IoT 向けサービスが進化する過程において、それぞれの段階でどのような課題をどう解決するサービスになってきたかを見てみましょう。
##前編/後編 ダイジェスト
- 前編
- 第1段階: Azure の PaaS を組み合わせて IoT システムを構築する
- 第2段階: IoT の一般的なシナリオを実現する構成済みのPaaS 「IoT Solution Accelerators」
- 後編
- 第3段階: SaaS型で簡単構築**「Azure IoT Central」**
- 第4段階: IoT をもっと簡単に**「IoT Plug and Play」**
#第1段階: Azure の PaaS を組み合わせて IoT システムを構築する
Azure で IoT と言えば、クラウド側は**「IoT Hub」や「Stream Analytics」などのPaaS を組み合わせて構築する手法**が一般的でした。
IoTデバイスをクラウドと接続してデータを収集する、集めたデータを分析・加工する、データを蓄積する等の**目的に合わせた PaaS の「部品」**が提供されているため、これらの「部品」を組み合わせる事で、オンプレのサーバーや IaaS (仮想マシン) で IoT のシステム構築するよりも、素早くかつ効率的に進める事ができるといった特徴があります。
##クラウド側の構築: Azure IoT 向け PaaS
例として、IoT のシナリオで良く使われる代表的な Azure の PaaS を簡単に紹介します。
この他にも沢山ありますが、ここでは、まずはどのような種類のPaaSが提供されているかのイメージを掴んで頂ければOKです。
###Azure IoT Hub
IoT デバイスと Azure 間の双方向通信を可能にするマネージド サービス
[サービス概要] Azure IoT Hub
[ドキュメント] IoT Hub のドキュメント
###Azure Stream Analytics
クラウドからエッジまでのサーバーレス リアルタイム分析
[サービス概要] Azure Stream Analytics
[ドキュメント] Stream Analytics のドキュメント
###Azure IoT のリファレンスアーキテクチャ
そして、これらの PaaS の組み合わせは、**「王道パターン」や「お手本」として「リファレンスアーキテクチャ」**があります。こんな感じ。
##デバイス側の実装: Azure IoT SDK / IoT Edge
**「クラウド側は分かったけど、じゃあデバイス側はどうするの?」**と言うと、デバイス側は、オープンソースの Azure IoT SDK (Azure IoT Hub Device SDK/Service SDK) を使用してアプリケーションを開発し、デバイス(IoT ゲートウェイなど)に実装します。
Azure IoT SDK は、C や C#(.NET)、Python、Node.js、Java などのプログラミング言語ごとに SDK が提供されていて、これでクラウド側の Azure IoT Hub と デバイスを接続してデータの送受信やデバイスの管理を実現します。
GitHub - Azure IoT SDKs
[ドキュメント] Azure IoT Hub SDK の概要と使用方法
ちなみに、この辺り、途中で Azure IoT SDK を拡張した Azure IoT Edge という新しいSDK も提供され始めました。名前の通り、**「エッジコンピューティング」*を意識した仕様になっています。
※余談ですが、 IoT Edge はリリース当初は「Azure IoT Gateway SDK」*なんて呼ばれ方をしていて、今でも一部ドキュメント上にその名残が残っていたりします。
ちょっとややこしいのですが、IoT Edge はアーキテクチャが異なる2つのSDKがリリースされているので注意しましょう。
コンテナー技術を採用し、 Azure の PaaS (Machine Learning や Stream Analytics)をコンテナーモジュール化してエッジデバイス側で実行できるのは IoT Edge (V2) のほうです。
GitHub - Azure IoT Edge (V2)
GitHub - Azure IoT Edge (V1)
#第2段階: IoT の一般的なシナリオを実現する構成済みのPaaS「IoT Solution Accelerators」
さて、第1段階の**「PaaS を組み合わせて IoT システムを構築する」**手法には少々課題がありました。クラウド側とデバイス側の両方の実装スキルが必要だという点です。
リファレンスアーキテクチャがあるものの、**「これから IoT を始めたい」**という方は、この辺りが壁となって先に進めるのが難しかったのも事実です。
そこで登場したのが半完成品のソリューションである**「IoT Solution Accelerators」*です。
※また余談ですが、この「IoT Sloution Accelerators」は、リリース当初は「Azure IoT Suite」*なんて呼ばれ方をしていて、今でも一部ドキュメント上に(略
**「IoT Solution Accelerators」**は、IoT の一般的なシナリオ(例えば、製造装置のリモートモニタリングや、予知保存など)に合わせて、自動的にPaaSの環境を構築してくれるものです。
Azure IoT ソリューションアクセラレータのポータルサイトから対象のシナリオを選択するだけで、自分のAzureの環境に**「必要なPaaSを組み合わせた環境一式」**がデプロイされます。
[ドキュメント] IoT ソリューション アクセラレータのドキュメント
しかも、この**「IoT Solution Accelerators」は、「Azure IoT リファレンス アーキテクチャ」**の推奨事項に従って構築されていますので、IoTシステムとしての完成度が非常に高いです。
[ドキュメント] Azure IoT リファレンス アーキテクチャの概要
##IoT Solution Accelerators でリモートモニタリングをデプロイするとどうなる?
試しに、IoT Solution Accelerators のポータルサイトから、リモートモニタリング(Remote Monitoring) のソリューションをデプロイしてみます。
- まずは「Remote Monitoring」のソリューションを選んで…
- こんなサービスが自動でデプロイされるよ!と教えてくれます。
- デプロイするソリューションに名前を付け、デプロイする対象のAzureのサブスクリプションやリージョン(ロケーション)を選んで行きます。(25分くらいでデプロイが完了するみたい)
- あとは自動的に事が進みます。(途中でエラーが出ないように、祈りましょう)
- 無事にデプロイできたようです。
- ちなみに、Azure Portal サイト( https://portal.azure.com/ )から見ると、こんな感じで見えます。ちゃんとリソースが作られていますね。
- 作成された環境(Web Apps)にアクセスすると、デプロイされたリモートモニタリングのソリューションが動いているのが分かります。
- サンプルのデバイス(チラーとか、トラックとか、エレベーターとか)が動いていて、稼働状況をモニタリングできるようです。
##それで、IoT Solution Accelerators は実際どうなの?
「IoT Solution Accelerators」は、これまで自分でPaaSの部品を組み合わせる必要があった所を自動化してくれる、一見、素晴らしいソリューションのように見えます。
でも、(恐らく)あまり流行りませんでした。
何故かと言うと、ここで自動作成されるIoTのシステムは、そのまま使用できるというよりも**「カスタマイズして使う前提」**のものです。完成度が高い反面、逆にカスタマイズがしにくいという代物だったからです。(もちろん、スキルに依存しますが)
そのため、IoT システム構築の**「お手本」**としては優秀ですが、**あくまでも「お手本」**であり、残念ながら実ビジネスでこれが採用されている話はあまり聞きませんでした。
それに加えて、**「IoT Solution Accelerators」**では、クラウド側の構築は手軽になるものの、デバイス側の実装の部分は、依然、自力で(Azure IoT SDK を使って)開発する必要があり、デバイス側の実装における課題はまだ残ります。
※「お手本」のソリューションのアーキテクチャとしては優秀なので、興味のある方は是非デプロイして中身のリソース構成を確認してみてください。
#まとめ
ここまで 【2019年9月版】過去の歴史から学ぶ Azure IoT サービス の変遷 (前編) では、Azure の IoT 向けサービスが、これまでどのように進化してきたのか をテーマに、第1段階として Azure の PaaS を組み合わせて IoT システムを構築する 方法と、第2段階で登場した 構成済みのPaaS「IoT Solution Accelerators」 について説明しました。
両方とも、**クラウド側の構築は「PaaS の組み合わせが中心」**であり、**デバイス側の実装には「Azure IoT SDK/IoT Edge を使ってアプリケーションを開発する」**必要があります。
つまり、デバイス側とクラウド側の両方の実装スキルが必要な状況はまだ解決していません。
この辺りが、続く 第3段階、第4段階で Azure の IoT 向けサービスでどのように進化して行くのか、次回、**【2019年9月版】過去の歴史から学ぶ Azure IoT サービス の変遷 (後編)**で説明します。
【2019年9月版】過去の歴史から学ぶ Azure IoT サービス の変遷 (後編)は こちら からどうぞ。