AWSモバイル/IoTサービス徹底攻略でIoTハンズオンに参加してきた


3連休初日にクラスメソッドさん主催の「AWSモバイル/IoTサービス徹底攻略!!」という勉強会があったので行ってきました。

補欠繰り上がりで奇跡的にIoTハンズオンに参加できたので、体験レポートをメモしておきます。

クラスメソッドさんによる当日レポートは以下。
(レポート) AWSモバイル/IoTサービス徹底攻略!! 「IoTハンズオン」 #cmdevio | Developers.IO

ハンズオンの内容を一言で言うと以下になります。

会場は目黒にあるAmazonオフィスで、初めてAmazonオフィスを見ることができました。

エレベータがAmazonダンボール風になっていたり、ボルダリング設備があったり楽しそうなオフィスでした。

hilotterさん(@hilotter)が投稿した写真

受付を済ませて、ハンズオン会場へ。

部屋に入って、

を受け取り講師の方の説明を受けながら、ハンズオン資料に沿って自習型で進めていきました。

ハンズオンに参加するまでは、AWS IoTとSORACOMは聞いたことがある、Openblocksは初めて聞いたという状態だったのですが、講師の方に説明してもらいながら実際に体験できたことで理解を深めることができました。

以下それぞれのざっくりメモです。

  • SORACOMに関して
従来捨てていたような膨大なデータをクラウドで解析できるようになり
小型デバイス + ビッグデータ解析が熱を帯びてきた

モノ - インターネット - クラウド
だったのを
モノ - クラウド - インターネット
にしたのがSORACOM
モノとクラウドをつなぐのがSORACOM Air

MVNOとしてIoT通信を提供
MVNOの専用線接続はめっちゃ高価(一台億クラス)

SORACOMは専用回線部分をクラウド(AWS)に置き換えることでスケーラブル/高可用性を実現

gem install soracom
soracom sim updateで通信速度を変えたりできる
コマンドから手軽に変更できる

888円/枚
開通後1日10円

基本料金 + 従量課金
夜は安いので夜だけ速くするプログラムを書いたりもできる
上り、深夜が安いのはセンサーデータをアップロードしたりするのに使えるように(IoT向け)

Akerunや百葉箱にソラコムが使われていたりする

説明の中で衝撃を受けたのがこちら

  • AWS IoTに関して
AWS IoTは珍しく東京リージョンも最初から使える

IoTをやりたいとなっても、
・様々なプロトコルでやりとりが行われたり
・スケーラビリティの問題があったり
・セキュリティ問題(http通信)
・分析したい(新しい価値の提供)
とかが課題として出てくる

そういう課題を解決するのがAWS IoT
いろんなコンポーネントが組み合わさってAWS IoTができている
Device SDK(今回のOpenBlocks内にすでに入ってる)

メッセージブローカーはhttpより軽い(MQTT)
httpもサポートしてる
WebSocketも将来的にサポート

ルールエンジン
 温度がxxになったらxxxする、とかが書ける
 
デバイスシャドウ
 アプリからデバイスに命令を送る

ハンズオン
1. デバイスを作る
2. 認証のための証明書をつくる
3. ポリシーをつくる

DynamoDBを使う理由
センサーデータは書き込みが多いのでWriteスケール可能なDynamoDBがオススメ
  • OpenBlocksに関して
WebUIから色々設定できる
Wi-Fi APモード
クラウド送信クライアント

RTCがなくてもSORACOM BEAMを使うと時間を付けてくれる

モスキートコマンドを使うとMQTTデータの状況をCLIから見れる

ハンズオン資料が丁寧にまとまっていたので資料に沿って順調に進んでいたのですが、途中SensorTagの電池が切れていたことに気づかずハマったり、一通り設定できたと思ったものの、AWS側に書き込みができておらず調べていたら残念ながら時間に。。。

あっという間の2時間20分でしたが、非常に楽しかったです。

自分ひとりでやっていると、ちょっとしたことでハマって挫折したりしますが、いざとなったらすぐに助けてくれる講師の方がいてくれるハンズオンは非常に心強かったです。

ハンズオンの後は、CognitoとMobile SDKでサーバレスプッシュ通知を実現した話を聞きました。

初回起動時にゲストユーザを作る
その時にCognitoで権限を与える
SNSエンドポイントの登録は各ユーザのアプリから直接送る

バッチサーバからはSNS TopicへのPublishでpushが送れる

DynamoDBに各種設定、Tokenなどを直接保存している
一括プッシュ通知でこれをやった

CognitoIdをキーにしてDynamoDBに保存してる

miamによるIAM管理便利そう

サーバ監視、メンテナンスからの解放はでかい
スケールも問題ない

講演は一括Pushに関する発表だったのですが、Lambdaを組み合わせればユーザ間のプッシュ通知もいい感じにサーバレスにできるのかなぁと気になりました。

そもそもpush通知周りの理解が浅いので今度試してみたいと思います。

懇親会では即席で資料を用意して飛び入りでLTに参加させていただきました。

発表内容は、10月末に開催されたモバイルバックエンド勉強会jaws-frameworkのお話を聞いたのがきっかけで、JAWSを使ってSlack投稿APIを作ってみた、というものになります。

匿名投稿APIの詳細に関してはこちらもご覧いただければと思います。

お酒が飲めないのもあって懇親会に行っても自分から話しかけることができなくて、いつもすぐ帰ってしまうのですが、LT発表をしたことで何人かの方とお話できて楽しかったです。

改めて講師の皆様、そしてスタッフの皆様ありがとうございました!

おまけ

ハンズオンでSORACOM Airをいただいたので、活用方法を考えていたのですが、

と自宅のIoTにする良いアイデアが思い浮かばず。。。

最終的に家に余っていたSIMフリーAndroid端末に入れることにしました。

また何かおもしろそうなものを思いついたら試してみます!