2023-04-03
PwCは現在、車いす利用者の利用状況を可視化するPoC(概念実証)を進めています。この取り組みの中で、車いす利用者の動作データを取得するため、車いすに加速度センサーを付けてデータを収集するPoC環境(以降、「IoTプラットフォーム」)をクラウド上に構築することにしました。
当初はAWS(Amazon Web Services)が公開しているIoT Core初級ハンズオン1をベースにアーキテクチャ設計を行うことで環境を構築しましたが、その後、GCP環境に構築する必要があるため、GCP(Google Cloud Platform)環境にIoTプラットフォームを移行しました。
一つの例として、GCPというクラウドサービスを利用しましたが、GCPでの利用を推奨するわけではありません。他クラウドサービスでもIoTプラットフォームの構築は可能となります。
本稿ではクラウドサービスを利用したIoTプラットフォームの構築方法や、AWSからGCP等の他クラウドサービスに環境を変える必要がある方に、そのポイントをご紹介します。
超高齢化社会を迎えるにあたり、日本は医療費の増大、医療のリソース不足、労働者不足、老々介護の増加など多くの社会課題を抱えています。そこでPwCでは、高齢になっても誰もが満足度も生産性も高く勤労や社会活動に携わり、社会に貢献できる充実した生活を送ることができる社会の実現に向け、IoTを利用したPoC環境をクラウドで構築し、車いす利用者の動作データを取得する実証実験を行いました。
また、多くのハンズオンや関連記事のあるAWS環境で構築を進めた後に、類似サービスが多数提供されているGCPでもIoTプラットフォームの構築を行いました。
本稿で取り扱うクラウドサービスを分類した上で、AWSとGCPが提供するサービスをまとめた表は以下のとおりです。
No | 分類 | AWS | GCP |
1 | IoT | IoT Core | IoT Core |
2 | データ分析 | Kinesis Data Streams | Pub/Sub |
3 | Kinesis Data Firehose | Dataflow | |
4 | Amazon Redshift | Big Query | |
5 | サーバレス | Lambda | Cloud Functions |
6 | コンピューティング | EC2 | Compute Engine |
7 | ストレージ | S3 | Cloud Storage |
8 | データベース | RDS | Cloud SQL |
Raspberry Piに接続して取得した加速度センサーデータをAWSクラウド環境に送り、主にサーバレスのサービスを組み合わせてウェブアプリケーションにセンサーデータをリアルタイム描写させたり、データの2次利用および分析に向けて蓄積するIoTプラットフォームを構築しました。
加速度センサーを準備し、Bluetoothを用いてRaspberry Piと接続し、車いすに装着しました。今回は2種類の加速度センサーを準備し、センサーの仕様上、対応OSが異なっていたため、Raspberry Piも2種類用意しました。
加速度センサーから得られるセンサーデータをRaspberry Pi上に独自で作成したPythonプログラムでJSON形式に整形し、インターネット経由でAWSのIoTプラットフォーム環境に連携しました。データ連携の際には、httpプロトコルと比べて軽量なデータ配信プロトコルであるMQTTプロトコル(Message Queuing Telemetry Transport)を用いました。
IoTプラットフォーム(AWS)では、AWSが提供するIoT Coreサービスを選択することでRaspberry PiとAWSを接続するゲートウェイの機能を利用でき、Raspberry Piからインターネット経由で連携されたセンサーデータを後続のサービスにリレーすることが可能となります。AWSではデバイスシャドウという機能も用いて、データ転送の待ち時間をコントロールすることが可能となります。
今回は2種類の加速度センサーを準備しているため、センサーデータも2種類となります。リアルタイムにデータストリーミングが必要なセンサーデータにはKinesis Data Streamsを利用することで、大量のデータをリアルタイムに後続のサービスに連携が可能となります。その他のセンサーデータは直接、後続サービスに連携しても要件を十分に満たすことを確認しました。
IoTプラットフォームで受け取ったセンサーデータを、独自作成したウェブアプリケーション上にリアルタイム描写するために、EC2をウェブアプリケーションサーバにしてLambdaサービスを利用して、受け取ったセンサーデータをhttpメソッドでポストしました。
ウェブアプリケーション上のセンサーデータをリアルタイムで描写するだけではなく、センサーの原始データをS3オブジェクトストレージとDynamoDB上に保管することで、データの2次利用を見据えたデータレイク構成としました。
AWSのIoTプラットフォームと同様に、Raspberry Piに接続して取得した加速度センサーデータをGCPクラウド環境に送り、主にサーバレスのサービスを組み合わせてウェブアプリケーションにセンサーデータをリアルタイムで描写させ、データの2次利用および分析に向けて蓄積するIoTプラットフォームを構築しました。
加速度センサーおよびRaspberry PiはAWS環境と同様の構成としていますが、独自で作成したPythonプログラムはGCP向けに修正しました。PythonプログラムはGoogle社がGithubにサンプルコードを公開しているため、参考にしました。
なお、センサーデータはJSON形式、データ配信プロトコルはMQTTプロトコルを用いました。
IoTプラットフォーム(GCP)でもAWSと同様のサービスがあり、IoT Coreを利用することでRaspberry Piからインターネット経由で連携されたセンサーデータを後続のサービスにリレーすることが可能となります。
今回、2種類の加速度センサーデータの仕様変更やIoTプラットフォームの要件変更などを見据え、IoT Coreサービスを2つに分けることで、システム変更やメンテナンス性を容易にすることを目的としました。
AWSではデバイスシャドウという機能も用いて、データ転送の待ち時間をコントロールしていましたが、GCPにはそのような機能がなかったため、Raspberry Pi上に独自で作成しているPythonプログラム内で代替機能を実装しました。
* IoT Coreサービス終了のアナウンス3
Google社からIoT Coreサービスの提供が2023年8月16日終了するとアナウンスされているため、代替サービスを検討する必要があります。
メッセージをストリーミング(キューイング)するAWS Kinesisに該当するサービスとしてGCPが提供するPub/Subサービスを用いました。Pub/Subはデフォルトで多くのGCPサービスと連携できます。
IoTプラットフォームで受け取ったセンサーデータを独自作成したウェブアプリケーション上にリアルタイム描写するため、Compute Engineにウェブアプリケーションサーバを構築し、受け取ったセンサーデータをCloud Functionsを利用し、httpメソッドでポストしました。アプリケーションはAWSのIoTプラットフォームと同一のものを利用するため、AWSのIoTプラットフォームと同じデータ連携を実現しました。
センサーの原始データをAWSと同様にオブジェクトストレージである、Cloud Storageに保管しました。GCP環境では直接データベースに保管する構成ではなく、データウェアハウスサービスであるBig Queryを利用しました。
Big QueryとCloud Storageにセンサーデータを連携するためにDataflowサービスを利用しました。このサービスは既にサービス接続、データ連携するワークフローがテンプレートとして用意されており、設定値を入力するだけで期待した処理を実行することができます。
ただし、DataflowサービスはバックエンドでCompute Engineが稼働しており、料金が高額になる可能性があるため、注意が必要となります。
他クラウドサービスでも同じですが、本稿ではAWSとGCPでは類似したサービスが存在しており上手に取捨選択することで、IoTプラットフォームの構築が可能となります。今回の構築目的はウェブアプリケーションに対するリアルタイム描写でしたが、データの2次利用を見据えたデータレイクの構成の仕方がポイントになると考える。またウェブアプリケーションを仮想サーバで構築したがPaaSサービスの活用など、よりクラウドネイティブなアーキテクチャ設計を実施することも有意義であると考えられます。
S.Ozono
技術者派遣会社を経て、現職。社内Digital Product(IoTPlatform、HoneyPot、ATT&CK)インフラシステム構築などに従事。
(1):テック人材の採用と維持における企業の課題
(2):フィーチャーエンジニアリングとは?
(3):SNSを活用したコロナ禍における人々の心理的変化の洞察
(4):自然言語処理(NLP)の基礎
(5):今、データサイエンティストに求められるスキルは何か?データサイエンティスト求人動向分析
(6):コロナ禍における人流および不動産地価変化による実体経済への影響
(7):「匠」の減少―技能継承におけるAI活用の道しるべ
(8):開示された企業情報におけるESGリスクと財務インパクトの関係性の特定
(9):ビッグデータ分析で特に重要な「非構造化データ」における「コンピュータービジョン(画像解析)」とは
(10):自然言語処理・数理最適化による効率的なリスキリングの支援
(11):スポーツアナリティクスの黎明 サッカーにおけるデータ分析
(12):AIを活用した価格設定支援モデルの検討―外部環境変化に即座に対応可能な次世代型プライシング
(13):MLOps実現に向けて抑えるべきポイントー最前線
(14):合成データにより加速するデータ利活用
(1):ブロックチェーン技術の成熟度モデルとステーブルコインの最新動向について
(2):3次元空間情報の研究施設「Technology Laboratory」のデジタルツイン構築とデータの管理方法
(3):3次元空間情報の研究施設「Technology Laboratory」における共通ID「空間ID」と自律移動体の測位技術
(4):G7群馬高崎デジタル・技術大臣会合における空間IDによるドローン運航管理
(1):COVID‐19パンデミック下のオンプレミス環境におけるMLOpsプラクティス
(2):機械学習を用いたデータ分析
(3):AWSで構築したIoTプラットフォームのPoC環境をGCPに移行する方法
(4):テクノロジーの社会実装を高速に検証するPwCの独自手法「Social Implementation Sprint Service」-テクノロジー最前線
(5):自動車業界におけるデジタルコックピットの擬人化とインパクト
(6):成熟度の高いバーチャルリアリティ(VR)システム構築理論の紹介
(7):イノベーションの実現を加速する「BXT Works」とは
(8):Power Platformの承認機能、AI Builderを活用して業務アプリを開発する方
(9):社会課題の解決をもたらす先端テクノロジーとディサビリティ インクルージョンの可能性