your Hit Point

© CC BY 4+ visibility2161
© CC BY 4+
visibility2161

スマートウォッチを用いて身体情報を取得し、睡眠時間や心拍,歩数などを元に、自分の体力(HP)を可視化する。
自分のHPによって、アプリ内で設定したペットの表示が変わる。フレンドのHPの可視化もできる。

link https://github.com/icep1anet/YourHitPoint.git
  • EFC AWARD プロダクト開発部門エンジニアフレンドリーシティ福岡 Engineer Driven Day 2023
動画
開発素材
システム構成
system image

上記システム構成は変更になる場合があります。最新版についてはページ下部のスライド参照。   

機能構成

  • ユーザーのHP、健康度レベルを計算して表示
  • HPに応じてペットアバターの状態が変化
  • フレンドのHP、アバター状態も確認可能
  • HPに関連するデータやHPの時系列グラフも表示 HPの未来予測も行う


    追記
    ハッカソンやポスターセッションなどのfeedbackから長時間のデスクワークについてもHPに反映させるようにした
    詳しくは下のスライドの50p参照

データフロウ

  • スマートウォッチのFitbitからユーザーの身体情報データを取得する
  • 身体情報データは個人情報であるため、サーバーではなくスマホアプリ内に保存する
  • スマホアプリ内の身体情報データからCloud runを用いてHP等を計算し、Firebase Cloud Firestoreに最低限のユーザー情報を保存する
  • アプリで起動時にCloud runを用いてFirebase Cloud Firestoreからユーザー情報を取り出し、表示・更新を行う

セキュリティ

  • アプリ内でのログインはFirebase Authenticationを使用しており、メールアドレスによる認証を実装している。
  • firebaseにユーザーの情報を格納する際にidをハッシュ化している。
  • OAuthをクライアント側で実行することで個人情報である身体情報データをサーバー側で保持しなくてよくなる。
    詳しくは下のスライド45pを参照

既存技術との差別化点

Pokemon Sleep (ポケモンを捕まえるモチベーションによって快適な睡眠をするようにユーザーに行動変容を促すアプリ) your hit pointでは、fitbitを用いることでより詳細な睡眠情報のデータが取れ、睡眠情報だけでなく心拍などのデータもアプリに取り入れることで多くのリアルタイムのデータからHPという独自の指標を計算し表示する。

一般的なヘルスケアアプリ (例 google fit) (一日の歩数を自動で記録し、目標までの進捗をグラフで見ることができるアプリ) 多くの情報がアプリ内で表示され、分かりにくい点があるが、your hit pointを使用することでユーザーの健康状態を一目で把握することができる。またユーザーの健康状態とペットがリンクしているため、健全な生活をしようというモチベーションを高めることができる。

将来の展望

  • 今後はHPの表示として、ウェアラブルデバイスを用いてわざわざアプリを開かなくても一目で自身やfriendのHPを見ることができるようにしたい。またARグラス上で、ゲームのように頭の上にHPゲージを表示させることも検討している。
  • グラフのHPの未来予測は固定値としていることで遷移が不自然に変わっているので、過去のデータを参照して未来データを作成するように改善したい。
  • HPについてのfeedbackからよりユーザーに最適化されたHPの計算を行いたい
    詳しくはスライド参照
ストーリー

メッセージ

このアプリは、ゲームのHPという概念を現実で用いてみたいというアイデアから着想を得た。HPを用いて日々の疲れや健康度を表示することで、自分の状態を客観的に把握することができる。また、ペット要素を追加することでペットへの愛情からユーザーの働きすぎを防ぐなどの行動変容にもつなげられるのではないかと考えている。

チームメンバーのうち3人がプログラミング初心者という状況で、タスクを分担しつつも試行錯誤しながら時間をかけて作ったアプリなので、評価されてほしい。

解決する課題、提供する価値
日本人はよく働きすぎるという特徴があるので、自身の健康を一目でHPとして可視化することでユーザーが自身の健康を気遣うことができる。ペットというアバターに思い入れを持たせることでよりユーザーの健康の意識を高めることができる。また、短期的な疲労度としてHP 長期的な健康度として健康度レベルを定義し、健康状態を細分化しながらも厳密に管理している

作品の特徴
概要でも述べた通り

  • 自身の健康情報をスマートウォッチなどで取得し、一目でわかるHPという指標で示す
  • フレンドのHPも確認することができる
  • HPに応じてアバターの健康状態も変化する
  • 健康情報をグラフなどで分かりやすく表示している
  • 短期的な疲労度としてHP, 長期的な健康度として健康度レベルを定義

    などがある。

開発の流れ

まず、HPはスマホで見れることを想定していたのでネイティブアプリで制作することを決めた。そしてAndroidとiOSのどちらにも対応したアプリとするために2つの環境での開発を同時に行うことができるFlutterを用いることにした。端末で全ての処理を行うことは負荷が大きいため、HPなどの計算をAWS lambdaを使って行うことにした。プログラミング初心者なので言語はpythonを用いた。

しかし、feedbackなどでlambdaよりチーム開発の効率が落ちる点などがあるためにbackendを大規模に改良し、cloud runを用いることにした。

具体的な開発の流れについては、まずこのアプリの核となるHPの表示をFlutterで行い、その後backendでpythonを実行するLambdaとFlutterのデータの受け渡しやFirebaseの基本設定を行った。それからは4人で作業を分担し、UI設計、HP計算、Fitbitからのデータ取得、Firebase関連処理に分けて開発を行った。backendをcloud runに変更後は、flutterのフロント側でfitbit web apiとのやり取りを行い、backendは個人情報をfirebase上に保存しないようにしながらエンドポイントごとに開発を行った。

実装開発が困難だった点と解決方法

  • どのようなパラメータを使ってHPを表現するか、またそれらのパラメータを使ってどのようにHPを計算するか

        
→論文を調査しながら慎重に検討した。

backend変更後

  • flutter側でfitbitのweb api や cloud runとのデータのやり取りを行う際のデータの型の一致を行う点

     
→aws lambda側で行っていた知見などを用いながら、頑張った

メンバー

カルスト地形とリアス海岸

  • user
    tanker太郎 @tanker_tarou
    • デザイン
    • バックエンド
    • 文献調査
  • user
    konbu @tachiuo
    • フロントエンド
    • バックエンド
  • user
    あいぷら @icep1anet
    • バックエンド
    • 環境構築
  • user
    tokoyo @tokoyo_1111
    • 文献調査
    • バックエンド

関連イベント
  • event ヒーローズ・リーグ 20232023-08-28 開催
  • event エンジニアフレンドリーシティ福岡 Engineer Driven Day 20232023-07-08 開催
  • event ヒーローズ・リーグ 20242024-09-02 開催
  • event アバナードHuman Impactリーグ2024-09-02 開催
関連リンク
user
ばんの @tomoki_banno

YouTubeで紹介させていただきました!
https://youtube.com/live/f1Z2rI3qJQo

user
tanker太郎 @tanker_tarou

ありがとうございます

user
tanker太郎 @tanker_tarou

励みになります!

user
EFC AWARD プロダクト開発部門 @エンジニアフレンドリーシティ福岡 Engineer Driven Day 2023

チーム:カルスト地形とリアス海岸


同じニオイがする作品
  • event AITRIOS HUB
  • event maksy
  • event 30分制限レシートアプリで都市をハック
  • event ジェスチャードライブ!

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次