Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure IoT Hubのススメ ~概要編~

motoriderse
February 06, 2018

Azure IoT Hubのススメ ~概要編~

2017/5/27
IoTといえばラズパイやセンサーを思い浮かべる方が多いと思いますが、
一般的なアプリでもIoT Hubを利用する事で管理や通知の基盤を楽に構築できます。
実務経験で培ったノウハウなども交えてお話しさせて頂きます。

motoriderse

February 06, 2018
Tweet

More Decks by motoriderse

Other Decks in Programming

Transcript

  1. IoTとは (ご存じでしょうが…)  Internet of Things モノのインターネットの略  乱暴に言うとなんでもかんでもインターネットに繋いでしまえ、という意味 

    大きく分けると3種類のモノがある  PC類 PC、スマホ、タブレットなど  機械類 車、工業系のロボ、エレベーター、自動ドアなど  その他 とりあえず電源さえあれば  他にもIo~と呼ばれるものがある  IoYT(Internet of Your things)  IoE (Internet of Everything)  IoTを超える概念(そもそもIoTの前からある)  以下の3要素で構成される  IoD(Internet of Digital)、IoH(Internet of Human)、IoT(Internet of Things)
  2. 様々な企業が活用しています  松屋銀座  近隣のスマホにお得な情報を送信  竹中工務店  ビルの各種センサーなどを管理して省エネ、防災、快適性の向上などに 

    象印  ポットを使うと遠方の家族にハートビートを送信  京都の市バス  リアルタイム運行状況の提供  サンスター  GUM(歯ブラシ)の利用履歴など ※Azureを利用しているとは限りません
  3. 嚙み砕いて説明すると  何百万ものデバイスの接続が可能でセキュリティも担保。  双方向通信可能で信頼性も高い。  いろんな通信オプション AMQP、MQTT、HTTP/S、カスタムプロトコル  デバイスから飛んできたメッセージに対してルーティング可能

     例) {“ErroType”:”1”}を受信したら◦◦のエンドポイントへ投げる、など  デバイス固有のメタデータが管理可能  例){“DeviceId”:”xxxx”, “Latitude”:”35.nnn”, “Longitude”:”139.nnn”}  デバイスの接続、管理(CRUD操作)などのイベントが監視可能  各種開発言語やプラットフォームに対応  SDK:C Python Node.js Java .NET  プラットフォーム:Windows(desktop、UWP)iOS Android ※Windows以外はXamarinで
  4. 個人的なおすすめポイント  わずか数分で双方向通信可能な基盤が作成できる  PushしたいならNotificationHubでいいんじゃない? ⇒ ストアとの関連付けが必要なのでエンプラや個人的な利用目的では厳しい。  そもそも双方向通信って必要? 

    「ハリウッドの原則」というデザインパターンを参考に。  例えば、マスタデータの確認の為に数万クライアントが定期的にサーバーへアクセスするとなると ピーク時のサーバー台数をいくらスケールアウトしても足りません。 その為、ダウンロードして欲しい時にPush通知すれば大幅にコストが削減できます。  DocumentDB (多分)がセットで付いてくる。  管理用のDBが備え付けられておりDocument型で保存され、クエリでアクセスできます。 例)select * from devices where properties.reported.lastActivity > yyyy-mm-dd  StorageTable等よりずっと高速にアクセス可能。  通信がとにかく速い。  私はMQTTでしか試してませんが…  GitHubにある管理画面のサンプルが一通りの機能が揃っているので デバイス側のコードを用意すればすぐに始められる。  安い!
  5. 価格について  F1は500台まで。  8000/500 = 16/day  1サブスクリプションあたり1つまでしか作成出来ない。 

    スケジュールされたジョブは1つまで。(ジョブが完了するまで次が作れない)  Azureは下りのデータ転送量に課金されるので厳密に言うと完全無料というわけではないので注意!  S1以上では台数無制限。  S1以上で1日のメッセージ数上限を増やしたい場合はユニットを増やす。  1日のメッセージ量を算出し料金プランを選ぶ。(ここ大事)
  6. 個人的にハマったところ  自由度が高すぎてどこから手を付けていいのかわかりにくかった。  尚、本セッションの反響が良ければ今後実装寄りの解説していこうかと思います。  ドキュメントに書いてあることがサービスやSDKとして提供されているとは限らない。  例えばファームウェアのアップデートに触れていますがアップデート機能が備わっているわけではな く、こんな風にやるといいよという感じなのでコアな部分は自分で実装する必要がある。

     HTTP以外のプロトコルで使用するポートは一般的ではなく、環境によっては許可されていな いので事前に調査が必要。(特にエンプラ)  AMQP:5672、MQTT:8883  デバイス側からのメッセージ送信(上り)だけであれば IoT Hubの料金だけ気にしていればいいですが、 サーバー側からのメッセージ送信やデバイス側でのファイルダウンロードなどは 別途課金されますので事前に見積もっておかないとコストオーバーになる。  基本的にはお互いJSONのやり取りになるため、扱い方を知らないとハマる。  C#の場合、Newtonsoft.Jsonが扱いを知っている人だと割と楽。  高度に操作しようとしたときネットに情報があまりなかった。  SDKに若干クセがある。  至る所でdynamic型なので慣れるまで実行時エラーが多発。