AI口コミ促進アプリ 開発プラン

社内システム開発検討ドキュメント(参考:クチラク / kuchiraku.cantere.co.jp)

DEVELOPMENT PLAN DOCUMENT

AI口コミ促進アプリを社内システムとして開発する場合の開発プラン検討書

「クチラク」(キャンター合同会社提供)のLPを参考に、同様のコンセプト=「来店客のアンケート回答からAIがGoogle口コミの下書きを自動生成し、QRコード1枚で運用できる口コミ促進アプリ」を、社外への販売を目的としない社内システムとして開発する場合に必要な検討事項を整理しました。外部課金は発生させず、自社が運営する各院(拠点)ごとに個別のログインアカウントを発行し、院単位でデータを分離管理する前提で、要件・機能・システム構成・データ設計・AI設計・法務リスク・開発工程・コスト感を検討しています。

Webアプリ(PWA) 生成AI活用 QRコード運用 複数院・個別ログイン 社内無償システム
本プランに基づくモックアプリを見る

01 対象サービスの概要整理

LPの構造化データ(schema.org)およびOGP画像から読み取れる、対象サービスの提供価値・機能と、社内システム化にあたっての運用条件の整理

提供価値(コアバリュー)

  • 来店客がQRコードを読み取り、60秒程度の簡易アンケートに回答
  • AIが回答内容(評価・タグ)からGoogle口コミの下書き文面を自動生成
  • 来店客は生成文面をコピーし、Google口コミ投稿ページへワンタップ遷移して投稿
  • 店舗側は初期費用ゼロ・QRコード設置のみで運用開始でき、複数店舗も一元管理できる

LP記載の主要機能(featureList)

AI口コミ下書き自動生成 タグ別深掘りアンケート QRコード生成 Google口コミページ直リンク 複数店舗一元管理 分析ダッシュボード Googleガイドライン準拠

対象業種イメージ:歯科クリニック・動物病院・飲食店など、Google検索/マップ経由の集客比重が高い小規模店舗

参考LP(外部販売SaaS)と自社版(社内システム)の違い

観点 参考LP(クチラク) 自社版(本プラン)
利用対象 社外の任意の店舗・施設(他社への販売) 自社が運営する各院(拠点)のみ
料金 Lite ¥3,000/Standard ¥4,500(月額課金) 課金なし(社内システムとして無償提供)
アカウント管理 契約店舗ごとにセルフサインアップ 本部(情報システム部門等)が各院ごとに個別アカウントを発行
決済機能 クレジットカード決済(Stripe等)が必要 不要(決済・プラン管理機能は開発対象外)

※本プランでは課金・決済に関わる機能一式(プラン管理、請求、決済代行連携等)を開発スコープから除外し、その分のコスト・工数を各院への展開・権限管理・セキュリティ強化に充当する方針とします。

02 自社開発の方針

同一サービスの模倣ではなく「同種のコンセプトを、自社の顧客基盤・強みに合わせて再設計する」方針とする

独自ブランド・社内呼称として企画

「クチラク」という名称・デザイン・商標は他社サービスであるため、機能コンセプトを参考にしつつ、名称・UI・ロゴは完全に独自の社内システムとして新規設計する。

MVPから段階リリース

まず1院でAI下書き生成〜QR運用まで動く最小構成を作り、複数院展開・分析機能は後続フェーズで拡張する。

ガイドライン準拠を設計に内在化

Googleの口コミポリシーおよび景品表示法(ステマ規制)への抵触リスクを、後付けではなく機能設計段階から織り込む(詳細は8章・12章)。

課金機能は開発せず、院別ログインに投資

プラン管理・決済連携は開発スコープから外し、各院ごとの個別アカウント発行・権限管理・データ分離の設計に開発リソースを重点配分する。

03 機能要件一覧

利用者を「エンドユーザー(来店客・患者等)」「各院担当者(院ごとの個別ログイン)」「本部管理者(全院横断管理)」の3種に分け、それぞれの機能を整理

A. エンドユーザー(来店客)向け機能
  • QRコード読み取り→アプリDL/会員登録不要でアンケートページに直接アクセス
  • 星評価+タグ選択(例:接客・清潔感・味・待ち時間 等)による簡易回答(30〜60秒目安)
  • 任意の自由記述欄
  • 回答内容をもとにAIが口コミ下書き文を複数パターン生成し提示
  • 文面を自由に編集した上でコピーし、Google口コミ投稿画面へ遷移(投稿操作自体は本人がGoogle上で行う)
  • 低評価回答時は口コミ投稿への誘導を行わず、店舗宛の非公開フィードバックフォームに切り替え
B. 各院担当者向け機能(院ごとの個別ログイン)
  • 院ごとに発行された個別アカウントでログイン(院ID+パスワード、または社内SSO連携)
  • ログイン後は自院のデータのみ閲覧可能(他院のデータは権限上参照不可)
  • 院プロフィール設定(院名、診療科目・業種、Google Business Profileの口コミ投稿URL登録)
  • アンケート設問設計(標準テンプレート+業種別タグ、必要に応じ院独自のカスタム設問)
  • QRコード発行・ダウンロード(受付・診察室など設置場所別に複数発行)
  • 自院の回答一覧・AI生成文のログ閲覧
  • 自院の分析ダッシュボード(回答数推移、平均評価、タグ別傾向、口コミ遷移率)
  • CSVエクスポート、院ロゴ・カラーの表示カスタマイズ
  • パスワード再設定・院内スタッフへの利用案内資材ダウンロード
C. 本部管理者向け機能(全院横断管理)
  • 院マスタ管理(新規院の登録、院ごとの個別アカウント発行・停止・パスワードリセット)
  • 全院横断の利用状況モニタリング(院ごとの回答数・口コミ転換率の比較、未活用院の把握)
  • サポート対応用の代理ログイン(各院担当者からの問い合わせ対応)
  • AI API利用量・コストモニタリング、レートリミット管理(全院合算の予算管理)
  • 不適切コンテンツ(誹謗中傷・虚偽記載の疑いなど)の監視・通報対応

04 利用者フロー

来店客がQRコードを読み取ってから口コミ投稿に至るまでの体験設計

flowchart LR A["来店客がQRコードを\nスマホで読み取る"] --> B["アンケートページ表示\n(ログイン不要)"] B --> C["星評価+タグ選択\n(60秒程度)"] C --> D{"評価スコアで分岐"} D -->|"高評価"| E["AIが口コミ下書きを\n複数パターン生成"] D -->|"低評価"| F["店舗宛の非公開\nフィードバックフォームへ"] E --> G["来店客が文面を確認・編集"] G --> H["コピーしてGoogle口コミ\n投稿ページへ遷移"] H --> I["来店客自身がGoogle上で投稿"] F --> J["店舗管理者に通知・改善対応"] I --> K["店舗ダッシュボードに\n回答データを反映"] J --> K

※ポイントは「投稿ボタンを自動で押す」のではなく、必ず本人が内容を確認・編集し、Google上で自らの意思で投稿する設計にすること(Googleガイドライン・法令対応上の必須要件。詳細は8章・12章)。

05 システム構成(アーキテクチャ案)

静的コンテンツ配信+API+LLM連携を組み合わせた、院ごとの個別ログイン・データ分離を前提とする社内システム構成(決済機能は含まない)

graph TD subgraph Client["クライアント"] U1["来店客ブラウザ\n(アンケート画面/PWA)"] U2["各院担当者・本部管理者\nブラウザ(管理画面SPA)"] end subgraph Frontend["フロントエンド配信"] FE["Next.js アプリ\n(Vercel/CDN配信)"] end subgraph Backend["バックエンドAPI"] API["APIサーバー\n(Node.js/NestJS or FastAPI)"] AUTH["認証基盤\n(院ごとの個別ログイン/社内SSO)"] QR["QRコード生成モジュール"] JOB["非同期ジョブ\n(集計/通知バッチ)"] end subgraph Data["データストア"] DB[("PostgreSQL\nマルチテナント設計")] CACHE[("Redis\nセッション/レート制御")] STORE[("オブジェクトストレージ\nロゴ・QR画像")] end subgraph External["外部サービス連携"] LLM["LLM API\n(OpenAI/Gemini/Claude)"] MAIL["メール配信\n(アカウント発行/通知)"] GBP["Google口コミ投稿ページ\n(直リンクのみ・API投稿は行わない)"] end U1 --> FE U2 --> FE FE --> API API --> AUTH API --> DB API --> CACHE API --> QR QR --> STORE API --> LLM API --> MAIL API --> JOB FE -->|"文面コピー後に遷移"| GBP
Google口コミへの「投稿」自体はGoogle Business Profile上でユーザー本人が行う必要があり、投稿を自動化するAPIは提供されていません。本システムの役割は「下書き生成と導線提供」に限定されます。
院ごとに個別ログインアカウントを発行し、store_id(院ID)単位でデータを論理分離します。ログインしたアカウントの院IDに紐づくデータのみ閲覧可能とし、Row Level Security等でアプリ層に加えDB層でもアクセス制御を行うことを推奨します。

06 データモデル設計(主要テーブル)

RESTful Table APIまたはPostgreSQLを想定した論理設計イメージ(課金関連の項目は持たず、院ごとのログイン・権限制御に必要な項目を中心に設計)

organizations(自社/運営主体)

id組織ID(原則自社のみの1レコード)
name組織名(法人名)
admin_contact本部管理者の連絡先

stores(院・拠点)

id院ID
organization_id所属組織(自社)
name / category院名/診療科目・業種
google_review_urlGoogle口コミ投稿直リンク
is_active院の稼働状況(新設・休止等)
brand_color / logo_url院ロゴ・カラー表示用(任意)

users(院ごとの個別ログインアカウント)

idユーザーID
organization_id所属組織(自社)
store_id紐づく院ID(本部管理者はnull=全院参照可)
email / roleログインメール/権限(hq_admin・store_staff)
last_login_at最終ログイン日時(利用状況把握用)

qrcodes(QRコード)

idQR ID
store_id紐づく院
label設置場所ラベル(卓番等)
survey_id誘導先アンケート
scan_countスキャン数(分析用)

surveys / survey_questions

survey.idアンケートID
survey.store_id対象院
question.type星評価/タグ選択/自由記述
question.tag_options選択肢タグ一覧

survey_responses / review_drafts

response.id回答ID
response.rating星評価
response.selected_tags選択タグ(配列)
draft.generated_text[]AI生成文面(複数案)
draft.was_copiedコピー実行有無(転換率算出用)

※本人特定につながる氏名・連絡先は「口コミ生成」用途では原則取得しない設計を推奨(個人情報保護の観点、および回答ハードルを下げる観点の両方から)。※課金・プラン管理に関するテーブル(サブスクリプション、請求情報等)は本システムでは不要なため設計対象外です。

07 AI(生成)設計

本サービスの中核となる「回答→口コミ下書き生成」ロジックの設計方針

入出力設計

  • 入力:星評価、選択タグ(複数可)、任意の自由記述、店舗の業種情報
  • 出力:トーン違いの下書き文を2〜3パターン生成(丁寧調/親しみやすい調 等)
  • 文字数は実際のGoogle口コミの平均的な長さ(100〜250字程度)に最適化
  • 生成結果はその場で編集可能なテキストエリアに表示し、そのままコピー

プロンプト設計上のガードレール

  • 回答者が選択・入力した事実の範囲内でのみ生成し、事実にない体験を創作させない
  • 医療・健康効果等の断定的表現、誇大表現を禁止するルールをシステムプロンプトに組込み
  • 差別的表現・個人名・第三者の誹謗中傷につながる語句をフィルタ
  • 「必ずこの文章のまま投稿してください」等、誘導・強制を示唆する文言をUI・生成文双方に含めない

生成処理シーケンス

sequenceDiagram participant C as 来店客 participant FE as フロントエンド participant API as APIサーバー participant LLM as LLM API participant DB as データベース C->>FE: 星評価・タグ・自由記述を送信 FE->>API: POST /survey-responses API->>DB: 回答データを保存 API->>API: モデレーション用フィルタ処理 API->>LLM: プロンプト(回答内容+ガードレール)送信 LLM-->>API: 下書き文候補(2〜3案) API->>API: 禁止表現の再チェック API->>DB: 生成結果を保存 API-->>FE: 下書き文候補を返却 FE-->>C: 候補を表示(編集・コピー可能)
system: あなたは店舗の口コミ下書き作成を支援するアシスタントです。
制約:
- ユーザーが入力・選択した情報の範囲内でのみ文章を作成すること
- 事実として述べられていない体験や効果を創作しないこと
- 差別的表現、個人を特定する情報、誹謗中傷を含めないこと
- 断定的な効果効能の表現(治った、必ず良くなる 等)は使用しないこと
- 100〜250文字程度、自然な一人称の口コミ文体で3パターン生成すること
- 投稿を強制・誘導するような文言は一切含めないこと

08 非機能要件・法務対応

この種のサービスで特に重要になる、法令・プラットフォームポリシー対応の要件

景品表示法(ステマ規制)

2023年施行の指定告示により「事業者が第三者に依頼して口コミを投稿させる行為」で表示であることを隠すものは規制対象。本サービスは「来店客自身の体験に基づく投稿を支援する」設計に徹し、金銭的インセンティブと引き換えに投稿を依頼する運用は避ける必要がある。

Googleの口コミに関するポリシー

「やらせ・誘導コンテンツ」「見返り提供によるレビュー依頼」を禁止。低評価者を意図的に投稿から除外する設計(本設計の分岐フロー)は業界で一般的だが、レビュー内容の改ざん・自動投稿は厳禁。必ず本人の確認・編集・実投稿を挟む。

個人情報保護

氏名・連絡先等の直接識別情報は原則取得しない設計を基本とする。取得する場合は個人情報保護法に基づくプライバシーポリシー整備、利用目的の明示、安全管理措置(暗号化・アクセス制御)が必要。

可用性・性能

QRスキャンからアンケート画面表示まで3秒以内を目標。LLM応答は数秒かかるため、ローディングUI・タイムアウト時のフォールバック文面を用意する。

セキュリティ

通信のTLS化、社内ネットワーク(VPN/IP制限)からのみ管理画面へアクセス可能とする構成の検討、管理画面へのアクセスログ記録。決済情報を扱わないため、カード情報の保持・PCI DSS対応は不要。

院間データ分離・アクセス制御

院ごとの個別ログインアカウントにstore_id(院ID)を紐づけ、自院以外のデータには一切アクセスできないよう認可制御を行う。本部管理者のみ全院横断の閲覧権限を持つロール設計とする。

アクセシビリティ/端末対応

来店客側画面はスマートフォンでのタップ操作を前提としたレスポンシブ・大きめタップ領域のUI。高齢層利用も想定し文字サイズ・コントラストに配慮。

09 技術スタック案

課金機能を持たない社内システムとして、早期リリース・低運用コストを重視した構成例

レイヤー 候補技術 採用理由
フロントエンド Next.js(React)+ TypeScript + Tailwind CSS SEO対応・表示速度・開発効率のバランスが良く、SPA/SSR/PWA構成に対応しやすい
バックエンドAPI Node.js(NestJS) または Python(FastAPI) LLM APIとの連携ライブラリが豊富。型安全なAPI設計が可能
データベース PostgreSQL(Supabase等のマネージドサービス活用可) リレーショナルなマルチテナント設計に適し、Row Level Securityも利用可能
認証 Supabase Auth / Auth0 / Firebase Auth(または社内SSO連携) 院ごとの個別アカウント発行・失効を管理しやすく、自前実装よりセキュリティリスクを低減
生成AI OpenAI GPT系 / Google Gemini / Anthropic Claude(比較検討) 日本語自然文生成の品質とAPIコストで比較し、複数プロバイダの併用も検討
QRコード生成 qrcodeライブラリ等によるサーバー/クライアント内製生成 外部APIに依存せずコストゼロで生成・カスタマイズ可能
分析ダッシュボード Chart.js(自前実装) 回答数推移・タグ別集計など基本分析を軽量に実装可能
インフラ/ホスティング Vercel(フロント)+ AWS/GCP(API・DB) スケーラビリティと運用のしやすさを両立

10 開発工程・マイルストーン(目安)

要件精査後に確定させる想定のたたき台スケジュール(決済機能の開発が不要なため、その分の工数を院展開・権限管理に充当。全体でおよそ5〜7ヶ月)

gantt title 開発スケジュール(案) dateFormat YYYY-MM-DD axisFormat %m月 section Phase0 企画/要件定義 要件定義・法務確認 :a1, 2026-08-01, 30d UI/UXデザイン :a2, after a1, 20d section Phase1 MVP開発 アンケート回答〜AI生成 :b1, after a2, 40d QRコード発行機能 :b2, after a2, 20d 1院での管理画面 :b3, after b1, 20d section Phase2 拡張機能 分析ダッシュボード :c1, after b3, 25d 院ごとの個別ログイン基盤 :c2, after b3, 25d section Phase3 全院展開準備 院マスタ・アカウント管理 :d1, after c1, 20d 権限設計・院間データ分離検証 :d2, after c2, 15d section Phase4 検証/リリース ベータ運用・改善 :e1, after d1, 25d 全院展開 :milestone, after e1, 0d

Phase 0(約1.5ヶ月)

要件定義・法務確認・UI設計。ここで社内システムとしての名称、対象となる院の範囲、展開スケジュールを確定。

Phase 1(約2ヶ月)

MVP開発。1院でQR→アンケート→AI生成→Google遷移までの一気通貫フローを実装。

Phase 2(約1.5ヶ月)

分析ダッシュボードと、院ごとの個別ログイン・データ分離の基盤を実装。

Phase 3-4(約1.5ヶ月)

院マスタ・アカウント発行フローを整備し、少数院でのベータ運用を経て全院展開。

11 開発体制・概算コスト(社内投資)

本システムは課金を行わないため、開発・運用コストはすべて自社(本部)負担の投資となる。あくまで規模感を掴むための目安であり、実際の金額は要件確定後の見積もりで確定させる

想定チーム体制

  • プロダクトマネージャー:1名(要件整理・優先度管理)
  • UI/UXデザイナー:1名
  • フロントエンドエンジニア:1〜2名
  • バックエンドエンジニア:1〜2名(AI連携含む)
  • QA/テスター:1名(フェーズにより兼任可)

概算開発費用レンジ(目安)

MVP(Phase 0-1)約 250万〜500万円
全院展開込みフル版(Phase 2-4)約 600万〜1,200万円
月額ランニングコスト約 3万〜15万円(対象院数・回答数により変動)

※決済・プラン管理機能を開発対象外としたことで、参考LP同等のフル機能版と比べコスト・工数を抑制できる見込み。外部委託か内製か、既存基盤の流用有無によっても大きく変動するため、参考値として利用してください。

ランニングコスト内訳イメージ(決済手数料は発生しない想定)

12 リスク・留意点

開発着手前に経営判断として整理しておくべき論点

口コミ誘導の適法性・プラットフォームポリシー遵守

「AIが口コミを代筆する」設計自体が、運用次第ではGoogleポリシー違反や景品表示法上の懸念を招く可能性がある。必ず「本人の実体験に基づく下書き支援」「投稿は本人の自発的意思」という建付けを崩さない機能・UI・利用規約設計にすること。導入前に弁護士等への確認を推奨。

商標・意匠との抵触回避

「クチラク」は既存事業者(キャンター合同会社)の商標・サービスであるため、社内システムであっても名称・ロゴ・UIデザインをそのまま使用することはできない。機能コンセプトのみを参考にし、名称・デザインは独自に企画する。

生成AIの品質・コスト変動リスク

LLM APIの料金改定・モデル廃止に対応できるよう、特定ベンダーに強く依存しない抽象化レイヤーを設計しておく。生成文の品質担保のため、人手によるレビュー・フィードバックループも用意する。

院ごとのアカウント発行・運用定着化の負荷

院数が増えるほど、アカウントの発行・失効(異動・退職対応含む)や各院への利用定着の働きかけが本部側の運用負荷になる。院展開のロールアウト計画と、問い合わせ窓口・マニュアル整備をセットで用意する必要がある。

医療・診療関連情報を扱う場合の取り扱い厳格化

対象が医療機関(院)の場合、アンケート回答が症状・通院目的等の要配慮個人情報に触れる可能性がある。取得項目を必要最小限にし、症状等の医療情報は取得しない設問設計とするなど、通常の口コミサービス以上に慎重な設計が求められる。

13 次のアクション(提案)

  1. 1対象となる院の範囲(全院/一部院から開始)と展開スケジュールを明確化する
  2. 2景品表示法・Googleポリシーの適法性、および医療情報の取り扱いについて、弁護士や専門家に一次確認を取る
  3. 3本ドキュメントの機能要件を基に、詳細な画面設計(ワイヤーフレーム)と院ごとのアカウント発行フローを作成する
  4. 4LLM APIプロバイダを選定し、プロンプトのプロトタイプ検証(PoC)を行う
  5. 5MVPスコープを確定し、社内予算承認を得た上で開発会社または内製チームへの見積もり依頼を行う

14 本番移行ロードマップ・優先順位

現在のモック(静的サイト+Table API+localStorage認証+擬似AI生成)を本番の社内システムへ移行するにあたり、着手すべき項目を優先度3段階に整理し、それぞれの技術要件・実装方針・想定工数の目安をまとめました。🔴必須はリリース前に必ず対応が必要な項目、🟡重要はリリース前後で対応すべき項目、🟢中長期は運用が安定した後に段階的に強化する項目です。

🔴 必須(Phase 1)

4項目

本番公開の前提条件。ここが未対応のままの一般公開は情報漏えい・法的リスクが高く推奨しない。

🟡 重要(Phase 2)

3項目

全院展開の前後で対応。Phase1と並行着手も可能だが、展開院数が増える前に完了させたい。

🟢 中長期(Phase 3)

3項目

運用開始後、データが蓄積してから段階的に投資すればよい項目。初期リリースのブロッカーにはしない。

着手順序イメージ(マイルストーンは目安であり、体制・予算により前後します)

gantt dateFormat YYYY-MM-DD axisFormat %m/%d title 本番移行ロードマップ(目安) section Phase1 必須 認証基盤刷新(各院ログイン) :a1, 2026-08-01, 20d DB側アクセス制御(RLS)設計・実装 :a2, after a1, 15d LLM API連携(サーバーサイド化) :a3, 2026-08-01, 25d 個人情報・ログ取り扱い整備 :a4, after a2, 10d section Phase2 重要 Googleポリシー・景品表示法レビュー :b1, 2026-08-01, 30d QRコード物理印刷運用整備 :b2, after a4, 10d 院別Google口コミURL整備(残10院) :b3, 2026-08-01, 10d section Phase3 中長期 サーバーサイド永続化・バックアップ :c1, after a2, 15d 監視体制構築(エラー/稼働監視) :c2, after a1, 10d 分析機能さらなる強化 :c3, after b2, 30d

※LLM API連携・認証基盤刷新は本番リリースのコア部分であり、最初に並行着手することを推奨します。法務レビューは結果待ちで開発がブロックされないよう、できるだけ早期に相談を開始してください。

Phase 1:🔴 必須(本番リリースの前提条件)

① 認証基盤の刷新

想定工数:2〜3週間

✅ 対応済み:Supabase Auth(Email/Password)への移行が完了しました。ログインIDはメールアドレス形式に変換して認証し、パスワードはSupabase側でハッシュ化・安全に管理されます。Row Level Security(RLS)による院ごとのデータアクセス制御も導入済みです。詳細はREADME.mdの「Supabase移行(進行中)」セクション、およびsupabase/schema.sqlを参照してください。

技術要件・実装方針

  • Supabase Auth / Firebase Authentication / Auth0 等の認証SaaSを採用(自前でパスワードハッシュ管理を実装しない)
  • 院(store)ごとにアカウントを発行し、ロール(本部管理者 / 院スタッフ)を持たせたRBAC設計
  • パスワードリセット・初回パスワード変更強制・セッション有効期限(例:8時間)・多要素認証(本部アカウントのみ推奨)
  • 本部ダッシュボード(hq-dashboard.html)と院管理画面(store-dashboard.html)でアクセス権限を分離

対応すべき理由・リスク

localStorageは端末に平文で残り、開発者ツールから誰でも閲覧・改ざん可能。院IDを差し替えれば他院データにアクセスできてしまうため、実データを扱う前に必ず刷新が必要。

② DB側アクセス制御(Row Level Security)

想定工数:2週間

現状:Table APIはプロジェクト単位のフラットなテーブルであり、フロントのJSがstore_idで絞り込んでいるだけ。API自体は他院のレコードも取得・更新できてしまう「アプリ側だけの論理分離」。

技術要件・実装方針

  • PostgreSQL(Supabase等)に移行し、RLS(Row Level Security)ポリシーで「自院のstore_idの行しか読み書きできない」制約をDB側で強制
  • 認証基盤のJWTに含まれるstore_id/ロールクレームとRLSポリシーを連携
  • 本部ロールのみ全院横断参照を許可するポリシーを別途定義
  • API呼び出しはサーバーサイド(Edge Function)経由に統一し、フロントから直接書き込み権限を持たせすぎない設計に

対応すべき理由・リスク

アプリ側のフィルタだけでは、API URLを直接叩かれた場合に他院の口コミ回答・タグ設定などが閲覧・改ざんされるリスクがある。実データ(顧客の回答内容)を扱う以上、DB側での強制分離は必須。

③ LLM API連携(サーバーサイド化)

想定工数:3〜4週間

現状:js/ai-mock.jsによる疑似乱数(xorshift32)を使った文章生成。本物のLLMは呼んでおらず、辞書ベースの言い回しパターンを組み合わせているのみ。

技術要件・実装方針

  • OpenAI API / Google Gemini API / Anthropic Claude API等から選定(コスト・日本語品質・レイテンシで比較検討)
  • APIキーはフロントに絶対に埋め込まないため、Supabase Edge Function / Cloudflare Workers等のサーバーレス関数を1つ用意し、フロントはそこにPOSTするだけの構成に変更
  • プロンプトには評価点・選択タグ・自由記述・院名のみを渡し、症状等の医療情報は渡さない設計を徹底
  • 生成結果の文字数・NGワード(誹謗中傷、医療効能を断定する表現等)を簡易フィルタリングするガードレイヤーを追加
  • API障害時は現行の疑似生成ロジック(ai-mock.js)にフォールバックできるようにしておくと可用性が高い

対応すべき理由・リスク

「AIによる下書き生成」がこのサービスの中核価値であり、擬似生成のままでは文章のバリエーション・自然さに限界がある。一方でAPIキーを静的サイトに直書きすると即座に不正利用されるため、必ずサーバー経由の構成にする必要がある。

④ 個人情報・ログ取り扱い整備

想定工数:1〜2週間

現状:モックのためプライバシーポリシー表示・同意取得・ログ保持ポリシーは未整備。

技術要件・実装方針

  • アンケート画面にプライバシーポリシーへのリンクと、送信前の同意チェック(任意項目である旨も明記)を追加
  • 通信は全ページHTTPS化(ホスティングサービス側で標準対応されることが多いが要確認)
  • 回答データ・アクセスログの保持期間(例:24ヶ月)を定め、期限超過分を自動削除するバッチ処理を用意
  • 症状・既往歴等の要配慮個人情報は設問に含めない(既に自由記述はあるため、注意文言+簡易NGワード検知を追加)

対応すべき理由・リスク

実在の顧客(飼い主)情報を扱う以上、個人情報保護法・社内規程への準拠は必須。特に動物病院は診療内容に触れる自由記述が集まりやすく、要配慮情報の混入対策が重要。

Phase 2:🟡 重要(展開前後で対応)

⑤ Googleポリシー・景品表示法レビュー

想定工数:外部依頼含め3〜4週間

現状:チャット上の検討のみで、専門家レビューは未実施。

技術要件・実装方針

  • 顧問弁護士 or 法務担当に「AI下書き支援+任意投稿」の建付けで確認を依頼(社内システムのため景品提供は無しの想定を明記)
  • Googleのレビューガイドライン(やらせ・虚偽レビューの禁止、投稿の自発性)への抵触有無を確認
  • 結果を踏まえ、アンケート画面・印刷ポスターの文言(「AIが作成した文章はあくまで下書きです。投稿するかどうか、内容を編集するかは自由です」等)を最終調整

対応すべき理由・リスク

法務レビューは結果が出るまで時間がかかるため、Phase1と並行して早期に着手すべき。レビューの結果次第でUI文言修正が発生する可能性がある。

⑥ QRコード物理印刷・院内運用の整備

想定工数:1〜2週間

現状:A4ポスター印刷ページ(qr-print.html)は完成済み。各院への配布・掲示ルールは未整備。

技術要件・実装方針

  • 院ごとの掲示場所(レジ横・待合室等)のガイドラインを作成し、簡易マニュアルをPDF化
  • ラミネート加工や卓上スタンド設置など、物理的な運用方法を本部側で標準化
  • QRコードの読み取り動線(アンケート画面URL)の有効期限・更新運用(院閉鎖・移転時の差し替えフロー)を決めておく

対応すべき理由・リスク

機能自体は完成しているが、実際に院スタッフが迷わず印刷・掲示できないと利用が定着しない。展開院数が増える前にルール化しておくと後の問い合わせ対応コストを抑えられる。

⑦ 各院Google口コミURLの整備(残り10院)

想定工数:数日〜1週間

現状:38院中28院はスプレッドシートの情報をもとに登録済み。残り10院は未登録(Google口コミへの自動遷移が機能しない状態)。

技術要件・実装方針

  • 各院のGoogleビジネスプロフィールから「クチコミを書く」の短縮URL(https://g.page/r/.../review)を本部側で収集
  • 各院の院管理画面(store-dashboard.html)から院自身でも登録・修正できる導線は実装済みのため、未登録院への入力依頼を並行して進める
  • 収集後はTable APIでstores.google_review_urlへ一括登録

対応すべき理由・リスク

URL未登録の院では「コピー後にGoogle口コミページへ自動遷移する」体験が提供できず、機能の一部が使えないまま展開されてしまう。全院展開前に完了させたい。

Phase 3:🟢 中長期(運用安定後に強化)

⑧ 分析機能さらなる強化

想定工数:継続的(1ヶ月〜)

現状:本部ダッシュボードに期間フィルター・低評価アラート・院別集計を実装済み。

技術要件・実装方針

  • 自由記述テキストへの感情分析・頻出キーワード抽出(LLM APIまたは形態素解析ライブラリを活用)
  • 院別・タグ別のトレンド推移(週次・月次)を可視化するレポート機能
  • 低評価アラートのメール/チャット通知(Slack Webhook等、CORS対応かつ認証不要なWebhookに限定)

対応すべき理由・リスク

初期リリース時点ではデータ量が少なく分析価値が限定的。運用開始後にデータが蓄積してから投資対効果を見て強化するのが効率的。

⑨ サーバーサイド永続化・バックアップ体制

想定工数:1〜2週間

現状:Table API(モック環境の行データベース)にデータを保持。本番グレードのバックアップ・障害復旧計画は未整備。

技術要件・実装方針

  • Supabase / Firebase 等マネージドDBへの本移行(Phase1のRLS実装と合わせて実施すると効率的)
  • 自動日次バックアップ・Point-in-Time Recoveryの設定
  • 障害復旧手順(RTO/RPOの目標値設定)をドキュメント化

対応すべき理由・リスク

DB移行自体はPhase1(RLS)とほぼ同時に行うのが効率的だが、バックアップ・DR計画の整備は運用が軌道に乗ってから段階的に厳格化しても問題ない。

⑩ 監視体制の構築

想定工数:1週間

現状:エラー監視・稼働監視の仕組みはなし。

技術要件・実装方針

  • フロントエンドエラー監視(Sentry等)を導入し、JSエラー・API失敗を可視化
  • LLM API・DBの稼働監視(UptimeRobot等の外形監視、Edge Functionのログ監視)
  • アラート発生時の一次対応フロー(誰が・どこに通知されるか)を明文化

対応すべき理由・リスク

利用院数が少ない初期段階では手動確認でも回せるが、展開院数が増えるにつれ障害検知の遅れが機会損失に直結するため、Phase3のうちでも早めの着手が望ましい。

優先順位サマリー表

優先度 項目 現状 想定工数 主な技術要素
🔴必須①認証基盤刷新localStorage簡易認証2〜3週間Supabase Auth / Auth0 / RBAC
🔴必須②DBアクセス制御(RLS)アプリ側フィルタのみ2週間PostgreSQL RLS / JWTクレーム連携
🔴必須③LLM API連携疑似乱数生成(ai-mock.js)3〜4週間OpenAI/Gemini API + Edge Function
🔴必須④個人情報・ログ整備未整備1〜2週間同意UI / 保持期間ポリシー / HTTPS
🟡重要⑤法務・ポリシーレビューチャット検討のみ3〜4週間弁護士確認 / 文言調整
🟡重要⑥QR印刷運用整備印刷ページのみ完成1〜2週間運用マニュアル / 掲示ルール
🟡重要⑦口コミURL整備(残10院)28/38院登録済み数日〜1週間院管理画面から入力 / Table API一括更新
🟢中長期⑧分析機能強化基本集計・アラート実装済み継続的感情分析 / レポート機能 / 通知連携
🟢中長期⑨永続化・バックアップモックTable API1〜2週間マネージドDB移行 / 自動バックアップ
🟢中長期⑩監視体制構築未整備1週間Sentry / 外形監視 / 通知フロー

※工数は1〜2名体制での目安であり、要件確定度・既存基盤の有無により変動します。Phase1の①〜④は並行着手が可能なため、合計期間は単純合計ではなく最長路(LLM API連携:3〜4週間)を目安にするとよいでしょう。