多店舗の​Google口コミを​分析する​SaaSを​作った​ ──AIに​計算させず“数値は​コード・​言葉は​AI”で​正確な​レポートに​(制作事例)

多店舗運営の企業向けにGoogle口コミ分析ツールを作った制作事例。設計の核心は「数値はコード、言葉はAI」=LLMに計算をさせないこと。AIは計算を間違えるからだ。目標評価シミュレーション・客先用PDF・IDOR対策まで、任せる範囲と任せてはいけない範囲を分ける実例を開示する。

甲斐ショウジ甲斐ショウジ
CAG主宰/合同会社ATK CAIO(最高AI責任者)
制作事例10分で読めます
制作事例技術多店舗のGoogle口コミを分析するSaaSを作った ──AIに計算させず“数値はコード・言葉はAI”で正確なレポートに(制作事例)

制作事例 | AI駆動開発の現場から

この記事は、多店舗運営の企業向けにGoogle口コミ分析ツールを作った制作事例だ。店舗を選ぶだけで、平均評価・店舗別の傾向・「目標達成にあと何件必要か」までを正確なレポートで返す。設計の核心は一言、「数値はコードで、言葉はAIで」──LLMに計算をさせないことにある。[1]

なぜこの原則が要るのか。もともとこの分析は、口コミの一覧をAIに丸ごと投げ、「平均は何点か」「あと何件で目標か」まで全部AIに計算させていた。一見スマートだが、AI(LLM)は計算を間違える。しかも間違えても堂々と答えるから、気づけない。「だいたい正しい文章」を返すのは得意でも、「必ず正しい数字」を返すのは苦手なのだ。

この記事では、①なぜAIに計算させてはいけないのか ②どう作り直したか(数値はコード・言葉はAI)③目標評価シミュレーションや客先PDFなど実装の勘所 ④セキュリティ対策——の順に見ていく。AIを正しく使うとは、任せる範囲と、任せてはいけない範囲を分けること。その実例だ。

無数の星(口コミ評価)が流れ込み、精密な計器のような一枚の分析レポートへと整然と結晶化していく、ダークでシネマティックな抽象情景
散らばった「声」と「星」を、正確な一枚の分析に結晶化させる

01AIに​丸投げすると、​数字を​間違える

もともとの分析は、人の手とAIの合わせ技だった。口コミデータを書き出し、それをAIに貼り付けて「分析して」と頼む。AIは要約も、強み・弱みの抽出も、そして統計の計算もやってくれる。手軽だ。だが、ここに3つの問題があった。

  • 計算が、ときどき間違う。AIは「平均評価」や「目標まであと何件」のような数字を、もっともらしく、しかし不正確に答えることがある。文章は得意でも、正確な計算はAIの本質的な弱点だ。
  • 再現性がない。同じデータでも、頼むたびに少しずつ結果が変わる。「先週と数字が違う」が起きる。
  • 手間がかかる。店舗ごとに、データを書き出して貼り付けて……を毎回繰り返す。属人的で、時間も溶ける。

核心は1つ目だ。分析レポートの数字が信用できなければ、レポート全体が信用できない。「あと★5を15件集めれば4.5に届く」——この一文が間違っていたら、店舗は誤った努力をする。せっかくの良い改善提案も、土台の数字が狂っていれば説得力を失う。数字は、レポートの信頼の土台なのだ。だから、作り直すなら最初に決めるべきことは明確だった。計算を、AIから取り上げる。これは「AIが信用できない」という話ではない。AIに、AIの不得意なことをさせていたのが問題だった、というだけの話だ。

02設計の​核:数値は​コードで、​言葉は​AIで

このプロジェクトの背骨は、たった一行の原則だ。「数値はコードで、定性はAIで」

役割をきっぱり分けた。統計や目標シミュレーションのような"数字"は、すべてプログラムで決定論的に計算する。何度やっても、誰がやっても、同じ入力なら同じ答えが出る。一方で、"言葉"——口コミから強みや不満点を読み取り、業種に即した改善提案を言語化する仕事は、AIに任せる。これはAIが本当に得意な領域だ。AIには、AIにしかできないことだけをさせる。計算という、コードの方が確実な仕事は、コードに返す。この線引きが、レポートの信頼性のすべてを決めた。

口コミデータ星評価+本文= 入力 数値 → コードで計算(決定論)平均・分布・目標シミュレーション 言葉 → AIで分析(定性)強み・不満点・改善提案
入力を2つの流れに分ける。数字はコードで正確に、言葉はAIで深く。役割を混ぜない

03なぜ、​LLMに​計算させないのか

「最近のAIは賢いんだから、計算くらいできるのでは」と思うかもしれない。だが、ここには本質的な理由がある。

AI(大規模言語モデル)は、「次に来そうな言葉」を確率的に予測する仕組みだ。文章を紡ぐにはこれが強力に働くが、「84件の評価の合計を、5から目標値を引いた数で割る」といった厳密な計算は、本来の得意分野ではない。だいたい合っている答えを、自信たっぷりに返してくる。一方コードの計算は、同じ式に同じ数を入れれば、必ず同じ正しい答えが出る。曖昧さがゼロだ。だから今回、目標評価シミュレーション——「平均を4.5に上げるには、あと★5が何件必要か」——のような数字は、すべて短い計算式としてコードに書いた。AIには一切触らせない。確実なものは確実な道具で。これは妥協ではなく、信頼を作るための設計だ。[2]

LLMに計算させる(確率的) 「だいたい 15件…?」「いや 14件かも」毎回ぶれる・間違える vs コードで計算(決定論) N = ⌈(目標×件数 − 合計)/(5 − 目標)⌉必ず 15件何度でも同じ・常に正確
LLMは「だいたい」を返す。コードは「必ず正しい同じ答え」を返す。数字は後者に任せる

04目標シミュレーション:あと​何件で、​★4.5に​届くか

このSaaSが店舗オーナーに一番喜ばれる機能が、目標評価シミュレーションだ。「うちの平均は今いくつで、4.5にするにはあと★5が何件いるのか」——漠然と「もっと評価を上げたい」と思っていたものが、具体的な数の目標に変わる。

仕組みはシンプルで、現在の評価の合計と件数から、目標平均(4.0/4.2/4.3/4.5)ごとに必要な★5件数を逆算する。前章のとおり、これは一行の計算式で正確に出る。さらにその数字に、AIが業種特性を踏まえた短い添え言葉をつける。「飲食店なら接客の一言が効く」「整体なら施術後のフォローが鍵」——数字(コード)と、意味づけ(AI)が、それぞれの得意で噛み合う。星の数を、ただ眺めるものから、行動の指針に変えた。これが「数値はコード、言葉はAI」の最も分かりやすい果実だ。

レポートにはこのほかに何が並ぶか。構成を表に整理する。

レポート項目内容担当
評価分布★1〜5の評価の分布コード
月次推移月ごとの件数と平均の推移コード
ポジネガ比率ポジティブ/ネガティブの比率AI
強み/不満テーマ口コミ本文から拾った強みのテーマ・不満点のテーマ。それぞれ代表的な口コミの引用つきAI
要返信一覧低評価なのにまだ返信していない口コミを「要返信」として抽出——店舗が今すぐ動ける一覧コード

AIに任せた部分も、ただ「良い・悪い」を言わせるのではなく、「なぜそう言えるのか」が分かる引用を必ず添える。読み手が後から確かめられるようにするためだ。数字の正確さの上に、行動につながる具体性を重ねていく。

複数の星評価の山が、上向きの矢印と到達目標ラインへ向かって精密に積み上がっていく、温かみと精密さが同居するダークな情景
「あと★5を15件で4.5」——漠然とした願望を、達成可能な数の目標に変える

05取得と​分析を​分ける​:コストと​設計

地味だが効く設計判断がもう一つある。「データを取ってくる処理」と「AIで分析する処理」を、はっきり分けたこと。

口コミの取得は、何度やっても安い。だがAIの分析は、呼ぶたびにお金がかかる。もし両者を一緒くたにすると、画面を開くたびにAIが走り、見るだけでコストが膨らむ。だから、取得は自動・定期的に(毎月まとめて)、AI分析は「分析する」ボタンを押したときだけ、と切り分けた。一度出した分析結果は保存しておき、次からは即座に表示する。再分析は、明示的に押したときだけ。AIは強力だが、無駄打ちさせない。「使える」と「続けられる」を両立するには、こうしたコストの設計が欠かせない。月いくらで回るかまで含めて、はじめて"プロダクト"になる。

① 取得(自動・定期)毎月まとめて・安い 保存(キャッシュ)→ 次回は即表示 ② AI分析(押したときだけ)呼ぶと課金 → 無駄打ちしない 取得とAIを分けることで、見るだけでコストが膨らむのを防ぐ
安い「取得」は自動で、課金される「AI分析」は明示操作のみ。コストを設計に組み込む

06​「静かに​0件」を​追う​:沈黙する​失敗の​デバッグ

制作事例として、一番"探偵らしかった"場面を書いておく。実データで動かしたら、口コミが0件しか取れない。だがエラーは出ない。通信は成功(正常応答)、件数だけが0。これは、前にも書いた「サイレントな失敗」——何も間違っていないように見えて、実は何も取れていない、最も厄介なタイプだ。[3]

そこで、通信の生の中身を観測するログを仕込み、一枚ずつ皮を剥いだ。判明した真因は2つ重なっていた。1つは、口コミを取りに行く"住所"が間違っていたこと——親アカウント宛に問い合わせていて、その下にある個別店舗の口コミが返らない構造だった。これを店舗単位の住所に直した。もう1つは、店舗を指定する番号が、別物だったこと——フォームに入れていた数値が、実は店舗の本当のIDではなく、一致するものがないから"静かに0件"を返していた。正しいIDで叩いたら、25件すべてが取れたエラーを出さない失敗ほど、原因は地味で、観測しないと一生見えない。だから私たちは、まず"見える化"してから直す。

親アカウント宛+誤ったID通信は成功・エラーなし→ 静かに 0 件 店舗単位+正しいID観測ログで真因を特定→ 25 件すべて取得
「正常なのに0件」は観測しないと見えない。住所とIDの2つの取り違えを剥がして解決

07クライアントに​出せる​品質:日本語PDFと、​安全

社内で見るだけなら、画面のレポートで十分だ。だが、店舗オーナーに渡すとなると、話が変わる。そのまま提出できる、きれいな日本語のPDFが要る。ここにも、表に出ない苦労があった。

日本語のPDF生成は、地雷が多い。文字が「□(豆腐)」に化ける、行末に英語のような「-(ハイフン)」が勝手に入る、要素が重なって読めない……。一つずつ潰した。日本語フォントを正しく埋め込み、改行のルールを日本語向けに作り変え、レイアウトの重なりを解消する。「だいたい出る」ではなく「客先にそのまま出せる」品質まで詰めるのが、プロダクトとの境目だ。

そして、もう一つ大事なのが安全性だ。開発の途中で、コードを点検していて気づいた——設計次第では、ログインした利用者が、本来見えてはいけない他社のレポートを取れてしまう穴があった(IDORと呼ばれる脆弱性)。複数の会社が同じ仕組みを使う将来を見据え、ここを塞いだ。「動く」だけでなく「安全に動く」まで含めて、はじめて人に渡せる。誠実さは、こういう見えないところに宿る。[4]

整然とレイアウトされた一枚の分析レポート資料が、信頼感のある精密さで仕上がっている様子を象徴する、ダックでシネマティックな情景
客先にそのまま出せる日本語PDFと、見えない安全性。プロダクトの品質は細部に宿る

08​締め:AIを​正しく​使うとは、​境界を​引く​こと

この制作事例が伝えたいのは、ひとつだ。AIを正しく使うとは、AIに任せる範囲と、任せてはいけない範囲を、はっきり分けること。

「AIで全部やる」は、聞こえはいいが、しばしば品質を落とす。計算のように、コードの方が確実なことはコードに返す。言葉の機微を読む・意味づけするような、AIが本当に得意なことだけをAIに任せる。この境界を正しく引けるかどうかが、"とりあえずAIを使ったもの"と、"信頼して使えるもの"を分ける。そこに、取得とAIを分けるコスト設計、沈黙する失敗を観測で炙り出すデバッグ、客先に出せるPDF品質、そして安全性——表に出ない積み重ねが乗って、はじめて「プロダクト」になる。電脳技巧集団(AI職人ギルド)が大切にしているのは、AIを派手に使うことではない。AIの強みと弱みを正しく見極め、適材適所で組み上げることだ。それが、職人の仕事だと思う。

コードの精密な歯車とAIの柔らかな光が、明確な境界線で役割を分けながら一つの機構として噛み合っている、信頼感のあるダークな情景
コードとAI、それぞれの得意で噛み合わせる。境界を引くことが、信頼を作る

AIに全部任せる vs 適材適所で組む。その差が、信頼できるかどうかを分ける。

観点AIに丸投げ(従来)適材適所で組む(CAG)
計算(数字)AIに計算させる→間違えるコードで決定論計算→必ず正確
定性分析(言葉)AI任せ(得意領域)AIに集中させる(業種特性も注入)
再現性頼むたびに数字が変わる同じ入力なら必ず同じ結果
運用の手間店舗ごとに手作業で投げる店舗を選ぶだけで自動レポート
コスト見るたびにAIが走る取得と分析を分けて無駄打ち防止
提出物・安全体裁・権限管理が曖昧客先用PDF+他社データ遮断まで

※ 本記事はCAGが実際に開発した口コミ分析SaaSの制作事例。企業名・店舗名・利用サービス名・固有IDは伏せた匿名ケーススタディ。設計判断・技術構成は実際のものに基づく(v0・2026時点)。

脚注

  1. 本件は、多店舗事業者の各店舗に集まる口コミ(星評価+本文)を自動取得し、統計・目標評価シミュレーション・感情/キーワード分析・改善提案を1枚のWebレポートおよびクライアント提出用PDFに自動生成するSaaS。従来の「データを書き出してAIに手作業で分析させる」運用を、店舗を選ぶだけの再現性ある自動レポートに置き換えた。
  2. 目標評価シミュレーション=現在の評価合計 S と件数 C から、目標平均 target(4.0/4.2/4.3/4.5)に到達するために必要な★5件数 N を N = ceil((target×C − S)/(5 − target)) で算出(達成済みなら0)。LLMには一切計算させず、純粋なコード(テスト固定済み)で求める。これが数字の正確さと再現性を担保する。
  3. 「サイレントな失敗」=エラーを出さずに静かに壊れる失敗。今回は通信が正常応答(件数0)を返すため、データが本当に無いのか取得経路が誤っているのかが見分けられなかった。生レスポンスの観測ログを仕込み、(1)親アカウント宛になっていた取得先を店舗単位へ修正、(2)指定IDが実在の店舗IDと不一致だったことを特定し、正しいIDで全件取得に成功した。
  4. IDOR(Insecure Direct Object Reference)=本来アクセス権のないデータを、IDを差し替えるだけで取得できてしまう脆弱性。複数テナント(会社)が同一基盤を使う将来を見据え、利用者の操作には行レベルのアクセス制御を必ず適用し、全件アクセスは信頼済みのサーバー処理にのみ許す構成へ修正した。

「AIを​導入したけど、​結果が​いまいち信用できない」——それ、​任せ方の​設計かもしれません。

AIの強みと弱みを見極め、適材適所で組み上げる。データ分析も業務自動化も、AI駆動で確実に。まずは相談から——問い合わせは、AIがその場でお応えします。

無料で相談する →

言語化できるものは、全て作る。

あなたの「作りたい」を、定価とスピードで形に。まずは無料の相談から。

制作事例を見る