FlushTune
「Flashbackを音楽でFlushする」 をテーマに、ユーザーが思い出した出来事・感情を分析し、音楽の提案を行うプロダクトです。
- ユーザーがふと思い出した嫌な出来事(フラッシュバック)を入力すると、FlushTuneが心理状態にマッチした楽曲を提案
- 心の落ち着きを支援
- 今までのフラッシュバックの履歴を分析・可視化
- ユーザーが自身のストレス状態を振り返り、心の不安定さの改善のきっかけに
- ストレスが溜まりやすい方
- ストレスの溜まりやすい環境にいる方
- 普段音楽でストレスを解消している方
- 出来事や感情を言語化し、心を落ち着けるためのアドバイスをもらいたい方
- FlushTuneにSpotifyアカウントでログインする
- ユーザーが出来事(フラッシュバック)や感情を入力
- LLMがユーザーの感情を分析
- 感情分析に基づき、Spotify上の楽曲を複数提案
- ユーザーは楽曲を聴くことで、ストレスを和らげる
- Spotify上の自身のプレイリストに楽曲を保存することも可能
- 過去の入力に基づく感情の記録を表示
- ローカルLLMの活用
- 主な用途
- ユーザーの入力から感情を分析
- 提案する楽曲のテーマを選定
- Spotify APIと連携し、実際に聴ける楽曲として提案
- フラッシュバックした出来事や感情から、ストレスを和らげるアドバイスを提示
- ローカルLLMにより、人に知られたくない情報が流出しない
- プライバシーの保護を実現
- 主な用途
- 手軽な使い勝手を意識
- フラッシュバックした出来事を忘れないうちに入力できるよう、シンプルなUIに
- PWA (Progressive Web Application) を採用し、端末にインストール可能に
- 明るすぎない・鮮やかすぎない見た目
- フラッシュバックの多い夜の時間に、眠気を阻害しない
- LLM開発
- バックエンド開発
- プロダクトのコンセプト提案
- フロントエンド開発
- システムの全体構成策定・技術選定
- バックエンド開発
- 記録の可視化
- 複雑系コースならではの各メンバーの高い専門性を考慮し、それぞれの役割に注力できるよう工夫
- Webフロントエンドの自動デプロイ
- 正しくビルドできるかを確認
- 見た目や画面遷移を全員で共有できるように
- Discord中心の情報共有
- ソースを見失わないために、意図的にDiscordに情報を集積させる
- 開発に役立つ・役立ちそうな知識を共有 (#knowledge)
- 技術に関する知識
- トラブルシューティング記事
- 方向性の似た既存のプロダクトの事例
- GitHubのWebhookでコードの更新を自動キャッチアップ (#github-notify)
- 重要な情報や他ツールへのリンク (#url置き場-保存用)
- 手書きの全体構成図やプロダクト概要を添付
- FigJam
- アイデアのブレインストーミング
- Github Projectsを必要な場面で適宜利用し、issueを整理
- 対面での共同作業時間を明確に確保
-
フレームワーク:LangChain
- LLMの出力を効率的に管理
- Pythonのデータバリデーションライブラリ Pydantic と連携
- 入力データの型や内容の厳密なバリデーションをLLMに強制
- LLMの出力を構造化
- 後続の処理にシームレスに渡している
-
モデル:Llama-3-ELYZA-JP-8B-GGUF ライセンス:META LLAMA 3 COMMUNITY LICENSE AGREEMENT
- ELYZA, Inc. による80億パラメータの日本語特化LLM
- Meta社によるLLMモデル Meta-Llama-3-8B-Instructsを日本語での使用向けにチューニングしたモデル
- 4bit量子化
- 計算資源が限られた環境でも効率よく動作
- ベンチマークELYZA-tasks-100 GPT4 scoreにおいて量子化前からの性能劣化が小さい
AI分野のスタンダードであるPythonを軸とした技術選定です。
- 現代的なツールの導入
- 特に、パッケージマネージャ Rye・静的型チェッカー Pyright
- パッケージ管理や実行の安全性といった、Python特有の問題点に対処
- 一般的な静的型付け言語と変わらない開発効率へ
- 共通のVSCodeの設定と拡張機能を、事前に個別の環境に導入
- 自動の型チェックやフォーマットを、齟齬なく行えるように
- CI/CDの構築も不要に
- Python3
- (SQL)
- FastAPI
- swaggerUI生成機能により、実装と差異のないドキュメント・テスト環境を整備
- SQLite
- RDBMS
- Rye
- パッケージ・仮想環境管理
- Pytest
- 動的解析
- Pydantic
- データバリデーション
- Pylance (VSCode拡張)
- linter
- Pyright
- 型チェック
- Ruff (VSCode拡張)
- フォーマッタ
- formatOnSaveを有効化
動きのあるUIや視覚効果に特化した技術選定です。またPWA (Progressive Web Application) を採用し、PC・モバイルの双方でネイティブアプリケーションに近い使用感を実現しています。
PWA・UIのアニメーション・描画APIといった制約の多い開発要件から、純粋なTypeScriptでのWeb開発に近い、必要最小限のツール構成を意識しています。
- TypeScript
- Svelte
- UI構築ライブラリ
- UIのアニメーションや描画APIとの親和性から採用
- ルーティング不要のため、SvelteKitは不使用
- UnoCSS
- Utility-first CSS
- Tailwind CSS (PostCSSに依存) の代替として導入
- アイコンプリセット機能も活用
- Three.js
- 描画ライブラリ
- 記録の可視化に使う予定であったが、Svelte+UnoCSSで十分であったため、最終的にはロゴ描画のみに使用
- Vite
- ビルドツール
- Vite PWA
- PWA導入のためのVite Plugin
- OAuth (Spotify)