Slide 1

Slide 1 text

Azure IoT Hubのススメ ~概要編~ 2017/5/27

Slide 2

Slide 2 text

    

Slide 3

Slide 3 text

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)

Slide 4

Slide 4 text

Microsoftが掲げるIoYT Your Things = 手持ちの資産 http://special.nikkeibp.co.jp/atcl/ITP/15/cloud_first/iot/001/

Slide 5

Slide 5 text

様々な企業が活用しています  松屋銀座  近隣のスマホにお得な情報を送信  竹中工務店  ビルの各種センサーなどを管理して省エネ、防災、快適性の向上などに  象印  ポットを使うと遠方の家族にハートビートを送信  京都の市バス  リアルタイム運行状況の提供  サンスター  GUM(歯ブラシ)の利用履歴など ※Azureを利用しているとは限りません

Slide 6

Slide 6 text

結局のところハード向けなの? そんなことはありません。 基本的には データを収集して 可視化したり 分析や加工をしたり といったことなので そこに欲しいデータや遠隔操作がしたいものがあれば作ってしまえ と私は考えますので 是非みなさんにトライしていただきたい と思います。

Slide 7

Slide 7 text

Azureが提供するIoTなサービス  IoT Suite  一般的なシナリオで使われるサービスとアプリのセット  個人的には 何がどう動いているのか初心者にはわからない 使うかどうかわからないものもデプロイされる(予期しない多額のコストも発生) といった理由で 明確なシナリオが無ければいきなりここから入るのはお勧めしません。  IoT Hub  本日のお題  最低でもStorageとセットで使うと良い

Slide 8

Slide 8 text

IoT Hubの概要  公式ドキュメントには以下のように記載されています。 ぱっと見でわかりますか? 私はすぐに理解できませんでした…

Slide 9

Slide 9 text

嚙み砕いて説明すると  何百万ものデバイスの接続が可能でセキュリティも担保。  双方向通信可能で信頼性も高い。  いろんな通信オプション 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で

Slide 10

Slide 10 text

あまりメリットを感じない方へ  自前で環境を構築するとこんなに大変  他にもやらなきゃいけないことが色々  WebAPIを作ったり  運用監視の設定をしたり  コスト(利用料)を気にしたり  etc…

Slide 11

Slide 11 text

個人的なおすすめポイント  わずか数分で双方向通信可能な基盤が作成できる  PushしたいならNotificationHubでいいんじゃない? ⇒ ストアとの関連付けが必要なのでエンプラや個人的な利用目的では厳しい。  そもそも双方向通信って必要?  「ハリウッドの原則」というデザインパターンを参考に。  例えば、マスタデータの確認の為に数万クライアントが定期的にサーバーへアクセスするとなると ピーク時のサーバー台数をいくらスケールアウトしても足りません。 その為、ダウンロードして欲しい時にPush通知すれば大幅にコストが削減できます。  DocumentDB (多分)がセットで付いてくる。  管理用のDBが備え付けられておりDocument型で保存され、クエリでアクセスできます。 例)select * from devices where properties.reported.lastActivity > yyyy-mm-dd  StorageTable等よりずっと高速にアクセス可能。  通信がとにかく速い。  私はMQTTでしか試してませんが…  GitHubにある管理画面のサンプルが一通りの機能が揃っているので デバイス側のコードを用意すればすぐに始められる。  安い!

Slide 12

Slide 12 text

価格について  F1は500台まで。  8000/500 = 16/day  1サブスクリプションあたり1つまでしか作成出来ない。  スケジュールされたジョブは1つまで。(ジョブが完了するまで次が作れない)  Azureは下りのデータ転送量に課金されるので厳密に言うと完全無料というわけではないので注意!  S1以上では台数無制限。  S1以上で1日のメッセージ数上限を増やしたい場合はユニットを増やす。  1日のメッセージ量を算出し料金プランを選ぶ。(ここ大事)

Slide 13

Slide 13 text

個人的にハマったところ  自由度が高すぎてどこから手を付けていいのかわかりにくかった。  尚、本セッションの反響が良ければ今後実装寄りの解説していこうかと思います。  ドキュメントに書いてあることがサービスやSDKとして提供されているとは限らない。  例えばファームウェアのアップデートに触れていますがアップデート機能が備わっているわけではな く、こんな風にやるといいよという感じなのでコアな部分は自分で実装する必要がある。  HTTP以外のプロトコルで使用するポートは一般的ではなく、環境によっては許可されていな いので事前に調査が必要。(特にエンプラ)  AMQP:5672、MQTT:8883  デバイス側からのメッセージ送信(上り)だけであれば IoT Hubの料金だけ気にしていればいいですが、 サーバー側からのメッセージ送信やデバイス側でのファイルダウンロードなどは 別途課金されますので事前に見積もっておかないとコストオーバーになる。  基本的にはお互いJSONのやり取りになるため、扱い方を知らないとハマる。  C#の場合、Newtonsoft.Jsonが扱いを知っている人だと割と楽。  高度に操作しようとしたときネットに情報があまりなかった。  SDKに若干クセがある。  至る所でdynamic型なので慣れるまで実行時エラーが多発。

Slide 14

Slide 14 text

デモ

Slide 15

Slide 15 text

参考文献 http://blogs.itmedia.co.jp/zenkishimoto/2015/04/iotioeiot.html http://special.nikkeibp.co.jp/atcl/ITP/15/cloud_first/iot/001/ https://mayonez.jp/1492 https://docs.microsoft.com/ja-jp/azure/iot-hub/iot-hub-what-is-iot-hub