IoTデバイス×Webアプリでホームネットワーク AWS クラウドサービス開発テクニック
書籍情報
発売日 : 2021年04月29日
著者/編集 : 市川 純/飯田 起弘
出版社 : 秀和システム
発行形態 : 単行本
書籍説明
内容紹介
本書はAWSのデベロッパー向け公式ウェブマガジン「builders.flash」で連載されている記事から、エンジニアがIoTとAWSを楽しんで学べるものを選出してご紹介しています。自宅や職場で実際に試せるようなアプリケーションの作り方を、自分のペースで進められるハンズオンのような形で紹介しており、技術的な読み物としても楽しんでいただける内容となっています。書籍で紹介している手順を追っていくことで、IoT(Internet of Things)のアプリケーションを構築する方法や、必要となるクラウドのサービスを学べる内容となっており、各章で完結しているため、興味があるものだけを試すといった楽しみ方もできます。既に存在するようなデバイスやサービスを自分で作ってみることで、裏で起きていることを理解することができ、オリジナルの機能を持ったアプリケーションの開発にも進めることができるのではないでしょうか。ぜひ本書を読んで、楽しみながらAWSの使い方を学んでください。
目次
●第1章 AWSのアカウントを作る
ステップ 1: AWS アカウントの作成
ステップ 2: 連絡先情報を入力
ステップ 3: お支払い情報を入力
ステップ 4: SMS または日本語自動音声電話によるアカウント認証
ステップ 5: AWS サポートプランの選択
ステップ 6: IAM 管理者のユーザーおよびグループの作成
●第2章 管理ツールのセットアップ方法 – AWS CLI
2-1 AWS CloudShellを利用
2-2 自分の環境にCLIをセットアップ
2-3 IAM ユーザーのアクセスキーを作成するには
2-4 一時的なクレデンシャル情報の取得
●第3章 遠隔操作スマートホームデバイスをつくる
3-1 構成と使用するサービスの紹介
構成 / AWS IoT Greengrassとは / AWS IoT Coreとは / AWS利用料金 / 作業手順
3-2 使用するハードウェアの準備
3-3 ハードウェアのセットアップ
3-4 Raspberry Piのセットアップと動作確認
3-5 AWS IoT Greengrassのインストール
3-6 AWS IoT Greengrassの設定
デバイスリソースの追加 / コネクタの追加 / サブスクリプションの追加 / デプロイ
3-7 動作確認
まとめ
●第4章 簡単おうちセキュリティカメラを作る
4-1 アーキテクチャと利用する AWS サービス
4-2 Raspberry Pi のセットアップ
依存ライブラリのインストール / Amazon Kinesis Video Streams Producer SDK C++のインストール
4-3 Amazon Kinesis Video Streams のセットアップ
4-4 Amazon Simple Notification Service のセットアップ
4-5 AWS CLI を用いた手順
4-6 Raspberry Pi のプログラムの設定
Python プログラムの作成 / ソースコードの解説 / 環境変数の設定
4-7 アプリケーションの実行
4-8 アプリケーションの常時実行のための設定
4-9 運用コストの見積もり
まとめ
●第5章 スマートホームを自作する ~ドアホン編~
5-1 利用するデバイス
5-2 利用する AWS のサービス
5-3 Raspberry Piで Kinesis Video Streams with WebRTC のサンプルアプリを使えるようにする
KVS with WebRTC のセットアップ
5-4 よりセキュアな認証情報の利用について
AWS IoTの証明書を作成 / CloudFormation で AWS IoT に必要なリソースと Role を作成する / ロールエイリアスの作成 / クレデンシャルエンドポイントの確認 / サンプルソースコードの修正 / AWS IoT の root CA 証明書のダウンロード / 動作確認
5-5 Amazon Alexa のスマートホームスキルを作成する
スキルの登録 / Lambda の作成 / スキルの更新 / 動作確認
5-6 運用コストの見積もり
まとめ
●第6章 ミーティング中の来客時に便利 ! インターホンと警告灯を連動させてみた
6-1 はじめに
6-2 利用するデバイス
6-3 利用するAWSのサービス
6-4 全体のアーキテクチャ
6-5 M5StickCを使ってアナログ信号をMQTTメッセージに変換する
Arduino IDEのセットアップ / ライブラリのセットアップ / 実装
6-6 インターホンのスピーカーの配線をM5StickCに接続する
6-7 AWS IoT Coreに来たメッセージをAWS IoT Eventsに連携する
入力の定義を作成する(AWS マネジメントコンソールで作業する場合) / 入力の定義を作成する(CLIで作業する場合) / メッセージを連携する(AWS マネジメントコンソールで作業する場合) / メッセージを連携する(CLIで作業する場合)
6-8 AWS IoT Eventsでインターホン状態を管理する
AWS IoT Eventsを構成する(AWS マネジメントコンソールで作業する場合) / AWS IoT Eventsを構成する(CLIで作業する場合)
6-9 パトライトを構成する
パトライト向けのデバイス証明書を発行する / パトライトを設定する
まとめ
●第7章 自分だけが開ける「スマート宝箱」を作る
7-1 設計の概要
7-2 ハードウェア側の開発
ファームウェアのビルド / デバイス・クラウド間のメッセージング / ファームウェア側の処理の流れ / デバイス側の動作確認
7-3 加工と組み立て
7-4 モバイルアプリの開発
Android/Amplify 開発環境をセットアップ / Authentication / AppSync(GraphQL) / Android(Kotlin)の実装 / 7-5 システムの統合 / DynamoDBの更新をトリガーにDevice Shadowを更新 / Device Shadowの変更を検知し、AppSync API経由でスマホに通知
まとめ
●第8章 施設の混雑状況をモニタリングするアプリを作ってみよう
8-1 AWS 上に混雑状況モニタリングアプリを構築する
8-2 アプリケーションの構成を考える
1. 施設の様子を撮影するカメラ / 2. 撮影した画像を解析して施設の人数をカウントする仕組み / 3. エンドユーザーに施設の人数をリアルタイムに通知する仕組み / 4. アプリケーションの認証認可の仕組み
8-3 AWS のアーキテクチャを設計する
Amazon Cognito / AWS AppSync / Amazon Rekognition / Amazon DynamoDB
8-4 AWS Amplify について
Amplify ライブラリ / Amplify UI コンポーネント / Amplify CLI / Amplify Console
8-5 アプリケーションの実装
今回の開発スコープ / 開発環境の前提条件 / Amplify CLI のセットアップ / アプリケーションのセットアップ / バックエンド構築のための設定 / Amplify CLI でバックエンドを構築する / 認証基盤の設定 / GraphQL(AppSync)基盤の設定 / Amazon Rekognition の設定 / バックエンドへの反映 / アプリケーションを実行し、管理者用アカウントを作成する / 管理者のみ管理画面にアクセスできるようにする / エンドユーザー用のアカウントを作成する / 施設情報を登録する / 施設情報の混雑状況をモニタリングする / アプリケーションをデプロイする
8-6 アプリケーションコードの解説
アプリケーション全体で Amplify ライブラリを使用できるようにする / アプリケーションの認証処理を理解する / Amplify ライブラリを使って AppSync にアクセスする
まとめ
●第9章 迷路や部屋を学習して自動走行するロボットを作る
9-1 AWS RoboMaker 開発環境を構築する
9-2 サンプルアプリケーションを試す
シミュレーションの料金
9-3 ソースコードを理解する
基本構成 / 重要な箇所の紹介
9-4 AWS RoboMaker を使った開発のワークフローを確認する
迷路を変える / 強化学習の報酬関数を確認、アクションスペースを変更する
9-5 ロボット本体にサンプルアプリケーションをデプロイする
ロボット本体のセットアップ / Linux PC (Ubuntu 18.04) のセットアップ / ロボットが利用する IAM ロール の作成 / フリートを作成する / AWS RoboMaker にロボットの登録を作成する / ロボットをフリートに紐づける / デプロイする / ロボットを起動する
●第10章 スマート家電をクラウドからコントロールしてみた
10-1 全体の流れ
利用するデバイス / 利用する AWS のサービス / 全体アーキテクチャ
10-2 Jetson nano のセットアップ
SD カードイメージのダウンロード / SD カードへのイメージ書き込み / Jetson nano の起動、初期セットアップ / node.js のインストール
10-3 ECHONET Lite 対応デバイスを探す
echonet-lite ライブラリのインストール / デバイス探索プログラムの実装と実行 / 制御対象デバイスのリストアップ
10-4 デバイスを手動で制御してみる
デバイスの仕様を調べる / デバイス手動制御プログラムの実装と実行
10-5 デバイスの状態をクラウドと同期する
AWS IoT Greengrass V1 の実行に必要な設定を行う / Greengrass グループの作成 / Greengrass Core ソフトウェアのインストール / Greengrass Core ソフトウェアの起動
10-6 クラウドからデバイスを遠隔制御する
Greengrass グループへのデバイスの登録 / デバイスシャドウに開閉状態を定義 / AWS Lambda への Lambda 関数の登録 / Greengrass グループへの Lambda 関数の登録 / Greengrass グループへのサブスクリプションの登録 / 動作確認
10-7 Alexa による機器制御
Alexa スマートホームスキルとは / スマートホームスキルの開発方法
10-8 運用コストの見積もり
まとめ
●第11章 Jetson Nano と AWS IoT サービスで一家団欒の時間を作ろう
11-1 はじめに
利用するデバイス / 利用するAWSのサービス / 全体のアーキテクチャ
11-2 Jetson Nanoで人物検出できるようにデバイスをセットアップする
ACアダプタから給電するようにする / OSイメージをSDカードに書き込む / SWAP領域を増やす / MXNet及びGluonCVのセットアップ / 接続したUSBカメラの有効な解像度を調べる / AWS IoT Greengrassのセットアップ / Jetson Nanoの設置とUSBカメラの位置を調整 / GUIからCUIへの変更 / 推論Lambda関数のデプロイ
11-3 AWS IoT Eventsを使って人数状態に合わせた通知を設定する
通知用Amazon SNSトピックの作成 / AWS IoT Events 入力の作成 / AWS IoT Events 検知モデルの作成
11-4 Amazon QuickSightを使って変化を可視化してみる
AWS IoT Analyticsの準備 / Amazon QuickSightでのデータ分析
まとめ
●第12章 AWS のサービスとの連携
12-1 製品開発で利用するには
12-2 マネージド型サービスの活用
12-3 IoTセキュリティ対策
デバイス証明書の利用 / セキュリティ監視・監査 / ファームウェアの更新
12-4 ハードウェアの選び方
クラウドとの通信方法 / マイコンおよびマイクロプロセッサの選び方
12-5 より深く学習するには
AWS IoT 開発者ポータル / オンラインハンズオン / IoT関連のセミナーイベント
まとめ
補足資料 AWSのサービス説明
ステップ 1: AWS アカウントの作成
ステップ 2: 連絡先情報を入力
ステップ 3: お支払い情報を入力
ステップ 4: SMS または日本語自動音声電話によるアカウント認証
ステップ 5: AWS サポートプランの選択
ステップ 6: IAM 管理者のユーザーおよびグループの作成
●第2章 管理ツールのセットアップ方法 – AWS CLI
2-1 AWS CloudShellを利用
2-2 自分の環境にCLIをセットアップ
2-3 IAM ユーザーのアクセスキーを作成するには
2-4 一時的なクレデンシャル情報の取得
●第3章 遠隔操作スマートホームデバイスをつくる
3-1 構成と使用するサービスの紹介
構成 / AWS IoT Greengrassとは / AWS IoT Coreとは / AWS利用料金 / 作業手順
3-2 使用するハードウェアの準備
3-3 ハードウェアのセットアップ
3-4 Raspberry Piのセットアップと動作確認
3-5 AWS IoT Greengrassのインストール
3-6 AWS IoT Greengrassの設定
デバイスリソースの追加 / コネクタの追加 / サブスクリプションの追加 / デプロイ
3-7 動作確認
まとめ
●第4章 簡単おうちセキュリティカメラを作る
4-1 アーキテクチャと利用する AWS サービス
4-2 Raspberry Pi のセットアップ
依存ライブラリのインストール / Amazon Kinesis Video Streams Producer SDK C++のインストール
4-3 Amazon Kinesis Video Streams のセットアップ
4-4 Amazon Simple Notification Service のセットアップ
4-5 AWS CLI を用いた手順
4-6 Raspberry Pi のプログラムの設定
Python プログラムの作成 / ソースコードの解説 / 環境変数の設定
4-7 アプリケーションの実行
4-8 アプリケーションの常時実行のための設定
4-9 運用コストの見積もり
まとめ
●第5章 スマートホームを自作する ~ドアホン編~
5-1 利用するデバイス
5-2 利用する AWS のサービス
5-3 Raspberry Piで Kinesis Video Streams with WebRTC のサンプルアプリを使えるようにする
KVS with WebRTC のセットアップ
5-4 よりセキュアな認証情報の利用について
AWS IoTの証明書を作成 / CloudFormation で AWS IoT に必要なリソースと Role を作成する / ロールエイリアスの作成 / クレデンシャルエンドポイントの確認 / サンプルソースコードの修正 / AWS IoT の root CA 証明書のダウンロード / 動作確認
5-5 Amazon Alexa のスマートホームスキルを作成する
スキルの登録 / Lambda の作成 / スキルの更新 / 動作確認
5-6 運用コストの見積もり
まとめ
●第6章 ミーティング中の来客時に便利 ! インターホンと警告灯を連動させてみた
6-1 はじめに
6-2 利用するデバイス
6-3 利用するAWSのサービス
6-4 全体のアーキテクチャ
6-5 M5StickCを使ってアナログ信号をMQTTメッセージに変換する
Arduino IDEのセットアップ / ライブラリのセットアップ / 実装
6-6 インターホンのスピーカーの配線をM5StickCに接続する
6-7 AWS IoT Coreに来たメッセージをAWS IoT Eventsに連携する
入力の定義を作成する(AWS マネジメントコンソールで作業する場合) / 入力の定義を作成する(CLIで作業する場合) / メッセージを連携する(AWS マネジメントコンソールで作業する場合) / メッセージを連携する(CLIで作業する場合)
6-8 AWS IoT Eventsでインターホン状態を管理する
AWS IoT Eventsを構成する(AWS マネジメントコンソールで作業する場合) / AWS IoT Eventsを構成する(CLIで作業する場合)
6-9 パトライトを構成する
パトライト向けのデバイス証明書を発行する / パトライトを設定する
まとめ
●第7章 自分だけが開ける「スマート宝箱」を作る
7-1 設計の概要
7-2 ハードウェア側の開発
ファームウェアのビルド / デバイス・クラウド間のメッセージング / ファームウェア側の処理の流れ / デバイス側の動作確認
7-3 加工と組み立て
7-4 モバイルアプリの開発
Android/Amplify 開発環境をセットアップ / Authentication / AppSync(GraphQL) / Android(Kotlin)の実装 / 7-5 システムの統合 / DynamoDBの更新をトリガーにDevice Shadowを更新 / Device Shadowの変更を検知し、AppSync API経由でスマホに通知
まとめ
●第8章 施設の混雑状況をモニタリングするアプリを作ってみよう
8-1 AWS 上に混雑状況モニタリングアプリを構築する
8-2 アプリケーションの構成を考える
1. 施設の様子を撮影するカメラ / 2. 撮影した画像を解析して施設の人数をカウントする仕組み / 3. エンドユーザーに施設の人数をリアルタイムに通知する仕組み / 4. アプリケーションの認証認可の仕組み
8-3 AWS のアーキテクチャを設計する
Amazon Cognito / AWS AppSync / Amazon Rekognition / Amazon DynamoDB
8-4 AWS Amplify について
Amplify ライブラリ / Amplify UI コンポーネント / Amplify CLI / Amplify Console
8-5 アプリケーションの実装
今回の開発スコープ / 開発環境の前提条件 / Amplify CLI のセットアップ / アプリケーションのセットアップ / バックエンド構築のための設定 / Amplify CLI でバックエンドを構築する / 認証基盤の設定 / GraphQL(AppSync)基盤の設定 / Amazon Rekognition の設定 / バックエンドへの反映 / アプリケーションを実行し、管理者用アカウントを作成する / 管理者のみ管理画面にアクセスできるようにする / エンドユーザー用のアカウントを作成する / 施設情報を登録する / 施設情報の混雑状況をモニタリングする / アプリケーションをデプロイする
8-6 アプリケーションコードの解説
アプリケーション全体で Amplify ライブラリを使用できるようにする / アプリケーションの認証処理を理解する / Amplify ライブラリを使って AppSync にアクセスする
まとめ
●第9章 迷路や部屋を学習して自動走行するロボットを作る
9-1 AWS RoboMaker 開発環境を構築する
9-2 サンプルアプリケーションを試す
シミュレーションの料金
9-3 ソースコードを理解する
基本構成 / 重要な箇所の紹介
9-4 AWS RoboMaker を使った開発のワークフローを確認する
迷路を変える / 強化学習の報酬関数を確認、アクションスペースを変更する
9-5 ロボット本体にサンプルアプリケーションをデプロイする
ロボット本体のセットアップ / Linux PC (Ubuntu 18.04) のセットアップ / ロボットが利用する IAM ロール の作成 / フリートを作成する / AWS RoboMaker にロボットの登録を作成する / ロボットをフリートに紐づける / デプロイする / ロボットを起動する
●第10章 スマート家電をクラウドからコントロールしてみた
10-1 全体の流れ
利用するデバイス / 利用する AWS のサービス / 全体アーキテクチャ
10-2 Jetson nano のセットアップ
SD カードイメージのダウンロード / SD カードへのイメージ書き込み / Jetson nano の起動、初期セットアップ / node.js のインストール
10-3 ECHONET Lite 対応デバイスを探す
echonet-lite ライブラリのインストール / デバイス探索プログラムの実装と実行 / 制御対象デバイスのリストアップ
10-4 デバイスを手動で制御してみる
デバイスの仕様を調べる / デバイス手動制御プログラムの実装と実行
10-5 デバイスの状態をクラウドと同期する
AWS IoT Greengrass V1 の実行に必要な設定を行う / Greengrass グループの作成 / Greengrass Core ソフトウェアのインストール / Greengrass Core ソフトウェアの起動
10-6 クラウドからデバイスを遠隔制御する
Greengrass グループへのデバイスの登録 / デバイスシャドウに開閉状態を定義 / AWS Lambda への Lambda 関数の登録 / Greengrass グループへの Lambda 関数の登録 / Greengrass グループへのサブスクリプションの登録 / 動作確認
10-7 Alexa による機器制御
Alexa スマートホームスキルとは / スマートホームスキルの開発方法
10-8 運用コストの見積もり
まとめ
●第11章 Jetson Nano と AWS IoT サービスで一家団欒の時間を作ろう
11-1 はじめに
利用するデバイス / 利用するAWSのサービス / 全体のアーキテクチャ
11-2 Jetson Nanoで人物検出できるようにデバイスをセットアップする
ACアダプタから給電するようにする / OSイメージをSDカードに書き込む / SWAP領域を増やす / MXNet及びGluonCVのセットアップ / 接続したUSBカメラの有効な解像度を調べる / AWS IoT Greengrassのセットアップ / Jetson Nanoの設置とUSBカメラの位置を調整 / GUIからCUIへの変更 / 推論Lambda関数のデプロイ
11-3 AWS IoT Eventsを使って人数状態に合わせた通知を設定する
通知用Amazon SNSトピックの作成 / AWS IoT Events 入力の作成 / AWS IoT Events 検知モデルの作成
11-4 Amazon QuickSightを使って変化を可視化してみる
AWS IoT Analyticsの準備 / Amazon QuickSightでのデータ分析
まとめ
●第12章 AWS のサービスとの連携
12-1 製品開発で利用するには
12-2 マネージド型サービスの活用
12-3 IoTセキュリティ対策
デバイス証明書の利用 / セキュリティ監視・監査 / ファームウェアの更新
12-4 ハードウェアの選び方
クラウドとの通信方法 / マイコンおよびマイクロプロセッサの選び方
12-5 より深く学習するには
AWS IoT 開発者ポータル / オンラインハンズオン / IoT関連のセミナーイベント
まとめ
補足資料 AWSのサービス説明
著者情報
アマゾンウェブサービスジャパン株式会社
市川 純
《市川 純》
アマゾン ウェブ サービス ジャパン株式会社
プロトタイピング ソリューション アーキテクト
モノづくりであれば、日曜大工からサービスづくりまで何でもやるのが好きです。仕事では、IoTを使ったシステムの構築を、プロトタイピングやアーキテクティングを通して支援しています。
飯田 起弘
《飯田 起弘》
アマゾン ウェブ サービス ジャパン株式会社
プロトタイピング ソリューション アーキテクト
AWS入社前は、電機メーカーにてオーディオやIoT製品の開発立ち上げのための要件定義、設計、プロトタイピングなどを担当。AWSでは、製品のIoT化を検討されているお客様のデバイス・クラウド両方の開発支援をしています。週末は個人で開発している製品の量産化のためにメカ設計をしています。
飯塚 将太
《飯塚 将太》
アマゾン ウェブ サービス ジャパン株式会社
IoT スペシャリスト ソリューション アーキテクト
どれだけストレス・レスな家を作れるかが最近目指しているところで、その一環でスマートホーム化を進めています。仕事ではIoTワークロードを持つお客様の技術支援をしています。
河田 卓志
《河田 卓志》
アマゾン ウェブ サービス ジャパン株式会社
RoboMaker シニア ソリューション アーキテクト
複数のロボットを個人所有するロボットおじさんです
水馬 拓也
《水馬 拓也》
アマゾン ウェブ サービス ジャパン株式会社
プロトタイピング ソリューション アーキテクト
普段はプロトタイピングという形でお客様の新規サービスやプロジェクトの立ち上げを支援させていただいています。好きな AWS サービスは AWS Amplify。好きなプログラム言語は JavaScript/TypeScript/React.jsなどフロントエンド周り
嶺 行伸
《嶺 行伸》
アマゾン ウェブ サービス ジャパン株式会社
IoT スペシャリスト ソリューション アーキテクト
学生時代からスマート家電やロボットといった IoT の分野に興味を持ち、エンジニアとしてスマートロックやネットワーク AV 機器などの開発に携わってきました。AWS では IoT ソリューションアーキテクトとして、主に工場やプラントへの IoT 導入を支援しています。
三平 悠磨
《三平 悠磨》
アマゾン ウェブ サービス ジャパン株式会社
IoT スペシャリスト ソリューション アーキテクト
AWS 入社前はソフトウェアエンジニアとして会話 AI や家庭用ロボット開発に携わりました。AWS ではお客様の IoT 関連案件を支援しています。
渡邉 聡
《渡邉 聡》
アマゾン ウェブ サービス ジャパン株式会社
プロトタイピング ソリューション アーキテクト
趣味は DIY で棚や机の作成から、料理から手芸まで興味のあるものは何でも作ってみます。AWSではIoTプロトタイピングを通してお客様のビジネス加速のお手伝いさせていただいております。
竹崎 雄紀
《竹崎 雄紀》
アマゾン ウェブ サービス ジャパン株式会社
Sr. Developer Acquisition Manager
AWS 入社前は企業ウェブサイト制作、プロデューサーから事業開発・商品企画を経て、マーケティングに従事。AWS ではデベロッパーの皆様により AWS を身近なものに感じていただきたいという思いから、 builders. flash を運営しています。
アマゾン ウェブ サービス ジャパン株式会社