気づいたら払い続けていたサブスクを、 全部見えるところに集める個人向けサブスクリプション管理アプリ。 Google Cloud をフル活用した本番運用構成です。
Netflix、Spotify、Amazon Prime、ChatGPT Plus、Notion、iCloud—— 気づくと10件、20件と積み重なるサブスクリプション。 クレカ明細を見るまで思い出せず、解約するタイミングを逃したまま、 毎月静かに引き落とされていく状況を変えたかったのが出発点です。
SubMaは、サブスクをすべて1つのダッシュボードにまとめます。 手動で登録するだけでなく、クレジットカードのCSV明細をアップロードすると、 AIが「これはサブスクっぽい」と判定して候補を提案。 月額・年額の合計、カテゴリ別の内訳、引落日カレンダーを一目で確認できます。
SubMaは「個人プロダクトとしての規模感」と「本番運用相当のインフラ品質」を両立させた構成です。 Cloud Run / Cloud SQL / Firestore / Cloud Tasks / Secret Manager / Cloud Storage / Cloud Scheduler を組み合わせ、 すべての構成情報を Terraform で IaC 化。GitHub Actions と Workload Identity Federation 経由で キーレス自動デプロイを実現しています。
CSVアップロード時のサブスク抽出は、コストとレイテンシを抑えるために三層のパイプラインを通します。 まず正規表現ベースの規則マッチでよく知られたサービス名(Netflix、Spotify等)を即時判定。 次に過去の取引データから「同店名・同金額の定期出現」をパターン検出。 最後に残った曖昧な取引だけを Claude API に投げて判定します。
この設計により、API コール数を最小限に抑えつつ、未知のサービスや表記揺れにも対応できる仕組みになっています。 Claude API に送る前には PII(個人情報)をマスキング処理し、CSV ファイル自体は処理後に Cloud Storage から自動削除されるよう Lifecycle Rule を設定しています。
このプロジェクトでは Claude Code を「ペアエンジニア」として位置付け、 要件の整理・設計案の比較検討・実装・コードレビュー・運用トラブルシュートまでを 通して協働しました。AI が提示する複数の選択肢を評価し、自分のプロダクトに 合うかを判断する責任は最後まで自分で持つことを意識しています。