ESEC2016 組み込み開発に役立つIoTサーバの基礎知識
tag:
2016年4月19日
I組み込み開発に欠かせない
IoTサーバの基礎知識
ここでは,IoT装置作りに役立つクラウド・サーバの種類や特徴について整理します.
中村 太一
どこまで環境を提供するかによってサーバの種類が異なる
クラウド・サーバをひとことで表すと,インターネット上にあるコンピュータです.コンピュータにはさまざまな用途があるように,クラウド・サーバにも用途に合わせたさまざまなサービスがあります(図1,表1).
IaaS:サーバやネットワークを提供※
PaaS:ソフトウェアの実行環境を提供※
BaaS:IoTデバイスに必要なサーバ機能を提供※
SaaS:アプリケーションを提供※
※
IaaS(アイアース)=Infrastructure as a Service
BaaS(バース)=Backend as a Service
PaaS(パース)=Platform as a Service
SaaS(サース)=Software as a Service
図1 IoTクラウドのおかげで簡単にIoTできるようになった
表1 タイプ別IoTサーバ ○=提供 ×=自分で用意 △=どちらの場合もある
注1:ブラウザ・アプリやスマホ・アプリも提供してくれるサーバもある.
注2:自作アプリを載せられるサーバもある
サーバ・ タイプ | IaaS | PaaS | BaaS | SaaS | 備 考 |
クライアント・アプリ | × | × | ×注1 | ○ | ブラウザ・アプリ,スマホ・アプリなどの実際にユーザが触れるアプリケーショ ン.IoTクラウドの場合は,データを収集してサーバへ送ったり,サーバからの プッシュに対してモータを動かしたりするデバイス内で動くアプリを指す |
サーバ・アプリ | × | × | ○注2 | ○ | ユーザ/デバイス管理,データ管理,Web API機能など |
ミドルウェア | △ | ○ | ○ | ○ | ウェブ・サーバ,データベース・サーバ,アプリケーション・サーバなど |
OS | ○ | ○ | ○ | ○ | LinuxやWindowsなど |
ハード(マシン) | ○ | ○ | ○ | ○ | ネット回線,配線,コンピュータ,設置場所 |
生サーバ・タイプIaaS
IaaSは,インターネット上にサーバやネットワークを設置するための仮想的なエリアを提供してくれるクラウド・サーバです.このエリアに自分専用のサーバを自由に作成できます.
自由度が高い反面,どのようなサーバを何台設置するか?サーバをどのように設定するか?は,利用者任せなので,サーバの知識がある人向けです(表2).
表2 無料枠のあるクラウド・サーバ(IaaS)
サーバ名/ 内容 | Amazon Web Services (AWS) | Microsoft Azure | IDCFクラウド | さくらのクラウド |
提供者 | アマゾン | マイクロソフト | ヤフー | さくらインターネット |
特徴 | 1年間無料で利用可能なIaaSはAWSしかない.おなじみの仮想マシン貸し出しサービスである EC2インスタンス以外にも,仮 想のオブジェクト・ストレージのS3,ブロック・ストレージを提供してくれるEBS,MySQLやPostgreSQL,Oracleまで提供してくれるRDSなど, 25ものサービス が1年間も無料で使える | AWSと同じように,単純な仮想マシン貸し出しサービスだけでなく,SQLServerやHadoop,ストレー ジなど,さまざまなサービスが使える点が大きな特徴. また,Active DirectoryのようなWindows特有の機能が使える点もうれしい. 無料枠はAWSに劣が,とても見やすいデザインで,UIもAWSよりも上と感じる人も | ヤフーが運営しているクラウド・サービス.AWSやMicrosoft Azureのようにさまざまなサービスが利用可能. 例えば,よくキャンペーンがある500円のクーポンで使えるサービスは,一番小 さな仮想マシン1台を1カ月利用できる程度だが,ロード・バランサやオブジェクト・ストレージなど,使えるサービスが豊富 | 純粋にIaaSサービスを提供しているサービス体系.たし,IaaSのインフラ性能は大手に劣らず,むしろ高いといわれている. IaaSとしての仮想インフラ利用が目的であれば,AWSなどとの比較対象として十分検討できるサービスである |
無料枠 | 1年間無料 | 1カ月無料+1カ月の無料期間内に使える20,500円ぶんのクレジットあり | 不定期で無料クーポンを配布するキャンペーンあり | 不定期で無料クーポンを配布するキャンペーンあり |
無料で使える機能 | EC2,S3など, 25のサービスを 使用制限の範囲内で利用可能. 詳細はhttps://aws.amazon. com/jp/free/を参照 | 20,500円ぶんのクレジットもあるので, 1カ月の範囲内であれば,ほぼすべての機能が利用可能 | クーポンの範囲を超えると有償 になる | クーポンの範囲を超えると有償 になる |
ミドルウェア付きタイプPaaS
PaaSは,アプリケーション(主にWeb)の実行環境を提供してくれるクラウド・サーバです.アプリケーションを動かすにはOS上にミドルウェアを入れて実行環境を作ります.データベースが必要な場合は,MySQLのようなデータベース・ミドルウェアも必要です.また,高い可用性を求めるならばHAクラスタなどを用いたサーバの二重化も必要です.PaaSはこのようなアプリケーションを実行するためのインフラ環境を提供してくれるので,利用者は作成したプログラムをPaaSへデプロイするだけで,アプリケーションの実行ができます.アプリは作れるけれど,インフラ周りが不得意(または面倒)な方向けのクラウド・サーバです(表3).
表3 無料枠のあるクラウド・サーバ(PaaS)
Google App Engine | AWS Elastic Beanstalk | Heroku | |
提供者 | グーグル | アマゾン | Salesforce |
特徴 | PaaSの分野で初めに有名になった.PythonやJavaのソフトウェアをクラウド上で実行可能で,Webサービスをじかに立ち上げられる. 「オートスケール」という強力な機能も備わっている.オートスケールとは,サーバの負荷に応じてリクエストを複数のサーバに割り当てるスケール・アウトや,負荷が低下したらサーバの数をもとに減らすスケール・インを自動的に行う機能 | 1年間の無料枠を設けているAWSにもElastic BeanstalkというPaaSが用意されている.AWSで提供しているクラウド・リソースを統合管理するサービス. PaaS基盤となるEC2インスタンスやオートスケールを実現するための仮想ロード・バランサ(以降,ELB)などを作成する際にかかる費用は,Elastic Beanstalkが管理しているEC2やELBインスタンスの料金だけ | AWS EC2上に構築されたPaaSで,Google App Engineでは非対応のRubyon Railsを動かせるという点が特徴. 最近ではNode.jsにも対応しており,比較的多くの言語に対応しているところが人気の理由か |
対応言語 | Python,Java,PHP,GO | Java,Node.js,PHP,Python, Ruby,.NETウェブアプリケーション | Ruby,PHP,Node.js,Python, Java,Clojure,Scala |
クラウド・サーバの中身
IoTクラウド・サーバとは,IoTデバイスに必要なサーバ機能を提供してくれるクラウド・サーバです.「IoTデバイスに必要なサーバ機能」とは,例えば次のような機能を指します.
・デバイスの認証
・デバイスの状態管理(IDやStatusなど)
・デバイスから送られたデータの管理
・デバイスへの制御(クラウドからデバイスへのPush通知)
これらの機能を提供するためにIoTクラウド・サーバの中ではさまざまなサーバが協調して動いています.利用者はその機能だけ使えればよいので,中身はブラックボックスになっています.
そのブラックボックスの中身がどうなっているのかの一例を図2に示します.
図2 一般的なIoTサーバの中身
IoTに特化したクラウド・サーバ
IoTが注目されるようになってから,たくさんのIoTクラウド・サーバが世の中に出現しました.表4(a)(b)はその中でも無料で使えるIoTクラウド・サーバの一例です.
それぞれできることや提供している機能はさまざまですので,いろいろ試して自分に合ったIoTクラウド・サーバを見つけてください.
これらのサーバにはIoTクラウド・サーバに接続するプログラムが簡単に作れる開発キット(SDK)が用意されています.大抵のSDKはLinuxに対応しているので,ぜひ小型コンピュータ・ボードで試してみてください.
表4(a) 海外の小型コンピュータ・ボードから無料で使えるIoTクラウド・サーバ
Parse | PubNub | IFTTT | Xively personal | |
運営会社 | PubNub | IFTTT | Xively | |
特徴 | Facebookが運営する.ラズベリー・パイやArduino,RTOSなどのSDKを提供.機能が豊富で,単純なセンサ・データ以外にも,画像ファイルなどの大きなデータのアップロードも可能.アクセス解析機能も無料で提供している.サーバ側で任意のJavaScriptコードが実行できる点は大きな特徴.入ってきたデータに対してサーバ側で判断し,IoTデバイスに対して何らかのアクションを起こすようなしくみを自由に作れる | 70以上のSDKが用意されている.中でもIoTデバイス向けのSDKは10個以上もあり,IoTクラウド・サーバの中でも最も多いと思われる. M2M向けの通信によく使われるパブリッシュ/サブスクライブのしくみを採用しており,パブリッシャ(データ送信者)からのデータを複数のサブスクライバ(データ受信者)で受け取るといったマシン間の双方向のデータ通信をリアルタイムで行うことが可能 | モノとインターネットをつなぐだけでなく,ウェブ・サービスとモノをつないだり,ウェブ・サービスとウェブ・サービスをつなぐことを目的とする. 「if this then that」というレシピを作成し,もし○○したとき(○○=this),△△する(△△=that)といったレシピを作成する.200以上のウェブ・サービスと連携可能.自作のサービスや装置を登録してIFTTTと連携できる | センサ・データをグラフ化し,データを見せる部分に特化.Add Triggersで入ってきたセンサ・データに対して,しきい値を設け,検知したらHTTPサーバにPOSTリクエストを送る機能もある |
無料枠 | ファイル・ストレージ:20Gバイト まで, データベース・ストレージ:20Gバ イトまで, ファイル転送:2Tバイトまで,受 信:100万回まで | 1日あたりのアクティブ・デバイス は100台まで無料. 月1億メッセージまで無料. ストレージやモバイル・アプリ向け プッシュ,分析機能などのAddOn に関しては30日間だけ無料 | 不明(基本的に全て無料) | Xively personalであれば基本的に全て無料だがデバイス数やデータ数の制限は不明 |
表4(b) 国内の小型コンピュータ・ボードから無料で使えるIoTクラウド・サーバ
Kii Cloud MBaaS | Milkcocoa | IdataSamplr | |
運営会社 | Kii | Technical Rockstars | アイ・エス・ビー |
特徴 | Parseと似たような豊富な機能を持つ | MQTTを使ったリアルタイム・データのやりとりに特化しており,それ以外の機能をそぎ落とすことで,シ ンプルさを確保している.思い立ったときにサーバを 使って何かを作ろうとした場合,確実に短時間でシステム作りができる | IoTデバイスの管理やセンサ・データの管理機能が豊富.センサの値を集計したり,しきい値を設定し,マッチしたらIoTデバイスに対してアクションを起こすような機能も持つ.データをダッシュボード画面に値とアイコンやグラフで,自由に表示させるためのツールも用意されている |
無料枠 | ストレージ:1Gバイト, APIリクエスト数:月 間100万,プッシュ 通知:月間100万 | データ数:10万メッセージ,同時接続数:20 | 期間:6カ月間無料, しきい値設定:最大5個, センサ・データ数:10万まで, 容量:100Mバイト, リクエスト数:月5万まで |
対象ボード, マイコン, OS | Kii Thing SDK.基本的にIoT用には特定のデバイスを対応し ているわけではなくC言語のSDKのみが用意されている | SDKはLinuxボード用にNode.jsのみ.汎用的な MQTTライブラリを使えば,さまざまな言語で利用できるためAruduinoやmbedなどのマイコンでも開発が可能.SDKなしでも開発できる | Node.js SDKほか.個別にデバイス対応する. Rooster GX(サン電子), CloudGate(オプション), UDON(アイ・オー・データ),RG-G200L(NECプラットフォームズ),FuterNet MA-E360/N(センチュリーシステムズ) |
執筆
なかむら・たいち
(株)アイ・エス・ビー
IoTクラウドサーバー「dataSamplr」の開発責任者
http://m2m.isb.co.jp/