九州先端科学技術研究所 / 特別研究員
スマートデバイスを用いて計測した情報の効果的可視化手法の確立
# 概要 国の事業「地域戦略プロジェクト」の中の一つ「スマートデバイスを用いて計測した情報の効果的可視化手法の確立」のいちごの収穫に関わるセンサーデータなどをグラフィカルに表示するAndroidアプリとバックエンドを開発しています。 # やってきたこと AndroidアプリとバックエンドはKotlin Multi Platform を使って開発しています。開発者が僕一人であるため、1つの言語で効率的に開発したかったことと、実験的挑戦が推奨されるプロジェクトだったためです。 まずは1つの共通ライブラリになるモジュールを作り、Android, iOS, serverで共通するモデルやAPI呼び出し、共通する関数をまとめました。これにより同じコードを何度も書く手間が減りました。 アプリはグラフを多用するツールになっており、小さな画面でも見たい情報がわかりやすくなるよう、デザインを工夫しながら開発しています。センサーデータは次々と流れてくるため、RxJavaを使いストリーム処理させています。 サーバーサイドは当初 EC2インスタンスの中にdocker compose を使って構築していました。APIはFlask、DBはMongoDBを採用していました。当初はプロトタイプ的な意味合いが強いサーバーだったため、迅速に開発することが求められたためです。当初はdocker machine を使いクライアントマシンからデプロイしていました。 IoTはときにデバイスが壊れ、データが送られなくなることがあります。それを検知するため定期的に特定デバイスからのデータが届いているかを確認するbotを開発し、Slackに通知させ保守性を高めました。 しかしIoTデバイスが増えデータが蓄積されるにつれ、大きなインスタンスが必要になり、コストが大きくなってきました。そのため現在はLambda, DynamoDB の構成に変更し高速化、低コスト化、安定化を実現しました。Serverless Frameworkを使い、AWS構成の構築は簡素化しました。 IoTの構成のDB移行作業はなかなか難しく、データ量が多い、DynamoDBでも思った性能が出なかったりしまし、何度もトライ・アンド・エラーを繰り返しました。移行処理はKotlinでスクリプト化し、コマンド一つで移行できるようにしました。無事成功し、現在は多数のアクセスを捌いています。