Projects

需要予測AIプラットフォーム

開発中

Spring Boot と FastAPI を連携したフルスタック需要予測AIシステムを構築。MLモデルのAPI化、予測履歴管理を含むエンドツーエンドのシステム設計を実装。

ReactTypeScriptSpring BootFastAPIPythonPostgreSQL

スクリーンショット

主要な画面と構成の概要。詳細は GitHub の README をご参照ください。

概要

小売・EC 領域における需要予測をテーマにした、フルスタック AI システムです。

日付・性別・年齢・商品カテゴリ・単価を入力すると、学習済みモデルが需要数量を推論し、結果を UI に表示するとともに PostgreSQL に履歴として保存します。

単なるモデル検証ではなく、React フロントエンド、Spring Boot API Gateway、FastAPI ML Service を REST で接続したマイクロサービス構成として設計・実装しました。

ML モデルの API 化、履歴管理、入力バリデーションを含め、業務システムに AI 機能を組み込むことを意識した個人開発です。

システム構成

ARCHITECTUREClientFrontendBackendML ServiceUserBrowserReactFrontendRESTSpring BootAPI GatewayJava 21RESTFastAPIML Servicesave resultmodelPostgreSQLHistory StorageAWS S3Model Storageoptionalrequest / responseoptional

担当範囲・役割

要件整理、システム構成設計、API 設計、フロントエンド・バックエンド・ML サービスの実装、PostgreSQL 永続化、Docker Compose による開発環境構築までを一貫して担当。

加えて、README、API 仕様、アーキテクチャ図、AWS デプロイ方針などのドキュメント整備も実施しました。

工夫した点・設計判断

マイクロサービス構成による責務分離

Spring Boot と FastAPI を分離し、業務ロジックと ML 推論の責務を明確化しました。

ML モデルを API として切り出すことで、将来的なモデルの差し替えや再学習に対応しやすい構成にしています。

予測履歴の永続化と閲覧性

予測結果を PostgreSQL に保存し、検索・ページネーション付きで履歴を閲覧できるようにしました。

Spring Data JPA による履歴保存と Pageable ベースのページネーションを実装し、単なる推論 API にとどまらない業務システムらしい設計を意識しました。

バリデーション設計

入力バリデーションをフロントエンドとバックエンドの両方に配置し、UX と API 契約の堅牢性を両立しました。

技術スタック

フロントエンド

  • React
  • Vite
  • JavaScript

バックエンド

  • Java 21
  • Spring Boot 3
  • Spring Data JPA

ML サービス

  • Python 3.12
  • FastAPI
  • scikit-learn
  • pandas

データベース

  • PostgreSQL 16

インフラ / 開発環境

  • Docker
  • Docker Compose
  • AWS(S3 / ECS / RDS / ALB を想定)

技術的なポイント

  • Frontend → API Gateway → ML Service → PostgreSQL のデータフローを明確に分離

  • camelCase / snake_case の変換をフロントエンドと API 契約の間で吸収

  • Spring Data JPA による履歴保存と Pageable ベースのページネーションを実装

  • ML 成果物をローカル管理から S3 管理へ拡張できる構成を設計

  • Docker Compose により複数サービスを一括起動できる開発環境を構築

詳細な API 仕様、データフロー、起動方法、AWS デプロイ方針については、GitHub の README に整理しています。 実装全体を確認したい場合は、リポジトリをご参照ください。