---
# System prepended metadata

title: 研修で作成するサービスの要件

---

# 研修で作成するサービスの要件
## 1. 新製品のウェアラブルデバイス（眼鏡型）からデータをセンターに飛ばして活用したい
### 飛ばすデータ
- 強い衝撃
- 虹彩認証（故障でなければ基本的には購入後1度のみで）
- 現在の位置情報
- 残充電量（100%を基準に10%の増減に対してデータを飛ばす）
- 充電開始・終了（開始・終了時の残充電量と日時と位置）
- センターとのデータ連携を有効にしていた場合、映像・画像データのすべて
## 2. 製品が手元にない（置忘れ等）場合にユーザがスマホから諸々の操作が行いたい
### 対象操作
- アカウント登録
- スマホ連携の切断
- 過充電防止のための充電量操作
- 位置情報
- その場で見えているものの映像
- データロック＆バックアップ
- センターとのデータ連携設定
---
# サービスの簡単な仕様
## デバイスからの自動送信データ
- 自動で飛んでくるデータはバイナリ形式をgzip圧縮されたものがBase64エンコードされている
- 虹彩認証時にデバイスIDとデバイスに紐づく固有情報（ユーザIDを含む）、及び虹彩情報を送信
- データが飛んできたときは必ずデバイスIDを確認してから処理を行う
- センターはAWSを使用する
- 以下アーキテクチャ
    - デバイスからHttp通信
    - AmazonKinesisDataStreamでデータを格納（非同期処理）
    - KinesisからLambdaでデータを刈り取り
    - デバイスIDが正しいか否かをDynamoDBに問い合わせる
    - 存在するデバイスIDであればS3へデータを永続保存
- 虹彩認証時のみデバイスの素早いアクティベートが必要なため同期処理を行う
- 以下アーキテクチャ
    - デバイスからHttp通信
    - API Gateway を経由
    - Lambdaで受け取る
    - 登録処理を行ってデバイスへレスポンス
## ユーザのスマホ操作
- データはすべてJson形式でやり取りする
- 必ず処理の頭にDBよりユーザIDを元にデバイスIDとデバイス情報を取得する
- デバイスに送信するリクエストはバイナリ形式をgzip圧縮したものとする
- 以下アーキテクチャ
    - スマホからJson形式のHttpリクエスト
    - API Gateway を経由
    - Lambdaで受け取る
    - ユーザIDでDynamoDBからデバイス情報を取得
    - バイナリデータを作成しgzip圧縮
    - デバイスへデータの送信
    - スマホへレスポンス
- 機能毎にAPIを作成すること
    - アカウント登録
    - スマホ連携の切断
    - 過充電防止のための充電量操作
    - 位置情報
    - その場で見えているものの映像
    - データロック＆バックアップ
    - センターとのデータ連携設定