ホットスタッパー

https://github.com/progate-surfing-hackathon/frontend

AWS

Python

Terraform

RDS

Flutter

無駄な出費を、データで防ぐ。

saika764

一般人

石原佳晴

shimgo2008

Ryotaro Ota

推しアイデア

未来の飲み物代を予測して、朝の行動(持ち物)に反映させること

作った背景

さいきん暑いからついつい飲み物を買いすぎちゃうのを解決したかった

推し技術

TerraformとGitHubActionsでインフラをGitで一元管理した

プロジェクト詳細

🚰 Example

概要:

「つい飲み物を買いすぎる」を防ぐ。 気温・運動・曜日などの情報をもとに、 今日いくら使いそうかを朝のうちに予測し、 水筒の準備などの行動に落とし込める節約サポートアプリ💡


😯 何ができるの?:

  • 今日の気温・予定・習慣から、その日の飲み物支出を予測
  • 朝、「〇〇円くらい使いそう」と通知
  • 「だから水筒〇ml持っていこう!」など、予測→行動までをサポート
  • 月ごとの出費傾向も可視化。「買いすぎがちな曜日」や「浪費パターン」を発見!

🤔 どう作ったの?仕組みは?:

🛠️ 使用した技術

インフラ・バックエンド

  • Terraform
  • GitHub Actions
  • AWS Amplify
  • AppSync GraphQL Gateway
  • Aurora And RDS
  • Lambda(データ分析)
  • prisma(スキーマ定義)

フロントエンド

  • Flutter
  • iOS Widget Kit
  • iOS HealthKit
  • SwiftUI
  • Cognito/Amplify

アーキテクチャ図

image


👍 技術的こだわり

APIサーバーを自己ホストしておらず、Amplify=>AppSync=>RDSのようなアーキテクチャになっており、フルマネージドの恩恵を受けている。 AWSベストプラクティスを参考にアーキテクチャを組んだ。 TerraformとGitHubActionsを使ってインフラを一元管理した。 FlutterとiOS NativeKitと組み合わせたあまりないチャレンジングな構成


🤖AI活用

Github Copilotなどを用いたPR詳細

簡単な部分をAIに任せる

  • Terraformのマニフェストの作成を手伝ってもらう
  • FlutterのComponentを作ってもらった

など


📉バックエンドのデータ分析

発表しそびれました

1. 分析、予測値の計算方法

  • 機械学習によるフィッティング
  • 気温(外環境)、歩数(行動履歴)などの変数を設定して重回帰分析

のいずれかを用いて支出を予測するプログラムを実装することに。学習用データの用意の難易度など実装の容易さから重回帰分析を実装。pythonのscikit-learnにちょうどいいライブラリがあったのでpythonを採用。

変数の予測値も出さないと次の日の予測を出せないので、 これまでの歩数の平均と、天気予報APIから取得した平均気温の予報を利用して予測。 実装内容が重かったので、lambdaで実装するのではなく、EC2の中で定期実行。

2. 計算処理速度の向上

実運用上、データが大きくなってくるとどんどんと実行時間が増えてしまうので、データの集約、並べ替えをSQLで実行してからpythonで分析を実行するように区別。 indexも用意し、DBの検索性も向上。

3. プッシュ通知

支出の予測が規定値より多い場合に、フロントにAmazon SNSを利用してプッシュ通知を送信。

saika764

@saika764