2019年 IoT(モノのインターネット)最新動向

文責: ファームロジックス横山(2019年7月24日 )

モノのインターネット "IoT" という言葉を耳にするようになって数年が経ちました。当初は「よく分からないけど、何か新しいビジネスに繋がるらしい」という、漠然としたモヤモヤ感、キラキラ感ばかりが目立つキーワードでした。

しかしながら最近は、ようやく地に足の付いた、具体的な技術として認知され始めています。ここでは、2019年現在の最新の IoT 事情、要素技術、応用例を紹介していきたいと思います。

IoT を定義する

"IoT" という言葉がようやく具体的なイメージを持ち始めたとは言え、まだまだ「これが IoT だ」という確立した定義がある訳ではありません。もし、皆様が何か新しいキラーアプリケーションのアイデアをお考えならば、それこそが新しいビジネスチャンスであり、IoT という言葉の定義すら変えてしまう可能性があります。しかしまずは、多くの人が同意できる定義をしてみましょう。

すなわち、IoT とは

  • モノが自律的(ひとりでに)にネットに情報を送り出し、
    あるいは
  • モノがネットから自律的に情報を受け取って働く、あるいは動作を決める

「技術」や「システム」「応用(アプリケーション)」の総称です。

つまらない定義だなあ、とがっかりされる方が多いと思いますが、まさに「IoT の活用方法はアイデア次第」と言われる、ゆえんでしょう。

しかしこれだけはピンと来ないでしょうから、アプリケーションの視点から、少し具体的な例を挙げてみましょう。(おそらく皆様のほうが、実際に抱えていらっしゃる問題領域において、もっと現実的なテーマをお持ちのはずです。)

  • 冷蔵庫: 庫内に入っている食品の種類、賞味期限、開封状況をネットで教えてくれる
  • 照明器具: 人が不在なのに長い間点灯したままになっていることを知らせてくれる
  • 郵便受け: 新しい郵便物が届いたことを教えてくれる
  • 玄関: 錠(ロック)がずっと開いたままになっていることを知らせてくれる
  • 子供の自転車, お年寄の靴: お子さんや御高齢者の方が、いまどこに外出しているか知らせてくれる(プライバシーへの配慮が必要ですね)

いま挙げたのは、情報をネットに送り出す側です。逆に、ネットから自律的に情報を受け取って動作する、にはどんな例が考えられるでしょうか。実は、これらの中には既に実用化され、ネットショッピングで手に入るものもあります。

  • 自動散水機: 午後の天気予報が雨なので、今朝の散水は中止する
  • 冷蔵庫: 電力会社からの節電のお願い通知により、自動的に庫内の温度を 1度上げる
  • ガスコンロ: 火が着いているのに家族が外出してしまったので、メールで知らせると同時に、ガス栓を自動的に閉じる
  • エアコン: 家族が自宅最寄りの駅まで帰ってきたので、あらかじめ部屋を涼しくしておく

なぜ、いま IoT なのか

これらの例を見ていると、確かにアイデアとしては面白いかも知れませんが、過去の技術でも実現できた応用のようにも思います。どうしていま IoT なのでしょうか。鍵となる理由、あるいは背景には、大きく 3つがあると思います。

  • 機器をインターネットに繋ぐコストが大幅に小さくなった
  • インターネットで、無償あるいは安価な情報を手に入れられるようになった
  • スマホが普及し、モノと人が容易にコミュニケーションできるようになった

高嶺の花だったインターネット

昔話で恐縮ですが、かつて、パソコンをインターネットに繋ぐためにとても費用がかかる時代がありました。インターネットが技術者の間で広く知られるようになったのは 1990年代になってからですが、その当初、まず第一に職場や家庭でインターネットを利用したくても、インターネットに繋ぐ方法が明確でありませんでした。大きな企業や大学では通信会社に相談して専用回線を敷設したり、また個人では電話回線を使ってインターネット接続プロバイダと契約したりしました。前者はせいぜい 64〜128kbps という低速度でしたし、後者は、ネットに接続している間、ずっと電話料金がかかるという、今では想像できない時代だったのです。

インターネットが普及する以前にも、職場などでパソコンを繋ぎ合わせる LAN(ローカルエリアネットワーク)という技術がありました。いまでは Wi-Fi 機器などを買ってきて数千円程度から「おうち LAN」を実現できますが、当時はパソコン一台一台に 10万円近くするネットワークカード(NIC)を購入し、さらに有償のネットワーク運用ソフト(NetWare など)を導入し、さらに何十万円もするネットワーク集線機器(トランシーバー, ブリッジ, ルーター)が必要だったのです。それでも実現できることと言えば、社内電子メールやファイル共有、遠隔のコンピュータをコマンド操作できるくらいで、Gmail も Dropbox も、もちろん LINE もありませんでした。

Wikipedia より

当時は、社内 LAN やインターネットは、研究者やホワイトカラー社員の生産性を高められそうな職場において、限定的に使われるような状態でしたから、インターネットあるいは LAN というものに将来性を感じつつも、例えば郵便受けやコーヒーメーカーをネットに繋いだら便利だろうという話をしても、笑い話のタネにしかなりませんでした。

その後 20年以上を経て、インターネットとパソコン、さらにはスマホは当たり前の時代になりました。いま、ネットワークに繋がらない情報機器はほとんど存在しません。つまり、人とインターネットが繋がっているのは当たり前の時代になった訳です。しかしながら、いったん目を家電製品や社内の生産設備等に目を移すとどうでしょう。皆様の家庭の冷蔵庫はネットに繋がっていますでしょうか。エアコンと LINE でチャットができますでしょうか。工場の生産ラインが停止して、機器からメールが来たりしますでしょうか。

家電製品は価格競争が非常にシビアであるため、またさらに応用分野がいまひとつ明確でなかったため、インターネットに繋がる機器はほとんどありませんでした。また、工場の生産設備は何十年にもわたり利用されるもので、流行りのインターネットとは比較的疎遠な存在でした。そして、家電や生産設備に共通の問題としては「ネットワークのセキュリティ」があるでしょう。(エアコンや製造装置が外部から不正に操作されたら困ります。) 以下、このようなインターネットの使い方を「組込インターネット(機器組込みのためのインターネット)」と呼ぶことにしましょう。

ここ数年、インターネットの接続費用は大きく下がりつつあります。モバイルルーターと呼ばれる機器は、まだ 1万円程度しますが、低額の通信会社と契約すれば、月額数百円程度で常時インターネット接続の環境を得られるようになりました。組込インターネットのための通信環境が低額になったことから、たとえば郵便受けやお子さんの自転車にインターネットを接続するのも、もはや非現実的とは言えなくなったのです。

さらに、それだけにとどまらない衝撃が、組込機器技術者やアマチュア工作家の間に広がったのが、2014年のことです。言うなれば、組込インターネットのビッグバンです。

Wi-Fi に繋がるマイコンが数百円で買える時代に

2014年頃、 Espressif ESP8266 というわれわれが今まで聞いたことのない無名の会社のマイコンチップを、ネット上で見聞きするようになりました。なんでも、オークションサイト eBay で数ドルで手に入り、極めて小型ながらアンテナを基板上に内蔵し、電池さえ繋げば Wi-Fi、インターネットに繋がってしまうというのです。

このマイコンチップは、多くの場合この写真のような簡便な基板に実装され、シールドも規格認証マークもありませんでした。そのため、厳密には米国でも日本でもアジア諸国でも電波関連法的には問題のあるものだったのですが、技術者やアマチュア工作家には、極めて大きな驚きで迎えられたのです。

それまでにも、ネットに繋がるマイコンはあったのですが、高価だったり、Wi-Fi 変換器が別途必要だったり(つまり無線ではなくて有線 LAN だった)、プログラミングが面倒だったりと、あまり普及していませんでした。いっぽう ESP8266 マイコンでは、簡単なプログラムを書くだけで Wi-Fi アクセスポイントに繋がり、インターネット上のウェブサーバーにアクセスすることができ、また反対に、マイコンチップが Wi-Fi アクセスポイントやウェブサーバーにもなることができるという素晴らしい製品だったのです。おまけに数百円という低価格でしたから、この世界であっという間にデファクトスタンダードになりました。

余談ですが、近年は後継の ESP32 というチップも発売され、同社からきちんとシールドパッケージ化された WROOM-32 というマイコンモジュールとして販売されています。

ESP8266 も ESP32 も Arduino 開発環境でプログラムを設計でき、限定的ながら Python という流行りの高級言語でプログラムを書くことも可能です。もちろん、FCC や TELEC 等の(無線装置としての)認証を得ているので、堂々と職場や家庭で利用できます。

さらに余談ですが、先日の中国での STAR Market 市場での IPO(新規上場)により、一気に時価総額 180億円の企業に躍り出た、というニュースもありました。Espressif 社は、もはや「見知らぬ中国製マイコンメーカー」とは呼べないでしょう。

天気予報をマイコンに取り込む

IoT 普及の立役者のもう一つが、インターネット上の、無償あるいは安価な情報源です。例を挙げると、その一つが天気予報であり、鉄道運行情報であり、株価情報でしょう。

天気予報が無償、あるいは安価に入手できることをビジネスモデルに取り入れた企業の一つが、Rachio 社です。同社は家庭用のスプリンクラーを販売する(米国ですねぇ)企業ですが、その製品の特徴は、天気予報を参考にして散水スケジュールを決定する、というところです。技術的には誰でも実現できそうですが、そのアイデアには頭が下がります。この製品の実現の鍵は、部品コスト削減に加えて、天気予報のデータをインターネットから入手できる、というところにあるのではないでしょうか。多くの気象情報が近年、ウェブサイトで無償で手に入るようになりましたが、さすがにこのような製品で無償の天気予報をウェブから「抜き出す」のは問題でしょう。おそらく、気象情報会社と何らかの契約を結んで、天気予報を利用しているものと思います。おそらく、その費用は高額なものではないのでしょう。

ところで、天気予報を初めとして、ネット情報サービス会社がインターネット経由でコンピュータが扱える形のデータを提供する技術として API (Application Program Interface) というものがあります。API を使うと、サービスの利用者が正式なフォーマット(約束事)でプログラムを作成することにより、正しく効率のよい形でデータを取得したり、逆に、サービス会社にデータを提供したりすることができます。無償で使える API もありますし、有償サービスもあります。(そんなことをしなくても、天気予報サイトのウェブサイトの情報からデータを抜き出せば良いのではないかと思う方もあると思いますが、ウェブサイトでは掲載情報の二次利用、自動取得を禁止しているところがあるので注意が必要です。)

個人で利用できる API を提供している気象サービスとしては、Weather Underground 社が有名だったのですが、無償 API サービスが 2018年に終了してしまいました。他に探してみたところ、OpenWeather という会社が API を提供していることが分かりました。有償サービスの他に、一定の制限(1分間あたりの取得回数、取得できる情報の範囲)があるものの無償の API も利用できます。(いっぽう、日本国内で探してみると、権威も信頼性も高いのでしょうが、概ね月額数万円を要求されるそうで、個人や小企業で利用するのは非現実的です。日本人としては、ちょっと残念なところです。)

別のネット情報源の例も挙げましょう。鉄道運行情報を API として提供している企業はなさそうですが、株価情報では API を提供している企業があります。例としては Quandl 社や Alpha Vantage 社があります。これらは IoT の分野というより、機械学習による株価やインデックス、為替レートの予測の研究や投資目的に利用されているようです。

もう一つ、大事なプラットフォーム(サービス)の紹介を忘れてました。それは IFTTT です。 IFTTT は「If This, Then That」の略とされ、ネット上の「情報の発信者」(例えば天気予報)と「情報の受信者」(例えばスプリンクラー)を、利用者のアイデアのままになんでも繋いでしまおう、という壮大なアイデアです。現在では、Amazon Alexa も OK Google も IFTTT に繋がり、声で話しかけるだけでペットにゴハンを上げることができるなど、さまざまな商用サービスとも連携しています。一度お試しいただくことをお勧めいたします。

スマホの普及

ところで、IoT 普及のもう一つの鍵がスマートフォンであることは言うまでもないでしょう。いくら郵便受けや冷蔵庫がネットに繋がっても、人間がいつでも気軽にネットを利用できるスマホがなければ、IoT の時代はやってこなかったでしょう。人間に身近にネットがあるからこそ、モノのインターネットに光が当たってきたということができるでしょう。

IoT を支える技術

さて、ここからは現代の IoT を支える要素技術を説明していきます。何しろ時代の変化が早いので、もしかすると 3年後には全く異なる要素技術で IoT が提供されているかも知れませんが、まずは今日現在の技術に着目します。

もし皆さんが、家庭の中を IoT で便利にしてみたい、企業の生産現場に IoT を導入してみたいと思った際に、Google などでインターネットを検索していくと様々な情報が見つかると思います。それらを大雑把に分類してみると、次のようなものがあるでしょう。

  • マイコン(小型のコンピュータ)
  • センサー
  • アクチュエータ
  • 通信手段
  • プログラミング手段
  • データベース
  • 視覚化ツール
  • クラウドコンピューティング
  • 開発や試作のためのツール

例えば、Arduino や ESP32 の話が出てきたら、それは「マイコン」の話題です。また、自動的に何かを測定して情報を送り出したければ、温度センサーや明るさセンサーが必要でしょう。ネットからの指示でペットに餌を与えたい場合には、サーボモーターのようなアクチュエータ(機構部品)を動かす必要があります。

それらに加えて、マイコンをどのようにインターネットを介して通信させたら良いのか、データを保管しておきたい場合にはデータベースが必要ではないか、温度センサーからの情報をグラフとして眺めたい、あるいは分析したい場合はどうしたら良いのか、データベースはどこに設置したら良いのか、プログラミング言語が分からないと IoT は実現できないのか、そういった話が、上記のどこかに当てはまってくるのではないかと思います。

これらを全て細かく紹介していくと一つのウェブ記事には納まりません。また、個々の要素技術にはある程度交換可能な「部品的要素(モジュール性)」がありますので、適材適所に要素技術を組み合わせるのが現実的でもあります。また、それら個々の要素技術については、ファームロジックスのブログで適宜御紹介していきますので、今回は、これらの要素技術を眺め、簡単に紹介していくことに留めたいと思います。

マイコン

IoT にとって、マイコンは必須の要素と言えましょう。IoT のノード(装置あるいは端末)にはコンピュータ技術が必要ですが、パソコンでは大きすぎ、また高価すぎて実用的ではありません。IoT ノードにはマイコンが不可欠です。(もちろん、工場の生産設備を IoT 化したい場合には、信頼性の高いパソコンという選択もあるでしょう。)

従来から広く使われている PIC マイコンなどでも対応できますが、IoT には通信手段が必須ですから、ZigBee や Bluetooth などの通信機能が盛り込まれたマイコンのほうが便利でしょう。特に、ESP8266 のように Wi-Fi を内蔵した小型のマイコンが発表されてからは、IoT のマイコンにはそれらが広く使われるようになりました。

センサー

もし IoT ノードが、何か周辺の様子を測定して情報を発信したいのだとしたら、センサーという部品が必要です。センサーというカテゴリに分類される部品は非常に多岐にわたり、また、毎年のように新しい種類のセンサーが市場に登場してきています。

古くから有名なセンサーとしては、温度センサー、照度センサー(街灯には、夕方に自動的に点灯させるために、古くから CdS(硫化カドミウム)セルと呼ばれる素子が使われています。これも照度センサーの一種です)などがありますし、最近は、埃センサー(空気清浄機に入っています)、CO2 センサー、心拍センサー、糖度センサー、非接触温度センサーなどといったものもあります。

これらセンサーはマイコンの入力端子に接続され、マイコンから測定値を読み出すことができます。マイコンとの接続には、アナログ的な手法(アナログ・デジタル変換器)を用いるものもありますし、最近は I2C と呼ばれるデジタル信号線を使ったものも広く利用されています。後者は、センサー部品内部で測定結果をデジタル値に変換するため、変換精度をセンサーメーカーが管理、保証できるという特徴があります。

アクチュエータ

アクチュエータとは一般に聞き慣れない言葉ですが、これは、電気信号を機械的な動作に変換する部品一般のことです。ますます分かりにくいですね。簡単な例を挙げると、モーターはアクチュエータの一つです。ぐるぐる回るモーター以外に、ラジコン(古いですね)の操舵輪を左右に動かす(ますます分からんですね)ために使われるサーボモーターというものもあります。電磁石で機械を動かすソレノイドコイルというものもありますし、空気ポンプや電動シリンダーといった装置もあります。

もし皆さんが、ネット経由でペットにオヤツを与える装置を作りたいとしたら(これも IoT です。ペットがモノなのではなくて、お皿にオヤツを盛る機械が「モノ」とお考えください)、サーボモーターやソレノイドコイルを使うことになるでしょう。もちろん、空気ポンプでオヤツを吹き飛ばしても結構です。

以下に、IoT における「センサー」と「アクチュエータ」の役割を図示した資料を貼っておきます。リレー(継電器)とは、電磁石を使って開閉器(スイッチ)をオン/オフすることのできる部品です。用途が若干異なりますが、電磁開閉器(マグネットスイッチ)と呼ばれる、大型のリレーもあります。

通信手段

IoT は単独のノードだけでは完結しませんので、何かしら通信相手が必要です。通信相手のない自動化装置は、IoT とは言えません。もちろん、Internet of Things ですから通常はインターネットで繋ぐ訳ですが、物理的な通信手段としては Wi-Fi か Ethernet が現実的な選択肢となるでしょう。Ethernet はケーブルを張るのが面倒ですから、家庭では Wi-Fi のほうが便利でしょう。

もう一つ。通信プログラムを書いたことがある方ならすぐにお考えになると思うのですが、インターネットで通信と言っても、インターネット上でどのように通信し、どのようなプログラムを設計するか、という問題が生じます。簡単に言うと、プロトコルの選択です。

最近の IoT の世界では、おおむね 3つの通信手段に分類することができるでしょう。すなわち、

  • HTTP(RESTful)
  • MQTT
  • その他、専用の通信プロトコル

パソコンで利用するウェブブラウザなどの通信では HTTP が主流ですし、IoT でも用いることがありますが、IoT では MQTT と呼ばれるプロトコルが、より広く使われるようになっています。

MQTT の特徴としては、一つの通信リンクさえ確立しておけば、ある IoT ノードから別のノード、さらに異なる別のノードやサーバーへ、またそれらへの送信と受信、などの異なる種類の複数のメッセージのやり取りを、一つの通信リンク上でまとめて扱うことができることが挙げられます。これは、ノードやサーバー間が一対一で通信するのではなく、MQTT メッセージブローカという仲介者を設けることで実現しています。また MQTT では、通信の同報性(情報の送信側が通信相手を指定しなくても、情報を受信したいノード側が自主的に取捨選択して情報を取得できること)を簡単に実現でき、IoT では非常に使いやすいプロトコルと言えます。

MQTT のこのような特徴はメッセージブローカに大きく依存しており、信頼性の高いブローカが必要になりますが、最近のクラウドコンピューティングサービス提供会社が MQTT メッセージブローカの商用サービスを提供していますので、簡単な実験評価だけでなく、商用設計まで容易にスケール(拡大展開)することも可能です。商用サービスの例としては、IBM Watson IoT Platform や Amazon AWS IoT Core などがあります。

ところで、セキュリティや DoS 攻撃への対応を考慮する場合は、暗号化やノード認証も考慮に入れなくてはなりません。多くの MQTT メッセージブローカや商用サービスでは暗号化に対応しています。(例えば Amazon AWS IoT Core では、暗号化とクライアント認証が必須になっています。) 一方で、家庭内に MQTT メッセージブローカを設置し、外部と MQTT 通信をしなくて済む場合は、暗号化や認証は利用しないという選択もできるでしょう。

MQTT メッセージブローカのフリーソフトウェアとしては Eclipse Mosquitto が有名です。これは、Linux やサーバー管理の知識があれば無償で導入することが可能です。そうでない場合は、商用サービスの利用を検討しましょう。

プログラミング手段

IoT ではマイコンを利用しますので、プログラミング手段も検討しなくてはなりません。マイコンソフトウェアの設計経験をお持ちの方であれば、お好きな言語を御利用できると思います。また、外部の技術者に設計を委託する場合は、委託先と相談すれば良いでしょう。

なお、プログラミングの対象はマイコンだけではありません。マイコンが通信する相手(サーバーや他のマイコン)のプログラミングも必要になるでしょう。そちらについては、まずは「開発や試作のためのツール」を御参照ください。また、Python や JavaScript 等のプログラミング御経験があれば、MQTT のライブラリを探してみると良いでしょう。

もし、趣味で IoT を試される場合や、時間をかけてもマイコンソフトウェアの設計に挑戦してみたい、という方のために、2つのプログラミング言語を紹介いたします。

ESP8266 や ESP32 のようなマイコンを使って IoT を実現したい場合にお勧めのプログラミング環境は、Arduino です。Arduino IDE と呼ばれるソフトウェアを使い、C 言語や C++ 言語に似た Sketch というプログラミング言語でプログラムを書くことができます。ネットを探すといろいろな実例が出てきますので、参考になることでしょう。

もう一つは、MircoPython という Python のサブセット言語を使用する方法です。ただし、MicroPython は小型のマイコンにはやや負担が大きく、メモリ量が足りなくなることがあるので、大きなプログラムを動かすには向かないかも知れません。また MicroPython は現在も開発途上であり、Arduino を使う場合に比べてネット上の情報が少ないことも難点です。しかし、Python は近年人気のプログラミング言語であるため、今後 IoT のマイコンプログラミングの世界で主流になる可能性を秘めていると思います。

最後に別の方法を。ESP8266 等で直接 IoT を実現するのではなく、他のマイコン上でメインの設計をし、ESP マイコンにはインターネット通信だけを任せるというやり方もあります。つまり、マイコンの 2チップ構成です。この場合は、メインのマイコンと ESP マイコンを UART や I2C で接続し、必要な指示や応答だけを ESP マイコンに依頼する、という形になります。マイコンプログラムの設計者であれば容易に実現できると思います。そうでは場合は、ファームロジックスにお問い合わせください。

データベース

IoT ノードから情報が出てきて、それを処理すればおしまい、あるいは IoT ノードに指示を送れば完了、という場合には不要ですが、たとえばセンサーからのデータを刻々と蓄えておき、後で処理したい、参考にしたい、分析したい、といった場合にはデーターベースが必要になります。

ファームロジックスのブログでも以前データベースの検討をしたことがありますが、センサーからの時系列データを刻々と大量に保存したい場合にお勧めできるのは、Elasticsearch です。Elasticsearch はやや複雑なソフトウェア技術で、大企業やミッションクリティカルな運用をしている企業では、データベースサーバー運用の専門家が Elasticsearch を担当しているかも知れません。

他にファームロジックスでは残念ながら実績がありませんが、Graphite WhisperInfluxDB というものも広く使われているようです。なお、Elasticsearch は無償でも利用できますが、セキュリティ機能は有償版(商用版)にしか備わっていないようですので、企業で本格的に導入する場合は商用版の導入を検討する必要があるかも知れません。Elastic 社や Amazon AWS などで Elasticsearch の商用ホスティングサービスを提供しています。

ところで、他に有名な無償データベースソフトとして、MySQL や MongoDB といったものもありますが、私の個人的な経験から言うと、時系列の大量のデータを保管するには、あまり向いていないように思われます。(あくまでも個人的な経験です。)

なお、古くから使われているデーターベースに RRDtool というものがあります。古いサーバー管理者の方なら、名前を聞いたことがあるのではないでしょうか。限定的な使い方であれば、RRDtool も IoT ノードからのセンサーデータを蓄えるのに使うことができると思います。実際に、ファームロジックスでもかつて利用していました。RRDtool の欠点としては、古いデータがどんどん消えていってしまうので、例えば 1年前のいついつの温度は何度だったか、という使い方には向かない、といったことが挙げられます。

視覚化ツール

最近、BI(ビジネス・インテリジェンス)というツールが人気のようです。企業内や外部にある大量のデータ(ビッグデータ)を分析、可視化することで、企業の経営判断に活用しよう、というものです。

そこまでは行かないものの、IoT ノードのセンサーで集めた温度データを視覚化(グラフ化)してみたいということは多いと思います。逆に言うと、センサーデータの視覚化こそ、IoT の強い動機付けかも知れません。

そのような視覚化ツールにも多くの有名なツールがあります。先ほど挙げた Elasticsearch には Kibana という視覚化ツールが用意されていますが、正直、使いこなすのは難しそうです。それに代えて、たとえば Grafana というツールは無償にも関わらず、多くの一般的な視覚化を比較的簡単に実現できて、便利かと思います。

以下に、ファームロジックスがデモ用に運用している Grafana 視覚化の一例を示します。

画面右上の「Last 7 days」という部分をクリックし、Last 6 months を選んでみてください。一瞬にして、過去半年のグラフが表示されることでしょう。この、時系列データベース問い合わせの高速性が Elasticsearch の魅力です(Grafana は問い合わせと描画をしているだけで、データのピックアップと送信は Elasticsearch の仕事です)。また、データベースの多重化(一台のサーバーがダウンしてもデータを保護し運用を継続)を比較的簡単に実現できるのも Elasticsearch の魅力かと思います。

ところで、このような単純なグラフ化だけでは満足できない応用もあるでしょう。例えば、社内工場のダストセンサーの情報を、過去 10日間の平均と比較し、異常があったら知らせて欲しい、などです。そのような場合は Grafana では力不足であり、別の視覚化ツールキットとプログラミング言語を組み合わせる必要があります。一つの例としては、Dash by Plotly というものがあります。ファームロジックスが作成した、簡単なデモサイトを挙げておきます。(CSS 等で見た目を綺麗にしておらず、すみません。)

クラウドコンピューティング

さて、実際に MQTT メッセージブローカを試してみた、Elasticsearch や Grafana も試してみた。折角なので取引先や、社外で業務をしている取締役にもデモを見せてみたい、というときに問題になるのは、これらソフトウェアを動作させるサーバーの「設置場所」です。

社内で実験するだけであれば、社内のサーバールーム、実験室、自分の机の上に設置すれば良いのですが、社外からアクセスしてもらうためには、それでは困難です。もちろん、職場のファイアーウォールに穴を空けて、とか、ポートフォワーディングが、とか、そのような技術をお持ちの方はそれを御利用頂いて結構かと思いますが、現実的にはセキュリティ的に(社内で承認を得るのが)難しいかと思います。(もちろん、家庭内でペットを相手にするような IoT では、自宅にサーバーを設置するのがコスト的にもっとも有利です。そのような運用についても、ファームロジックスでは御相談に応じます。)

特に、センサーを繋いでいる IoT ノードは海外の工場にあり、IoT ノードの制御は日本のオフィスからやりたい、また、データの視覚化は取引先から見えるようにしたい、となると、選択肢は狭まってきます。一つの選択肢は、近年広く利用されている「クラウドコンピューティング」です。Amazon AWS、Google Cloud Computing Service などが有名でしょう。それらのサーバー上に MQTT メッセージブローカ、データベース等を設置すると、家庭外や社外からいつでも IoT ノードから情報を取得したり、指示を送ったりすることが可能になります。

また、先ほど説明したように、例えば Amazon AWS では IoT Core と呼ばれる MQTT ブローカサービスを低価格で利用できますので、MQTT サーバーを自前でセットアップするコストも避けられます。

開発や試作のためのツール

最後に、開発あるいは試作のためのツールについてです。IoT には興味があるんだけど、プログラミングには自信がない。Arduino ならネットで情報を探してなんとかなるけど、サーバー上のプログラミングなんて無理、とりあえず、社外に頼まず自前で実験してみたいんだけど、という方は多いのではないかと思います。

プログラミング無しに IoT を実現するためのツール、プラットフォームは多くの企業から提供されていますが、「一切のプログラミング不要。部品を画面上で並べるだけで貴社の IoT を実現可能」という類のものは、多くの場合、宣伝ほどはうまくいかないものが多いようです。

IoT のニーズというのは非常に多岐にわたります。秋葉原のお店で、綺麗な化粧箱に入っていた「万能 IoT キット」というハコモノを一つ買ってくればなんでもできる、という訳にはいかないのは、そのよう事情が背景にあるかと思います。

しかしながら一方で、「命令を一からタイプしてプログラムを書くことができなければ IoT は無理」ということもありません。現実的で、かつ、十分にいろいろ複雑なことを試してみることのできる試作環境の一つして、Node-RED というプラットフォームがあります。これはもともと IBM 社内で開発されたものだそうですが、現在は無償でソースコードが提供され、誰でも利用できるようになっています。単に電子ブロックみたいに部品を繋ぐだけかというとそんなことはなくて、Node-RED に慣れてきたあかつきには、簡単なプログラムを埋め込むことで部品の動作をカスタマイズすることもできます。また、Node-RED は開発者や利用者のコミュニティがしっかりしており、ネット上のフォーラムで広く活発な議論がされています。また Palette Manager という機能を使って、コミュニティで開発された新しい機能の部品を、Node-RED を停めることなく追加できたりと、非常によく考えられた設計になっています。

余談ですが、もし皆さんが JavaScript プログラミングの経験をお持ちであれば、Node-RED には取り付きやいかと思います。Node-RED は JavaScript(Node.js) で設計されていて、部品のカスタマイズには JavaScript を用いるからです。

以下に、Node-RED で作成したダッシュボードの一例を示します。非常に簡素な例で恐縮です。

Node-RED の一つの限界は、プログラミングで言うところのモジュール化(部品化)やバージョン管理が困難なことで、大きなプロジェクト設計には向いていません。大きなプログラムを実現しようとすると、画面が部品(ノード)と配線で溢れかえってしまいます。これは、多くの GUI プログラミングツールの共通の問題と言えるでしょう。

もう一つの限界(というか弱点)は、一般のプログラミング経験者であれば簡単にプログラムコードで実現できることを、Node-RED では必ず、イベントドリブン(外界からのメッセージの到着)で記述しなくてはならない、という点かと思います。外界からのタイミングによらず自律的に動作する処理を書こうとすると、なんとなく不自然な設計になってしまうのです。

そのような欠点があるにせよ、Node-RED は優れた IoT プラットフォーム(ツール)です。最終的にはサーバーで動作するプログラムを自前、あるいは委託先に設計して貰うにしても、まずはアイデアを試してみたい、自力で実験をしてみたい、経営者にデモを見せて予算を獲得したい、という方には、Node-RED は強い味方ではないかと思います。

まとめ

今回は、2019年現在における IoT 分野の動向、使える技術、部品、ソフトウェアについて簡単にまとめてみました。これだけをお読み頂いて IoT をすぐに始められるとは申し上げられませんが、ネット上に広がる大量の有益な情報を読み解く一助になれば光栄です。長い文章にお付き合い頂きまして、ありがとうございました。

最後は宣伝になってしまいますが、ここまでお読み頂いて「やっぱり自分では無理」、「ここのところだけでも手伝って欲しい」等ございましたら、お気軽にお問い合わせください。御社の御予算の許す範囲でお手伝い申し上げます。もちろん、個人や学校など、十分な御予算の確保できない皆様にも、可能な範囲(メールやブログでの対応など)でお応えできればと考えております。

お問い合わせはお気軽に!

御返答は 24時間以内(営業時間中)とさせて頂いております。もし返答が届かない場合、何らかの事情でメールが不達となっている可能性がございます。大変お手数ですが、別のメールアドレス等で督促頂けますと幸いです。なお、Facebook ページ(https://www.facebook.com/flogics/)でも御連絡頂けます。

文責: ファームロジックス横山(2019年7月24日 )