【IoTコンテスト】AIを活用した到着メール通知サービス

こんにちは、宮内です。
昨年12月に行われたIoTコンテストに参加し、開発部門で優秀賞をいただくことができました。
今回は、コンテストに向けて作成したサービスの概要と、活用したAWSサービスについてご紹介します。

到着メール通知サービス「infoRM」

開発のきっかけ

近年、学校の登下校中の子どもや、塾・学童に向かう子どもが巻き込まれる事件、事故が多く発生しています。子どもだけの外出に対して不安を持つ保護者は少なからずいらっしゃるのではないかとチームで考え、「不安を安心に変えられるサービス」をコンセプトに開発を行いました。
ちなみに、サービス名の「infoRM」は"知らせる"という意味の英単語 inform から名付けています。

サービス概要

塾や学童に取り付けたカメラで到着した子どもの画像を撮影し、クラウドサービスへ連携します。
次に、連携された画像に対してAIによる画像分析処理を行ない、写っている子どもが誰なのかを判定します。
最後に、分析結果から子どもの氏名や保護者のメールアドレスを取得し、保護者へメールを送信します。
処理イメージは以下の通りです。

infoRM サービス概要図


また、メールにはカメラで撮影した画像を添付します。添付する画像に他の子どもが写っている場合は、モザイク処理をかけるように設定しました。モザイク処理についてはこちらの記事で作成したものを一部改修して利用しています。

使用した機器

画像の撮影はラズパイに接続したカメラモジュールで行い、人がカメラの前に立っていることを検知するために赤外線感応モジュールも併せて使用します。また、クラウドサービスはAWSを利用します。

infoRM 使用する機器

ラズパイ側の設定や実行するプログラム等については、過去の記事で取り上げていますので、こちらをご参照ください。

サービス構成図

サービスの構成図は以下の通りになります。
ラズパイとの連携にはAWS IoT Coreを利用し、Lambdaを中心としたサーバレスサービスのみで構成しています。
今回開発したサービスのポイントとして、アプリケーションと認証の基盤、自動デプロイ環境の構築について説明します。

infoRM サービス構成図

アプリケーション基盤の構築:AWS Amplify

今回開発したサービスはAmplifyを活用することにより、Webアプリケーションとして公開できるようにしています。
AmplifyはWeb(モバイル)アプリケーションを簡単に構築できるだけでなく、アクセス集中時のスケーリングを自動で行なうなど、開発や運用をサポートする機能が充実しているのが特徴です。

認証基盤の構築:Amazon Cognito

Webアプリケーションを管理するユーザ(塾の担当者など)に関しては、Cognitoというサービスを活用してユーザ管理を行っています。AmplifyとCognitoを組み合わせることによって、認証機能を持ったWebアプリケーションを簡単に構築することができるようになります。
また、Cognitoによって認証を受けるとトークンが発行されますが、このトークンを活用することでAPI Gatewayにアクセス制限を設ける(Cognitoで認証を受けていないと使用できないようにする)こともできます。

infoRM Cognitoの認証機能

自動デプロイ環境の構築:Amplify + CodeCommit

今回のサービスではHTMLやJavaScriptといったソースの管理をCodeCommitで行っています。
CodeCommitの情報をAmplifyに設定することにより、CodeCommitに変更したソースをコミットするだけで、Webアプリケーションを自動的にデプロイすることが可能になります。
CI/CD(継続的インテグレーション/継続的デリバリー)と呼ばれる環境の構築が容易にできるのも、Amplifyの良い点だと感じています。

infoRM CodeCommitの自動デプロイ

さいごに

今回、AWSの様々なサービスを組み合わせることによって、シンプルで発展性のあるシステムを構築することができました。また、以前に作成したモザイク処理の機能を活用できたことも、個人的に嬉しいポイントでした!(^^)b

セキュリティやAIの分析精度など解決できていない課題もありますが、技術面で高い評価をいただくことができ、優秀賞という結果を残すことができました。今後もサービス化できるシステムの開発や技術の習得に向けて、自己研鑽に励みたいと思います。