映画館が上映後のアンケートの自由記述を上映回とひも付けて要約し、次月の番組の編成とサービスの改善の論点を作る
映画館が上映後に集めるアンケートの自由記述を、毎月まとめて上映回とひも付け、Claude API で作品ごと・区分ごとに要約します。次月の番組の編成とサービスの改善について、根拠の回答の番号つきの論点の一覧を作ります。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- 連携・自動化
- Google Apps Script/Make/Zapier
- 対象業界
- その他/小売/飲食
- 対象部門
- マーケティング/経営企画
- 対象業務
- 要約/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/判断に時間がかかる
- AIで行う処理
- 要約
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 毎月の初めに、担当が回答のスプレッドシートを前月分に絞って開く
- 自由記述を上から読み、作品の名前と、どの話題の声かを頭の中で仕分ける
- 気になった声を、作品ごと・設備や売店ごとに報告書へ書き写す
- 「字幕の回を増やしてほしい」のような要望は、件数を手で数える
- 上映の予定表を開き、声の多い作品の上映回数と時間帯を確かめる
- 支配人と担当で報告書を読み合わせ、番組の編成の会議の資料にする
- 売店・清掃・案内の声は、それぞれの責任者に口頭かメールで伝える
- 自動毎月1日の朝、Google Apps Script が前月分の回答を読み出す
- 自動回答の鑑賞日・時間帯・スクリーンから、上映の予定表の行を引いて作品と形式を付ける
- 自動氏名・電話番号・メールアドレス・会員番号に見える文字列を伏せる
- 自動Claude API の Message Batches で、1件ずつ話題・要望・対象・感情の向きを取り出す
- 自動取り出した結果を作品ごと・区分ごとに束ね、Claude API に要約と論点の案を作らせる
- 自動論点の一覧と、根拠の回答の番号をスプレッドシートの月次のシートに書き出す
- 人担当が論点の一覧を読み、根拠の回答を数件ずつ開いて確かめる
- 人支配人と担当で、番組の編成の会議に出す論点を選ぶ
- 人売店・清掃・案内の論点を、それぞれの責任者に回す
各工程の詳しい説明を読む
- 毎月の初めに、担当が回答のスプレッドシートを前月分に絞って開く
- 自由記述を上から読み、作品の名前と、どの話題の声かを頭の中で仕分ける
- 気になった声を、作品ごと・設備や売店ごとに報告書へ書き写す
- 「字幕の回を増やしてほしい」のような要望は、件数を手で数える
- 上映の予定表を開き、声の多い作品の上映回数と時間帯を確かめる
- 支配人と担当で報告書を読み合わせ、番組の編成の会議の資料にする
- 売店・清掃・案内の声は、それぞれの責任者に口頭かメールで伝える
(a)読み切れない月は、後半が読まれない。 上から読むので、月の後半の回答ほど目を通されずに会議を迎えます。月末に公開された作品の声は、次の月の会議までほとんど届きません。
(b)感想と要望が混ざっていて、数えにくい。 「面白かったけど音が大きすぎた」のように、1件の中に感想と要望が入っています。要望の部分だけを拾って数えるのは、読む人の集中に頼る作業です。 数え方が月と人で変わり、先月より増えたのかが分かりません。
(c)どの上映回の声かが分からない。 「夜の回が遅い」が平日の最終回のことか、休日の大型の音響の上映のことかで、打つ手が変わります。アンケートに作品名しか書かれていないと、書き写した声がそのまま編成に使えません。
(d)設備や売店の声が担当に届かない。 番組の話に集中するので、空調・座席・売店の声は後回しになります。同じ苦情が3か月続いて、初めて責任者が知ることがあります。
- 【自動】 毎月1日の朝、Google Apps Script が前月分の回答を読み出す
- 【自動】 回答の鑑賞日・時間帯・スクリーンから、上映の予定表の行を引いて作品と形式を付ける
- 【自動】 氏名・電話番号・メールアドレス・会員番号に見える文字列を伏せる
- 【自動】 Claude API の Message Batches で、1件ずつ話題・要望・対象・感情の向きを取り出す
- 【自動】 取り出した結果を作品ごと・区分ごとに束ね、Claude API に要約と論点の案を作らせる
- 【自動】 論点の一覧と、根拠の回答の番号をスプレッドシートの月次のシートに書き出す
- 【人】 担当が論点の一覧を読み、根拠の回答を数件ずつ開いて確かめる
- 【人】 支配人と担当で、番組の編成の会議に出す論点を選ぶ
- 【人】 売店・清掃・案内の論点を、それぞれの責任者に回す
7番目が、この設計の分かれ目です。 人は600件を上から読むのではなく、論点ごとに根拠の回答を数件ずつ読みます。 要約が回答に書かれていないことを言っていないかを、根拠から確かめるためです。
2番目を AI にさせないのも、意図してのことです。 上映回のひも付けは、予定表という正解のある表を引く作業です。正解のある照合はスクリプトで行い、AI には言葉を読むことだけをさせます。
4番目と5番目を分けているのは、件数の数え方を AI から切り離すためです。 1件ずつの取り出しの結果をスクリプトが数え、その数字を要約に渡します。要約が「多くの方が」と書いても、何件かは表の数字で読めます。 会議で「本当にそんなに多いのか」と聞かれたとき、答えられるのは数字のほうです。
9番目は、これまで抜けていた流れです。 売店・清掃・案内の論点は、番組の編成の会議では扱いません。月次のシートの区分で絞れば、責任者ごとの一覧がそのまま作れます。 3か月続く苦情が、最初の月に届くようになります。
02今回想定するシステム構成
観客(チケットの半券・館内の掲示の二次元コード) ▼ Google フォーム ── 鑑賞日・時間帯・スクリーン・自由記述 ▼ 回答のスプレッドシート 【トリガー】毎月1日の朝(時間主導型のトリガー) Google Apps Script ├──▶ 上映の予定表と突き合わせ(作品・形式を付ける) ├──▶ 氏名・連絡先に見える文字列を伏せる ▼ Claude API(Message Batches)── 1件ずつ話題と要望を取り出す ▼ 30分ごとに処理の状態を確かめる Google Apps Script ── 作品ごと・区分ごとに束ねる ▼ Claude API(Messages API)── 要約と論点の案 ▼ スプレッドシート(月次のシート)── 論点・件数・根拠の回答の番号 ▼ 【人】担当が根拠を確かめ、会議の資料にする
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(Message Batches と Messages API、構造化出力) | OpenAI API、Azure OpenAI |
| 連携 | Google Apps Script(時間主導型のトリガー、UrlFetchApp) | Make、Zapier |
| 保管 | Google スプレッドシート(回答・上映の予定表・月次のシート) | Microsoft 365 の表計算 |
| フォーム | Google フォーム | Microsoft Forms |
新しく作るのは、話題の区分の一覧と月次のシートだけです。 区分は「上映回数」「時間帯」「字幕・吹替」「上映形式」「音響・映像」「座席・空調」「売店」「清掃」「案内・チケット」「料金」「作品の感想」の11個から始めます。区分は館の打ち手の単位で切ります。 打ち手に結び付かない区分を作ると、論点が出ても誰も動けません。
AI の部品は Claude API です。 構造化出力は output_config.format に JSON Schema を渡す形で、minimum/maximum などの数値の制約、minLength/maxLength の文字列の制約、minItems が0と1以外の配列の制約には対応していないとされています。件数の上限や文字数の確認は、スクリプトの側で行います。
1件ずつの取り出しは Message Batches で行います。 1つのバッチは10万件か256MBのどちらか先に達するまでで、多くは1時間以内に終わり、24時間で終わらなければ期限切れになるとされています。料金は通常の半分です。 月に一度の集計で急ぐ必要がないので、この形に向いています。
Google Apps Script は1回の実行が6分までです。 600件の取り出しを1回の実行の中で順に待つと、この上限に当たります。バッチを送る実行と、結果を取りに行く実行を分けます。
03どうやって実装するのか
処理の起点を決める
毎月1日の朝6時に、時間主導型のトリガーで動かします。 前月の1日から末日までに届いた回答が対象です。番組の編成の会議は中旬なので、1日に論点が出れば、担当が根拠を確かめる時間が10日ほど取れます。
トリガーは2つ置きます。1つ目は毎月1日に動き、回答を読み出してバッチを送ります。2つ目は30分ごとに動き、送ったバッチが終わっているかを確かめます。 終わっていなければ何もせずに終わり、終わっていれば結果を取り込んで要約に進みます。要約まで終わったら、その月のバッチの印を「完了」にして、2つ目のトリガーは空振りを続けます。
Google Apps Script のトリガーの1日の合計の実行時間には上限があり、一般のアカウントで90分、Google Workspace のアカウントで6時間とされています。30分ごとの確認は数秒で終わるので、この上限には届きません。 業務のデータを扱うので、Workspace のアカウントで動かします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| アンケートの回答 | 回答の番号、送信日時、鑑賞日、時間帯、スクリーン、満足度、自由記述 | 回答のスプレッドシート |
| 上映の予定表 | 日付、スクリーン、開始時刻、作品、上映形式(字幕・吹替・2D・3D など) | 上映の予定表のスプレッドシート |
| 話題の区分の一覧 | 11個の区分と、それぞれの説明と例 | 区分の一覧のシート |
| 前月の論点 | 先月の論点と、そのとき決めた対応 | 月次のシート(前月分) |
質を決めるのは、フォームの設問です。 自由記述だけのアンケートでは、上映回を引く材料がありません。鑑賞日は日付の入力、時間帯は「午前・昼・夕方・夜・レイト」の選択、スクリーンは番号の選択にします。 作品名は聞きません。予定表から引けるものを観客に書かせると、略称や誤字が入るからです。
前月の論点は、「続いている声」を見分けるために持ちます。 先月に「空調が寒い」が論点になり対応したなら、今月も同じ声が多いかで、対応が効いたかが分かります。
データの取得方法を決める
回答は、Google フォームにつないだスプレッドシートから読みます。送信日時ではなく鑑賞日で前月分に絞ります。 月末の夜に観て翌月1日の朝に回答した人を、正しい月に数えるためです。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 前月分の回答 | 回答のシートを鑑賞日で絞る | 取り出しの対象 |
| 上映回の候補 | 予定表を鑑賞日とスクリーンで絞り、時間帯に入る開始時刻の行 | 作品と上映形式を付ける |
| 区分の一覧 | 区分の一覧のシート | 指示に埋め込む |
| 前月の論点 | 月次のシートの前月分 | 要約の指示に埋め込む |
上映回の引き方は、日付・スクリーン・時間帯の3つで絞ります。 1つに絞れれば、その行の作品と形式を付けます。同じ時間帯に同じスクリーンで2回の上映があれば、作品が同じなら作品だけを付け、違えば「候補が2つ」と印を付けます。 推し量って1つに決めないでください。
Claude API への送り先は、Message Batches の作成の窓口です。1件ずつのリクエストに custom_id を付けます。 使えるのは英数字とハイフンとアンダースコアの1〜64文字なので、「2026-09-r0412」のように年月と回答の番号から作ります。結果は送った順に返るとは限らないとされているので、custom_id で回答と結び付けます。
バッチの1件の中身は、次の4つです。
| 中身 | 内容 |
|---|---|
custom_id | 年月と回答の番号 |
| 指示文 | 第7章の1段目の指示(区分の一覧を埋め込んだもの) |
| 回答 | 上映回の情報、満足度、伏せ字を済ませた自由記述 |
| 出力の形 | output_config.format に渡す JSON Schema |
指示文と出力の形は、600件すべてで同じにします。 区分の一覧を月の途中で変えると、前半と後半で区分の付け方がずれ、件数を比べられなくなります。区分を直すのは月の替わり目だけにします。
バッチを送ったら、返ってきたバッチの番号をスクリプトのプロパティに書きます。30分ごとの確認は、この番号で処理の状態を問い合わせるだけです。 状態が終わりになっていれば結果の一覧を取り、1件ずつ custom_id で回答の行に戻します。
AIへ渡す前に整形する
- 自由記述の無い回答を外す … 満足度だけの回答は件数としては数えますが、AI には渡しません
- 上映回を付ける … 日付・スクリーン・時間帯で予定表を引き、作品と形式を付けます
- 個人を指す文字列を伏せる … 電話番号・メールアドレス・会員番号の形をした文字列を「[連絡先]」に置き換えます
- 人の名前を伏せる … 「受付の◯◯さん」のようなスタッフの名前を「[スタッフ]」に置き換えます。スタッフの名簿の名字と照らして行います
- 長すぎる回答を区切る … 2,000字を超える回答は、先頭から2,000字で切り、切ったことを印にします
- 同じ内容の重複を外す … 同じ鑑賞日・スクリーンで自由記述が一字一句同じものは、1件として扱います
3番目と4番目を軽く見ないでください。 観客は「チケットの件で連絡がほしい、090-…」と自由記述に書くことがあります。要約の材料に連絡先は要りません。 連絡がほしいという回答は、伏せる前に別のシートへ写し、担当が個別に対応します。
4番目は、論点が個人への苦情にならないようにするためです。 接客の声は「受付の案内」という区分で扱い、誰が悪いかの話にしません。
AIに処理させる
させることは2段に分かれます。 1段目は1件ずつの取り出し、2段目は束ねた結果の要約です。
| 段 | させること | させないこと |
|---|---|---|
| 1段目(1件ずつ) | 話題の区分(複数可)、要望の有無と中身、対象(作品・設備・売店など)、感情の向き、作品の感想かどうか | 回答に無い理由を補う、上映回を推し量る |
| 2段目(束ねて) | 区分ごと・作品ごとの要約、論点の案、根拠の回答の番号、前月からの変化 | 上映回数・期間・料金を決める、件数を数える |
件数を AI に数えさせないのは、数え間違えるからです。 1段目の結果はスクリプトが区分ごとに数え、2段目には数えた結果を渡します。 AI には「どういう声が多いか」を言葉にさせ、「何件か」は数字のまま表に書きます。
論点の案は、問いの形で書かせます。 「字幕の回を増やす」ではなく「◯◯の字幕の夜の回を増やすか」とさせます。決めるのは会議で、AI が出すのは決める材料です。 上映の期間や回数は配給会社との取り決めにも関わるので、館の中だけで決められないことがあります。
指示内容を固定する
1段目(1件ずつの取り出し)の指示です。
あなたは映画館の支配人室で、上映後のアンケートを読む担当です。
渡された1件の自由記述だけを読み、話題と要望を取り出してください。
【話題の区分】{category_list}
(区分は複数選んでかまいません。当てはまらなければ other にしてください)
【厳守事項】
- 自由記述に書かれていることだけを取り出してください。
書かれていない理由や背景を補わないでください。
- 要望は、観客が館に何をしてほしいかが書かれているときだけ request に入れてください。
「面白かった」「また来たい」は要望ではありません。
- 作品の内容への感想(ストーリー・俳優・結末)は is_film_opinion を true にし、
館への要望と混ぜないでください。
- 上映回・作品は、渡された上映回の情報を使ってください。
自由記述から作品を推し量って書き換えないでください。
- request_text は、自由記述の言葉をできるだけそのまま短く写してください。
言い換えて強めたり弱めたりしないでください。
- [連絡先][スタッフ]の伏せ字を元に戻そうとしないでください。
- 判断がつかないときは、confident を false にしてください。
【上映回の情報】{screening}
【満足度】{score}
【自由記述】{comment}
2段目(要約と論点の案)の指示です。
あなたは映画館の番組の編成の会議の資料を作る担当です。
渡された区分ごとの取り出し結果と件数をもとに、要約と論点の案を作ってください。
【厳守事項】
- 件数は渡された数字をそのまま使い、数え直さないでください。
- 要約には、取り出し結果に書かれていることだけを使ってください。
- 論点は「〜するか」という問いの形で書き、結論を書かないでください。
- 論点ごとに、根拠にした回答の番号を3〜5件挙げてください。
根拠にできる回答が無い論点は書かないでください。
- 上映の期間・回数・料金・設備への投資について、
「すべき」「決定」のような言い切りをしないでください。
- 前月の論点と同じ話題が続いている場合は、そのことを書いてください。
- 作品の感想は要約に入れてよいですが、論点にはしないでください。
【対象月】{month}
【区分ごとの件数】{counts}
【取り出し結果(区分・作品ごと)】{extracted}
【前月の論点と決めた対応】{last_month}
「根拠にできる回答が無い論点は書かない」が、2段目でいちばん効く一文です。 これが無いと、件数の多い区分から一般論の論点を作ります。根拠の番号が付いていれば、担当は数件を開くだけで論点が回答に基づくかを確かめられます。
出力形式を固定する
1段目は、次の形の JSON で受け取ります。
{
"response_id": "2026-09-r0412",
"categories": ["subtitle_dub", "time_slot"],
"is_film_opinion": false,
"has_request": true,
"request_text": "字幕の夜の回がもう少し遅い時間にほしい",
"target": "screening | facility | concession | staff | price | other",
"sentiment": "positive | neutral | negative",
"confident": true
}
2段目は、論点ごとに次の形で受け取ります。
{
"month": "2026-09",
"category": "subtitle_dub",
"film": "作品名(予定表の表記)",
"summary": "",
"issue_question": "",
"evidence_ids": ["2026-09-r0412", "2026-09-r0517"],
"continued_from_last_month": false
}
1つ目の理由は、件数と言葉を別の層に置けることです。 件数はスクリプトが1段目の categories から数え、要約の文章は2段目が書きます。AI が件数を書き換える経路がありません。
2つ目は、evidence_ids で根拠を引けることです。 月次のシートでは番号を回答の行へのリンクにします。担当は論点の横のリンクを開くだけで、元の回答を読めます。
3つ目は、confident で読み直す回答を絞れることです。 false の回答だけを一覧にし、担当が区分を付け直します。付け直した結果は、翌月の指示の例に足します。
月次のシートは次の表にします。
| 区分 | 作品 | 件数(前月) | 要約 | 論点 | 根拠 |
|---|---|---|---|---|---|
| 字幕・吹替 | (作品名) | 23(9) | 字幕の夜の回を望む声 | 字幕の夜の回を増やすか | r0412 ほか |
| 座席・空調 | - | 17(21) | 3番スクリーンが寒い | 空調の設定を見直すか | r0233 ほか |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 回答のスプレッドシート | Apps Script の読み取り | 前月分の回答を読む |
| 上映の予定表 | Apps Script の読み取り | 上映回を引く |
| Claude API(Message Batches) | UrlFetchApp で HTTP の呼び出し | 1件ずつの取り出しを送り、結果を取る |
| Claude API(Messages API) | UrlFetchApp で HTTP の呼び出し | 区分ごとの要約と論点の案 |
| 月次のシート | Apps Script の書き込み | 論点・件数・根拠を書く |
回答のシートと予定表には書き込みません。 書くのは月次のシートだけです。元の回答に手を入れないので、要約が誤っていても元を読み直せます。
API キーはスクリプトのプロパティに置きます。 コードに直接書くと、スクリプトを共有したときにキーも一緒に渡ります。
人が確認する
- 論点ごとに根拠を開く …
evidence_idsの回答を2〜3件開き、論点が回答に書かれていることかを確かめます - 件数の大きな変化を確かめる … 前月から倍以上に増えた区分は、上映回の付け方か区分の付け方が変わっていないかを見ます
confidentがfalseの回答を付け直す … 区分と要望を人が付けます- 会議に出す論点を選ぶ … 支配人と担当で、打てる手のある論点を選びます
- 責任者に回す … 売店・清掃・案内の論点を、それぞれの責任者に渡します
1番目を省かないでください。 要約は、もっともらしい一般論を混ぜることがあります。根拠の回答を読んで、論点の言葉が回答の言葉から離れていないかを見ます。
2番目は、仕組みの側の変化を見つけるためです。 「字幕・吹替」の件数が急に増えたとき、本当に声が増えたのか、区分の説明を変えて付け方が広がったのかは、論点の一覧だけでは分かりません。区分の説明を変えた月は、月次のシートの欄外にそのことを書いておきます。
目標は、600件をならして1件1分です。 論点が20〜30個、それぞれ根拠を数件ずつ読み、confident が false の回答を付け直す時間を含めた見込みです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 上映回が引けない(予定表に無い日付・スクリーン) | 作品を「不明」にして取り出しは行う。要約の作品ごとの表には入れない |
| 上映回の候補が2つある | 作品が同じなら作品だけを付ける。違えば「候補が2つ」と印を付け、作品ごとの表には入れない |
| バッチが24時間で終わらない | 期限切れになった回答だけを集めて、翌日にもう一度送る |
| 1件の結果がエラーで返る | その回答を「未処理」にして、月次のシートの末尾に一覧で出す |
| 構造化出力の形に合わない | 1段目なら再送しない。人が区分を付ける一覧に回す |
| 自由記述に連絡を求める言葉がある | 伏せる前に別のシートへ写し、担当が個別に対応する |
| 差別的な言葉・脅しの言葉がある | 要約の材料から外し、支配人に直接回す |
| 回答の数がいつもの半分以下 | フォームの二次元コードの掲示が外れていないかを確かめる |
| 前月の論点のシートが無い | 前月との比較を空にして要約を作る |
上の2行が大半を占めます。 どちらも AI の問題ではなく、フォームの設問と予定表の書き方の問題です。 予定表の入力の遅れで上映回が引けない月は、まず予定表を直します。
期限切れとエラーは、送り直す前に件数を見ます。 数件なら翌日に送り直せば済みますが、数百件がまとめて期限切れになったときは、混み合っていたか、指示文か出力の形に誤りがあります。同じものを送り直す前に、1件だけを Messages API で試して、返り方を確かめます。
記録を残す
- 前月分として読み出した回答の番号の一覧と、読み出した日時
- 上映回のひも付けの結果(引けた・候補が2つ・引けない)
- 1段目の結果の JSON の全件と、
confidentがfalseの回答に人が付け直した区分 - 2段目の要約と論点の案、そのとき渡した件数
- 会議で選ばれた論点と、決めた対応
- バッチの番号と、期限切れ・エラーの件数
5番目は、翌月の「前月の論点」の材料です。 論点だけでなく、決めた対応まで残すと、翌月に対応が効いたかを見られます。
Message Batches の結果は作成から29日まで取り出せるとされています。 取り込んだらすぐにスプレッドシートへ写し、バッチの側に残っていることを当てにしないでください。
04実装レベルの3段階
最小構成では件数がさばけません。 600件を手で貼ることはできないので、確かめるための段階です。 本記事の想定は半自動化です。 1件3分が1分になり、2名が会議の前に読み切れる量に収まります。本格構成は、興行の数字を出せる仕組みがあるときに足します。 声が多くても入りの少ない回、声は少なくても入りの多い回を並べて見られるようになります。 段階を飛ばさないでください。 半自動化の月次のシートを2〜3か月見ると、区分の切り方が館の打ち手に合っているかが分かります。区分を直してから数字を足すほうが、資料が使われます。
05工数削減シミュレーション
導入後 600件 × 1分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- スクリーンが数面から十数面ある映画館・ミニシアターで、上映後のアンケートを Web のフォームで集めていて、自由記述が月に数百件たまる場合。支配人や番組の担当が毎月の番組の編成の会議の前に自由記述を読み切れず、作品の延長・上映回数・字幕と吹替の比率・上映の時間帯を、感覚と興行の数字だけで決めている場合。上映の予定表をスプレッドシートで持っている場合。
- アンケートの自由記述が月に数十件で、支配人が全件を読める館。アンケートを紙で集めていて、文字に起こす手間のほうが大きい館。上映の予定表が手元に無く、回答と上映回をひも付けられない場合。なお、作品の上映期間・回数を配給会社とどう取り決めるか、料金や設備への投資をどうするかの判断は、この構成では代替できません。
07最小構成で試す方法
- 前月の回答から、自由記述のある回答を50件選ぶ(作品の感想と要望が混ざったものを多めに入れる)
- 50件の連絡先とスタッフの名前を手で伏せる
- 50件を手元の Claude の画面に貼り、第7章の1段目の指示で1件ずつ区分と要望を取り出させる
- 取り出した結果を見て、担当が自分で付けた区分と比べる
- 区分ごとにまとめた結果を貼り、2段目の指示で論点の案を作らせる
比べるのは、作品の感想と要望を分けられているかです。 ここが分かれないと、2段目の論点に作品の感想が混ざります。
| 出てきた内容 | 判断 |
|---|---|
| 担当の区分とほぼ同じ | スクリプトとバッチの組み立てに進む |
| 作品の感想を要望に入れる | 指示の例を足せば直る。構成は有効 |
| 上映回が分からず判断できない回答が多い | フォームの設問が先。 鑑賞日・時間帯・スクリーンを選ばせる |
3行目が出たら、フォームを直す月を1か月設けてください。 AI の精度ではなく、回答に上映回の手がかりが無いことが原因です。
2段目の論点の案は、前月の会議の資料と並べて見てください。 人が書いた資料に載っていた論点が案に出ているか、人の資料に無かった論点が根拠つきで出ているかを見ます。後者が数個でも出れば、読み切れていなかった声が拾えたということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 上映回が引けない回答が多い | フォームで鑑賞日・時間帯・スクリーンを選ばせる。 作品名は書かせない |
| 作品の感想が要望に入る | 1段目で is_film_opinion を分け、指示に例を足す |
| 要約が一般論になる | 根拠の回答の番号を必須にし、根拠の無い論点を書かせない |
| AI が件数を書き換える | 件数はスクリプトが数え、2段目には渡すだけにする |
| 1回の実行が6分で止まる | バッチを送る実行と、結果を取る実行を分ける |
| バッチの結果が順に並ばない | custom_id で回答と結び付ける |
| 構造化出力で400が返る | 数値の範囲・文字数・minItems の制約をスキーマから外し、スクリプトで確かめる |
| 自由記述に連絡先が書かれる | 伏せる前に別のシートへ写し、個別に対応する |
| スタッフの名前が論点に出る | 名簿の名字で伏せ、接客の声は「受付の案内」の区分で扱う |
| 論点が結論の形で書かれる | 問いの形で書かせ、会議で決める |
| 予定表の入力が遅れる | 毎月1日の実行の前に、前月の予定表が埋まっているかを確かめる |
| 区分が打ち手に結び付かない | 2〜3か月ごとに区分を見直す |
上の2行が、この構成の失敗のほとんどです。 どちらも「どの声を、何として数えるか」の問題で、AI の性能ではなくフォームと区分の設計で決まります。
「件数をスクリプトが数える」も、早いうちに効いてきます。 AI が書いた件数と表の件数が食い違うと、会議で資料そのものが疑われます。
もう一つ、回答の偏りにも気を付けてください。 アンケートに答えるのは、強く満足した人と強く不満を持った人に寄りがちです。論点の一覧は「答えた人の声」であって、観客全体の割合ではありません。 会議では興行の数字と並べて読み、声の件数だけで上映回数を決めないようにします。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 観客の自由記述(ときに連絡先や体調のことが書かれる)、鑑賞日とスクリーン、スタッフの名前です。
- 連絡先とスタッフの名前を伏せてから渡す … 要約に個人を指す情報は要りません。伏せる前の回答は館の中のスプレッドシートにだけ置きます
- Message Batches は保存を伴う … Claude API は既定で会話の内容を保持しないとされていますが、バッチの処理は29日の保持があり、ゼロデータ保持の対象外とされています。 伏せ字を前処理で済ませてから送ります
- 自動の安全審査で引っかかった内容は長く残りうる … 公式のページでは、Anthropic の自動の安全の仕組みで印が付いた場合、入出力が最大2年保持されうるとされています。差別的な言葉・脅しの言葉を含む回答は、AI に渡さず支配人に回します
- 論点を決定として扱わない … 上映の期間・回数・料金・設備への投資は、配給会社との取り決めや館の収支を見て人が決めることです。 AI が出すのは問いの形の論点までです
- 観客への返信を自動で送らない … この構成は集計のためのもので、個別の返信は担当が行います
- 子どもの回答に配慮する … ファミリー向けの作品では子どもが回答することもあります。年齢は聞かず、名前や学校名に見える文字列も伏せる対象にします
誤りが起きた場合のリスクは、回答に無い論点が会議に出ることと、多い声が論点から落ちることの2つです。 前者は根拠の番号の確認で、後者は件数をスクリプトで数えることで防ぎます。
10まず何から始めるか
1週目:フォームの設問を直す
鑑賞日、時間帯(午前・昼・夕方・夜・レイト)、スクリーンの番号を選ばせる設問を足します。作品名の自由入力は外します。 この月の回答から、上映回が引けるようになります。
2週目:区分を決め、50件で試す
話題の区分を11個で決め、前月の回答50件を手元の Claude の画面で試します。作品の感想と要望が分かれるかを最優先で見ます。
3週目:Apps Script で前処理まで作る
前月分の読み出し、上映回のひも付け、伏せ字までを作り、結果をシートに書き出します。この時点では AI に渡さず、上映回が何割引けたかを数えます。
4週目:バッチと要約をつなぐ
Message Batches での取り出しと、2段目の要約を足し、月次のシートに論点を書き出します。
2か月目: 番組の編成の会議で月次のシートを使い、論点ごとに根拠を開いて確かめます。3か月目以降: 区分の切り方を見直し、前月の論点と決めた対応を残し始めます。続いている声と、対応が効いた声が見分けられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Message Batches が1バッチ10万件か256MBまでで、多くは1時間以内に終わり、24時間で終わらなければ期限切れになること。結果が作成から29日まで取り出せること。料金が半分になること。結果が送った順に返るとは限らず custom_id で結び付けること。custom_id が英数字・ハイフン・アンダースコアの1〜64文字であること | Claude API Docs: Batch processing | 2026-10-28 |
構造化出力を output_config.format で指定すること。数値の制約(minimum/maximum など)、文字列の制約(minLength/maxLength)、0と1以外の minItems に対応しないこと | Claude API Docs: Structured outputs | 2026-10-28 |
| 会話の内容が既定で保持されないこと。バッチの処理が29日の保持でゼロデータ保持の対象外であること。自動の安全の仕組みで印が付いた場合に入出力が最大2年保持されうること | Claude API Docs: API and data retention | 2026-10-28 |
| Apps Script の1回の実行が6分まで、トリガーの1日の合計の実行時間が一般のアカウントで90分・Workspace で6時間であること。UrlFetch の1日の呼び出しの上限 | Google Apps Script: Quotas for Google Services | 2026-10-28 |
上映の期間・回数、料金、設備への投資は、支配人と配給会社との取り決めで決めてください。 本記事は公開の技術資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2194)についてのご相談はこちらから。
