VoiColle システム構成図

VoiColle(ボイコレ)は、複数サービスのアンケートを一元管理するマルチテナント型アンケートSaaSです。
このページでは、システムがどのような仕組みで動いているかをご紹介します。

  • Google Cloud Run
  • Firebase Firestore
  • Firebase Auth
  • Next.js (TypeScript)
  • AWS SES

システム概要

VoiColleは、DM・SMS配送代行システム「Ribbon System Letters(RSL)」や 「VIPデジタル会員証」をご利用のお客様に向けて、アンケートの配信・回収・集計を行うプラットフォームです。

回答者向けサイト

https://vc.rbbn.jp

ハガキのQRコードやSMSの短縮URL、会員証アプリのバナーからアクセスし、個人情報の再入力なしでアンケートに回答できます。

管理サイト

https://vcadm.rbbn.jp

運営スタッフがアンケートの作成・配信設定・回答の集計を行う管理画面です。ログイン認証で保護されています。

マルチテナント設計

1システムで複数サービスに対応

RSL・VIPデジタル会員証など、複数サービスのアンケートを1つのシステムで安全に分離して管理します。

全体構成図

図中の各ボックスを選択すると、下に詳しい説明が表示されます。 タブで「本番環境」と「ローカル開発環境」を切り替えられます。

Cloud Run(サーバーレス実行環境)

Firebase / GCP / AWS

構成図のボックスを選択すると、ここに詳しい説明が表示されます。

構成要素の役割

本番環境で使用しているサービスと役割の一覧
サービス 分類 役割
Cloud Run GCP アンケートアプリ・管理アプリのコンテナをサーバーレスで実行。アクセス量に応じて自動的に拡大・縮小します。
Firebase Firestore Firebase アンケート・回答・テナント情報などを保存するデータベースです。
Firebase Auth Firebase 管理画面へのログインなど、ユーザー認証を担当します。
Secret Manager GCP APIキーやJWTシークレットなどの機密情報を安全に保管します。
Artifact Registry GCP アプリのDockerイメージを保管するプライベートリポジトリです。
Cloud Build GCP ソースコードの更新を検知して、ビルドからデプロイまでを自動化します(CI/CD)。
AWS SES AWS PINコード通知などのメール送信を担当します。rbbn.jpドメインの既存設定を継続利用しています。

Apache・Caddy などのリバースプロキシは本番では不要です。Cloud Run が直接 HTTPS を終端し、 SSL証明書は Google が自動発行・自動更新します。

アンケート回答の流れ

RSL ハガキ・SMSから回答

  1. ハガキ印刷データ作成時に VoiColle API がアンケートURLを発行
  2. ハガキにはQRコード、SMSには短縮URLとして配信
  3. お客様がQRコード・URLからアンケートページにアクセス
  4. 会員情報が自動で紐付き、個人情報の再入力なしで回答完了

VIP デジタル会員証アプリから回答

  1. 会員証アプリのトップページにアンケートバナーを表示
  2. バナーをタップするとアンケートセッションを開始
  3. 会員情報が自動で紐付き、そのまま回答
  4. 回答済みの会員にはバナーを自動的に非表示

デプロイの仕組み(CI/CD)

ソースコードは GitHub で管理し、main ブランチへの更新を Cloud Build が自動検知して、 ダウンタイムなしで本番環境へ反映します。

  1. GitHub git push origin main
  2. Cloud Build トリガーが自動起動しDockerイメージをビルド
  3. Artifact Registry web / admin のイメージを保管
  4. Cloud Run ダウンタイムなしで新バージョンを公開

ローカル開発環境と本番環境の対応

ローカル開発環境と本番環境の対応表
用途 ローカル(Docker) 本番(GCP)
アンケートアプリ https://vc.rbbn.local https://vc.rbbn.jp
管理アプリ https://vcadm.rbbn.local https://vcadm.rbbn.jp
データベース Firebase Emulator(Firestore) Firebase Firestore(本番)
認証 Firebase Emulator(Auth) Firebase Auth(本番)
メール送信 Mailpit(ローカルで受信確認) AWS SES(SMTP経由)
リバースプロキシ Caddy 不要(Cloud RunがHTTPS終端)
機密情報 .env.local Secret Manager