Media > AI活用ユースケース > 品質管理 > 飲食チェーンの店舗が撮った料理の盛り付けの写真を本部の基準の写真と比べ、量・配置・付け合わせの違いを指摘して、店への直しの連絡の下書きを作る

飲食チェーンの店舗が撮った料理の盛り付けの写真を本部の基準の写真と比べ、量・配置・付け合わせの違いを指摘して、店への直しの連絡の下書きを作る

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

店舗が毎日撮って送る料理の盛り付けの写真を、本部の基準の写真と盛り付けの基準書に照らし、量・配置・付け合わせ・器の違いを項目ごとに位置付きで指摘します。品質管理の担当は違いの出た写真だけを確かめ、店への直しの連絡を下書きから送ります。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
宿泊/小売/飲食
対象部門
品質管理
対象業務
内容確認・チェック/比較検討
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
画像認識
主な効果
品質標準化/属人化解消/工数削減
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
150h/月
AI導入後
50h/月
想定削減
67%
年間削減
1,200h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 店舗が、指定のメニューを盛り付けた直後に撮り、チャットの店舗のスレッドに送る
  2. 品質管理の担当が、届いた写真を順に開く
  3. 基準書のPDFを開き、基準の写真と並べて、量・配置・付け合わせ・器を見比べる
  4. 違いがあれば、チャットで店に指摘を書く。違いが無ければ「確認しました」と返す
  5. 指摘した内容を、表計算の一覧に店舗・メニュー・内容で書き写す
  6. 月末に一覧を集計し、スーパーバイザーが店舗の巡回で取り上げる
導入後(After)
  1. 人店舗が、撮影の場所に置いた印の上に皿を置き、真上から1枚撮る。フォームで店舗とメニューを選んで送る
  2. 自動フォームの送信をきっかけに、写真の形式と大きさを確かめる
  3. 自動メニューから基準の写真と基準書の項目を引く
  4. 自動写り具合を確かめ、撮り直しが要るものは店に返す
  5. 自動2枚を比べ、基準書の項目ごとに `ok` / `diff` / `not_visible` を付け、違いの位置を返す
  6. 自動項目の結果から、`pass` / `review` / `retake` を規則で決める
  7. 自動`review` のものについて、店への直しの連絡の下書きを作る
  8. 人品質管理の担当が、`review` のものだけを開き、写真に重ねた枠と下書きを確かめる
  9. 人送ると決めたものに印を付けると、店にメールが送られる
  10. 自動指摘の内容が一覧に残り、月末の集計に使われる
各工程の詳しい説明を読む
  1. 店舗が、指定のメニューを盛り付けた直後に撮り、チャットの店舗のスレッドに送る
  2. 品質管理の担当が、届いた写真を順に開く
  3. 基準書のPDFを開き、基準の写真と並べて、量・配置・付け合わせ・器を見比べる
  4. 違いがあれば、チャットで店に指摘を書く。違いが無ければ「確認しました」と返す
  5. 指摘した内容を、表計算の一覧に店舗・メニュー・内容で書き写す
  6. 月末に一覧を集計し、スーパーバイザーが店舗の巡回で取り上げる

(a)確認が追いつかない。 1日120枚が昼の営業の初めに集中して届きます。午後の会議が入ると、その日の写真は翌日に回り、指摘が届くのは店がそのメニューを何十食も出した後になります。

(b)見る人によって指摘が違う。 付け合わせのパセリが小さいことを指摘する人もいれば、気にしない人もいます。基準書にどこまで書いてあるかを、担当者が覚えている範囲で見ています。

(c)一覧への書き写しが漏れる。 チャットで指摘した後に一覧へ書き写すのを忘れると、月末の集計に出てこず、同じ違いが繰り返されていても気づけません。

(d)撮り方がばらばら。 斜めから、暗い場所で、皿の一部だけ。写真の撮り方が悪いのか盛り付けが違うのかを、担当者がチャットで聞き返すことになります。

  1. 【人】 店舗が、撮影の場所に置いた印の上に皿を置き、真上から1枚撮る。フォームで店舗とメニューを選んで送る
  2. 【自動】 フォームの送信をきっかけに、写真の形式と大きさを確かめる
  3. 【自動】 メニューから基準の写真と基準書の項目を引く
  4. 【自動】 写り具合を確かめ、撮り直しが要るものは店に返す
  5. 【自動】 2枚を比べ、基準書の項目ごとに ok / diff / not_visible を付け、違いの位置を返す
  6. 【自動】 項目の結果から、pass / review / retake を規則で決める
  7. 【自動】 review のものについて、店への直しの連絡の下書きを作る
  8. 【人】 品質管理の担当が、review のものだけを開き、写真に重ねた枠と下書きを確かめる
  9. 【人】 送ると決めたものに印を付けると、店にメールが送られる
  10. 【自動】 指摘の内容が一覧に残り、月末の集計に使われる

8番目が、この設計の分かれ目です。 担当者が見るのは review の写真だけです。pass の写真は一覧で流し見て、店には自動で「確認しました」と返します。

6番目を規則で決めているのも意図してのことです。 付け合わせが1つ欠けたら直しを頼むのか、器の向きの違いは見逃すのかは、メニューと時期によって品質管理部が決めることです。 AIには違いの事実だけを書かせます。

02今回想定するシステム構成

構成図
店舗のタブレット ── 盛り付けのフォーム(店舗・メニュー・写真1枚)
   ▼【トリガー】Google フォームの送信
Google Apps Script ── 写真の形式と大きさの確認
   ▼
Google スプレッドシート ── メニューの基準(基準の写真のファイル・確認の項目)
   ▼
Gemini API ── ①写り具合の確認
   ├── retake ──▶ 店に撮り直しを返す
   ▼
Gemini API ── ②基準の写真との比較(項目ごと ok/diff/not_visible + 位置)
   ▼
Google Apps Script ── 規則で pass/review を決める
   ├── pass ──▶ 店へ「確認しました」
   ▼
Gemini API ── ③直しの連絡の下書き
   ▼
確認の一覧(Google スプレッドシート)
   ▼【品質管理の担当が印を付ける】
Google Apps Script ──▶ 店へメール、指摘の一覧に記録
役割想定する製品代替候補
処理Gemini API(写り具合の確認、基準の写真との比較、直しの連絡の下書き)Claude API、OpenAI API
連携Google フォーム(店舗・メニューの選択と写真の受け取り)Microsoft Forms、自社で用意する撮影用の画面
連携Google Apps Script(呼び出し、規則の判定、一覧への書き込み、メールの送信)Make、Power Automate
連携Google スプレッドシート(メニューの基準、確認の一覧、指摘の一覧)Microsoft Lists
保管Google ドライブ(店の写真と基準の写真)Microsoft OneDrive、SharePoint

チャットで写真を受け取るのをやめ、フォームに変えるのが最初の変更です。 チャットの写真は店舗とメニューが文で書かれるだけで、機械で読めません。フォームならメニューを一覧から選ばせられます。 「ファイルのアップロード」の質問では、ファイルはフォームのオーナーの Google ドライブの新しいフォルダに保存され、回答者は Google アカウントへのログインが必要です。 形式・数・最大サイズを決められます。共有ドライブのフォームや、データ損失防止が有効な場合は使えないので、置き場所を先に確かめます。フランチャイズの店にも、本部が発行する Google アカウントを使ってもらいます。

判定の土台は Gemini API の画像理解です。 対応する形式は PNG、JPEG、WEBP、HEIC、HEIF で、1回の入力に複数の画像を並べられます。店の写真と基準の写真を同時に渡して比べさせます。 物体の検出では、位置を [ymin, xmin, ymax, xmax] の形で、0から1000に正規化した座標で返します。違いのある箇所に枠を付け、担当者は写真に重ねた枠を見て確かめます。

画像を直接入れる場合、指示と合わせたリクエスト全体が20MBまでです。 2枚と指示で収まるよう、タブレットの写真の大きさを中程度にします。

03どうやって実装するのか

Step1

処理の起点を決める

フォームの送信を起点にし、1枚ずつその場で処理します。 1回の送信は写真1枚で、呼び出しは多くて3回です。Apps Script の1回の実行の上限6分に十分収まります。 昼の営業の初めに40店舗から集中して届いても、送信ごとに別々の実行になります。

まとめて1日1回の処理にはしません。 盛り付けの違いは、その日の昼の営業のうちに直してもらうことに意味があります。夕方にまとめて指摘しても、昼の何十食はもう出ています。

もう1つのトリガーは、確認の一覧の編集です。 担当者が「送る」の列に印を付けたことを、スプレッドシートの編集のトリガーで受け、メールを送ります。インストール型のトリガーは作った人のアカウントで動くので、品質管理部の共用のアカウントで作ります。 メールは共用のアカウントから送られることになります。

Step2

入力データを集める

データ中身取得元
店の写真真上から撮った1枚。店舗とメニューと撮影の時刻盛り付けのフォーム(Google ドライブ)
基準の写真メニューごとの、本部が撮った基準の盛り付け。店と同じ撮影の印の上で撮るGoogle ドライブ
確認の項目メニューごとの、器・個数・配置・付け合わせ・ソースの項目と、その許容の幅メニューの基準(スプレッドシート)
店の連絡先店長のメールアドレス店舗の一覧(スプレッドシート)
過去の指摘その店・そのメニューの直近の指摘指摘の一覧(スプレッドシート)

質を決めるのは、確認の項目です。 基準書のPDFをそのままAIに渡すと、AIがどれを確かめるかを選ぶことになり、担当者ごとの違いが、今度はAIの呼び出しごとの違いに変わるだけです。 基準書から確かめる項目を1行ずつ抜き出し、スプレッドシートに持たせます。

メニュー項目ID項目基準許容
唐揚げ定食K01器白の角皿(大)なし
唐揚げ定食K02唐揚げの個数5個なし
唐揚げ定食K03キャベツの位置皿の奥側なし
唐揚げ定食K04キャベツの量基準の写真と同程度見た目で明らかに少なければ違い
唐揚げ定食K05付け合わせレモン1切れ、パセリなし
唐揚げ定食K06マヨネーズ小皿に入れて右手前なし

「許容」の列が、品質管理部の判断を表に出す場所です。 キャベツの量は写真で数えられないので、「明らかに少なければ違い」と幅を書いておきます。 幅を書かずに渡すと、AIは少しの差でも違いと答えます。

過去の指摘はAIに渡しません。 「この店は前回唐揚げが足りなかった」と知らせると、今回も足りないと答えやすくなります。過去との比較は、スクリプトが一覧で行います。

Step3

データの取得方法を決める

フォームの送信のイベントから、アップロードされたファイルのIDと、選ばれた店舗・メニューが取れます。Apps Script で Google ドライブから店の写真を読み、メニューで基準の写真のファイルと確認の項目を引きます。

取るものどこから何に使うか
店の写真フォームの回答のファイル比較の対象
基準の写真メニューで引く Google ドライブのファイル比較の基準
確認の項目メニューの基準の、そのメニューの行指示に差し込む項目の一覧
店長の宛先店舗の一覧連絡の送り先

基準の写真は、メニューを変えるたびに撮り直します。 器や付け合わせを変えたのに基準の写真が古いままだと、全店が「違い」と出ます。 メニューの基準の行に、基準の写真の撮影日と有効になる日を持たせます。

枠を重ねた表示は、Apps Script のウェブアプリで作ります。 doGet で HTML を返すウェブアプリにし、店の写真の上に box_2d の位置で枠を描きます。座標は0から1000に正規化されているので、表示する画像の幅と高さに掛けて1000で割れば、そのまま枠の位置になります。 実行のユーザーは「アクセスしたユーザー」にし、写真のフォルダを見られる人だけが開けるようにします。確認の一覧の各行には、このウェブアプリへのリンクを写真のIDを付けて置きます。

基準の写真も同じ画面の左に並べます。 担当者は左右を見比べ、枠の位置の基準側を確かめます。チャットで写真と基準書のPDFを行き来していた時間の大半は、この並べた表示で消えます。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … PNG、JPEG、WEBP、HEIC、HEIF のどれかであることを確かめます
  2. 大きさの確認 … 2枚と指示を合わせて20MBを超えないよう、大きすぎるものは縮めます
  3. メニューの有効性の確認 … 選ばれたメニューが、その日に有効な基準を持っているかを確かめます。持っていなければ「基準なし」で止めます
  4. 重複の確認 … 同じ店・同じメニュー・同じ日の写真が2枚あれば、後のものを使います

撮影の印を店に置いてもらうのが、前処理の代わりになります。 調理台の端に、皿を置く位置と向きを示すシールを貼ります。皿の向きがそろえば、「キャベツが奥」の判定がぶれません。 斜めから撮った写真を後から補正するより、撮る位置をそろえるほうが確実です。

Step5

AIに処理させる

させるのは3つの段階です。 写り具合の確認、基準の写真との比較、直しの連絡の下書きです。1つ目で止まったものは比較に進めません。

1つ目の段階

見るもの判定の仕方判断できないときの扱い
撮影の角度真上から撮られているか斜めなら retake
写っている範囲皿の全体が写っているか一部が切れていれば retake
明るさ・ぶれ具材の形が分かるか分からなければ retake
メニュー選ばれたメニューと料理が合っているか明らかに違えば wrong_menu

2つ目の段階

確認の項目の1行ずつについて、次を返させます。

返すもの中身
statusok(基準どおり)/diff(違う)/not_visible(写真では判断できない)
observed写真で見えたもの(例:「唐揚げが4個見える」)
box_2d違いのある箇所の位置
evidence判断の根拠にした見た目

diff と not_visible の区別が、この構成でいちばん大事です。 唐揚げの1個がキャベツの陰に隠れて見えないのか、無いのかは、写真によっては分かりません。「4個見える」とだけ書かせ、5個目が隠れている可能性があれば not_visible にします。 店に「足りない」と伝えるのは、はっきり足りないと分かるときだけです。

3つ目の段階

diff の項目だけを渡し、店長あての連絡の下書きを作らせます。下書きに入れるのは、項目、基準、写真で見えたもの、基準書のどこを見ればよいかです。 叱る言葉や、理由の推測は入れさせません。

させないこと理由
確認の項目にない点の指摘担当者ごとの違いを、AIの違いに置き換えるだけになる
グラムの見込み写真から重さは分からない
味・温度・鮮度の評価写真から分からない
違いの理由の推測「忙しかったのでは」は店との関係を損なう
直しを頼むかの判断規則と担当者が決める
Step6

指示内容を固定する

あなたは飲食チェーンの本部で、店舗の盛り付けを基準と比べる立場です。
1枚目は本部の基準の盛り付け、2枚目は店舗が撮った盛り付けです。
2枚の写真に写っているものだけを見て、下の確認の項目を1つずつ判定してください。

【メニュー】{menu_name}
【確認の項目】
{check_items}
(項目ID、項目、基準、許容 の順に並んでいます)

【status の選び方】
- ok .......... 基準どおり。許容の範囲内の差は ok
- diff ........ 基準と違うことが写真ではっきり分かる
- not_visible . 写真では判断できない(隠れている、写っていない、ぼけている)
迷ったときに diff を選ばないでください。迷ったら not_visible です。

【厳守事項】
- 確認の項目にない点については書かないでください。見栄えの評価もしないでください。
- 個数は、見えている数を observed にそのまま書いてください。
  隠れている可能性がある場合は、見えない分を足したり引いたりせず、not_visible にしてください。
- 量を重さ(グラム)で見込まないでください。基準の写真との見た目の差だけを書いてください。
- 味、温度、鮮度、衛生については書かないでください。
- diff のときは、違いのある箇所の位置を box_2d に [ymin, xmin, ymax, xmax] で
  0〜1000 に正規化して入れてください。
- evidence には、判断の根拠にした見た目を短く書いてください。
- 違いが生じた理由は書かないでください。

「迷ったら not_visible」を明記しないと、diff が増えます。 違いを探すように頼まれると、AIは小さな差を違いとして挙げる方向に寄ります。店に誤って直しを頼むほうが、見逃すより店との関係に響くので、迷いを not_visible に寄せます。

「確認の項目にない点については書かない」も同じ理由です。 「ご飯の盛り方がやや平たい」のような指摘は、基準書に書かれていない限り、担当者が書いていた個人の好みと同じです。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Gemini API の構造化出力では、response_format に mime_type: "application/json" と JSON Schema を渡し、status を enum で3つに限ります。公式の案内では、出力はJSONとして正しくても、値はアプリケーションの側で必ず検証するようにとされています。

{
  "photo_quality": "good | retake | wrong_menu",
  "checks": [
    { "item_id": "K02", "status": "ok | diff | not_visible",
      "observed": "", "evidence": "", "box_2d": [0, 0, 0, 0] }
  ]
}

1つ目の理由は、項目ごとの結果と、店への判断を別の層に置けることです。 checks はAIが埋め、verdict はスクリプトが規則で決めます。

verdict条件
retakephoto_quality が retake か wrong_menu
reviewdiff が1つでもある、または not_visible が項目の半分以上
pass上のどれにも当たらない

2つ目は、スクリプトで検証できることです。 返ってきた item_id が確認の項目と1対1で対応しているか、box_2d が0から1000の範囲か、diff に box_2d があるかを確かめます。項目の数が合わなければ review にします。 AIが1つの項目を読み飛ばしたまま pass になるのを防ぎます。

3つ目は、集計に使えることです。 item_id ごとの diff の数を店舗とメニューで数えれば、どの店でどの項目が繰り返し違うかが、月末を待たずに分かります。

Step8

システムへ連携する

つなぎ先方式内容
Google フォームフォームの送信のトリガー写真と、店舗・メニューを受け取る
メニューの基準スプレッドシートの読み取り基準の写真と確認の項目を引く
Gemini APIApps Script から呼び出し写り具合、比較、下書き
確認の一覧スプレッドシートへの書き込み写真へのリンク、項目ごとの結果、下書き、「送る」の列
店長メール直しの連絡、撮り直しの依頼、確認済みの返信
指摘の一覧スプレッドシートへの書き込み送った指摘を店舗・メニュー・項目IDで残す

pass の「確認しました」は自動で返します。 店にとっては、写真を送ったことが本部に届いたという合図です。review の連絡は、担当者が印を付けるまで送りません。

メールの送信には1日の上限があります。 Google Workspace のアカウントで1日あたり1,500名の受信者まで、とされています。1日120枚に対して、確認済みの返信、撮り直し、直しの連絡を合わせても収まります。店舗ごとに1日1通にまとめると、さらに余裕が出ます。

Step9

人が確認する

品質管理の担当は、review の行だけを開きます。 確認の一覧には写真に box_2d の枠を重ねた画像へのリンクと、項目ごとの結果、下書きが並びます。

  1. 枠を見る … 違いと出た箇所が本当に違うかを、写真で確かめます
  2. not_visible を見る … 店に撮り直しを頼むか、見送るかを決めます
  3. 下書きを直す … 店の事情を知っている場合は、言い方を整えます
  4. 「送る」に印を付ける … 印を付けると、その行の連絡が店に送られます
  5. 判定を覆したら記録する … diff を ok に直したら、その理由を一言残します

5番目を省かないでください。 担当者が覆した項目が多ければ、確認の項目の基準か許容の幅が実態と合っていません。 メニューの基準を直す材料になります。

pass の写真も、週に1回は抜き取りで見ます。 店舗ごとに数枚を選び、AIが見逃した違いが無いかを確かめます。見逃しは review の確認だけでは見つからないので、抜き取りが唯一の手がかりです。見逃しが見つかった項目は、許容の幅を狭めるか、指示の書き方を直します。

スーパーバイザーは、店舗ごとの diff の推移を巡回の前に見ます。 同じ項目が2週続けて出ている店は、写真での指摘では直らない理由(器の在庫、仕込みの量、新人の配置)がある可能性が高く、巡回で話を聞く対象になります。

Step10

例外に対処する

起きること対応
写真が斜め・暗い・皿が切れているretake。店に撮り直しを返す。昼の営業中なら次の1食で撮り直してもらう
選んだメニューと料理が違うwrong_menu。店に選び直しを頼む
基準が有効でないメニュー「基準なし」で止める。品質管理部に基準の写真の撮り直しを頼む
季節の付け合わせの切り替え期間メニューの基準に有効になる日を持たせ、切り替えの日の前後は両方の基準を許す
店が意図して変えた(食材の欠品で代替)店のフォームに「代替あり」の欄を置き、印があれば review にして担当者が見る
1日に同じメニューを2回送った後のものを使い、前のものに印を付ける
店の写真に湯気や照明の反射が強い具材の形が分からなければ retake。撮影の場所の照明を店ごとに確かめる
ソースのかけ方など見え方が揺れる項目許容の幅を広めに書くか、項目から外して巡回で見る
盛り付けの基準そのものが店の器に合わない店の器が本部の指定と違う。器の発注の問題として、商品開発へ回す
締め切りの時刻を過ぎても写真が届かない昼の営業の初めから2時間たっても届かない店を、一覧の先頭に「未提出」で出す
Gemini API が応答しない確認の一覧に「未処理」で残し、1時間おきの時間主導型のトリガーで再度処理する。3回失敗したら担当者が目で見る

4行目と5行目は、AIの問題ではなく基準の問題です。 季節で付け合わせが変わる時期、食材が届かず代替した日は、基準どおりでないことが正しい状態です。 その情報がどこから来るかを、先に決めておきます。

Step11

記録を残す

  • 店の写真と基準の写真(そのときに有効だった基準の写真のファイル)
  • 指示の全文と、返ってきたJSONの全文
  • verdict と、担当者が覆した項目とその理由
  • 店に送った連絡の本文と、送った日時
  • 店舗・メニュー・項目IDごとの diff の数の推移

「そのときに有効だった基準の写真」を残すのは、基準が変わるからです。 付け合わせを変えた後に過去の指摘を見直すと、当時の基準が分からなければ、その指摘が正しかったかを判断できません。

覆した理由は、短い選択肢で残します。 「隠れていた」「許容の範囲」「代替あり」「基準が古い」の4つ程度にしておくと、月末に数えられます。「隠れていた」が多ければ撮り方、「許容の範囲」が多ければ許容の幅、「基準が古い」が多ければ基準の写真の更新の手順を直します。 覆した理由が、そのまま次に直す場所を教えてくれます。

04実装レベルの3段階

最小構成:基準の写真と店の写真を手で Gemini の画面に貼り、項目ごとに判定させる / 1枚ごとの比較
半自動化:上記+フォームで写真を集め、スクリプトで Gemini API を呼んで一覧に書き出す / 比較の一覧化と、撮り直しの返信
本格構成:上記+規則で `pass` と `review` を分け、直しの連絡の下書きと送信、指摘の一覧への記録まで行う / 確認、連絡、記録の全体

半自動化で、1枚3分が1.5分程度になります。 見比べは自動になりますが、全件の結果を見て、連絡を書き、一覧に書き写す作業が残ります。本格構成で1分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を2週間見ると、diff が出やすい項目と、許容の幅が狭すぎる項目が分かります。そこを直してから連絡を自動にするほうが、店への誤った指摘が減ります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
4 名
月間件数
3,000 件
1件あたり現在時間
3 分
1件あたり導入後時間
1 分
現在  3,000件 × 3分 ÷ 60 = 150 時間/月
導入後 3,000件 × 1分 ÷ 60 = 50 時間/月
月間削減時間
100h
削減率
67%
年間削減時間
1,200h
年間金額換算(時間単価2,800円)
336万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 定食・丼・ランチプレートなど盛り付けの決まったメニューを数十店舗で出しており、本部の品質管理やスーパーバイザーが店から送られる写真で盛り付けを確かめている飲食チェーン。メニューごとに盛り付けの基準書と基準の写真がある場合。店が毎日決まったメニューを撮って送る運用ができる場合。ホテルの朝食ビュッフェの盛り付けや、惣菜の売場の盛り付けを本部が写真で見ている場合にも当てはまります。
向いていない
  1. 店舗が数店で、料理長が毎日すべての店の料理を見られる場合。盛り付けを料理人の裁量に任せている業態で、基準の写真が無い場合。グラム単位の量が問題になる場合(写真ではグラムは測れません)。なお、味・温度・衛生の確認は、この構成では代替できません。

07最小構成で試す方法

  1. 売れ筋のメニューを1つ選び、基準書から確認の項目を5〜6行に抜き出す
  2. 先週チャットで届いた、そのメニューの写真を30枚集める(担当者が指摘したものを数枚入れる)
  3. 手元の Gemini の画面に、基準の写真と店の写真を2枚並べて貼り、第7章の指示を貼り付ける
  4. 項目ごとの判定を、当時の担当者の指摘と並べる
出てきた内容判断
当時の指摘と同じ違いが出たフォームとスクリプトの連携に進む
隠れた具材を「足りない」とする指示の「迷ったら not_visible」を強める。撮る位置をそろえる
項目にない点を指摘してくる指示の書き方で直る。構成は有効
斜めの写真で配置の判定がぶれる撮影の印が先。 AIの問題ではない

4行目が出たら、撮影の印を2〜3店で試してから同じ30枚分を撮り直してください。 撮り方をそろえると判定がどれだけ変わるかが分かります。

08実装時につまずきやすいポイント

問題対策
隠れた具材を「足りない」とする迷ったら not_visible。 見えた数をそのまま書かせる
項目にない見栄えを指摘する確認の項目だけを渡し、それ以外は書かせない
基準書のPDFをそのまま渡す項目を1行ずつ表に直す。 許容の幅も書く
斜めの写真で配置がぶれる撮影の印で皿の位置と向きをそろえる
メニューを変えたのに基準の写真が古い基準に撮影日と有効になる日を持たせる
季節の切り替えで全店が diff切り替えの前後は両方の基準を許す
食材の代替が違いと出るフォームに「代替あり」の欄を置く
リクエストが大きすぎて失敗する2枚と指示で20MBまで。写真の大きさを中程度に
共用のアカウントの人が異動して止まるトリガーは作った人のアカウントで動く。部署の共用のアカウントで作る
店への連絡が自動で飛ぶreview は担当者の印の後にだけ送る

上の2行が、この構成の失敗のほとんどです。 どちらも、AIが「違いを探す」方向に寄ることから来ます。 迷いを not_visible に寄せ、項目を表で縛ることで、指摘が店にとって受け入れられるものになります。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 料理の写真、店舗名、メニュー、店長のメールアドレスです。個人の情報はほとんど含みません。 ただし、撮影の場所によっては従業員の顔や手元が写ります。

  1. 写真に人を写さない … 撮影の印を調理台の端に置き、皿だけが写る角度で撮ると決めます。人が写った写真は、確認の一覧で削除します
  2. 新メニューの写真の扱い … 発売前のメニューの基準の写真は、社外に出ていない情報です。Gemini API の利用規約では、無料の枠では送った内容が製品の改善に使われ、人が読むことがあるとされ、有料の枠では製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録するとされています。有料の枠で使い、写真のフォルダを見られる人を品質管理部と商品開発に絞ります
  3. 店への指摘は人が送る … review の連絡は担当者の印の後にだけ送ります。フランチャイズの店との関係に関わるため、自動では送りません
  4. この構成は衛生と味の確認を代替しません … 見るのは写真に写る盛り付けだけです。異物、温度、加熱の状態、味は、店の確認と本部の巡回で見ます
  5. 指摘の集計を評価に直結させない … 店舗ごとの diff の数は、撮り方や基準の幅の影響を受けます。数だけで店の評価を決めず、スーパーバイザーが巡回で確かめます

誤りが起きた場合のリスクは、正しく盛った店に直しを頼むことと、違いを見逃すことの2つです。 前者は迷いを diff に寄せると起き、後者は not_visible を pass に混ぜると起きます。not_visible が項目の半分以上なら review に回す規則で、両方を防ぎます。

10まず何から始めるか

1週目:確認の項目を表にする

売れ筋の5メニューの基準書から、確かめる項目を1行ずつ抜き出し、基準と許容の幅を書きます。品質管理の担当とスーパーバイザーの4名で、許容の幅をそろえます。 ここで担当者ごとの違いが表に出ます。

2週目:30枚で試す

1メニューについて、先週届いた写真30枚を手元の Gemini の画面で判定させ、当時の指摘と並べます。隠れた具材を「足りない」としていないかを最優先で見ます。

3週目:撮影の印を配る

5店舗に撮影の印を貼ってもらい、フォームで写真を送ってもらいます。チャットでの受け取りは、この5店舗だけ止めます。

4週目:フォームから一覧までをつなぐ

フォームと Apps Script で、写真を受け取り、Gemini API を呼び、確認の一覧に書き出すところまで作ります。この時点では店への連絡を自動にせず、担当者が一覧から手で送ります。

2か月目: 規則で pass と review を分け、pass の確認済みの返信を自動にします。メニューを20に広げます。3か月目以降: 直しの連絡の下書きと印での送信を足し、全40店舗に広げます。担当者が覆す項目の割合が落ち着き、許容の幅の見直しが月1回の作業になった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。1回の入力に複数の画像を並べて渡せること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBに制限されること。物体の検出で位置を box_2d として [ymin, xmin, ymax, xmax] の形で0〜1000に正規化して返すことGemini API: Image understanding2026-10-07
構造化出力を /v1beta/interactions の response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。出力がJSONとして正しくても値はアプリケーションの側で検証するよう案内されていることGemini API: Structured output2026-10-07
インストール型トリガーにフォームの送信、スプレッドシートの編集、時間主導型があること。トリガーは作った人のアカウントで動くことGoogle Apps Script: Installable triggers2026-10-07
1回の実行時間が6分まで、メールの受信者が Google Workspace のアカウントで1日1,500名までであることGoogle Apps Script: Quotas for Google Services2026-10-07
ファイルのアップロードの質問で、ファイルがフォームのオーナーの Google ドライブの新しいフォルダに保存され、回答者は Google アカウントへのログインが必要なこと。形式・数・最大サイズを設定できること。共有ドライブのフォームやデータ損失防止が有効な場合は使えないことGoogle ドキュメント エディタ ヘルプ: フォームでファイルをアップロードする2026-10-07
ウェブアプリには doGet か doPost が要り、HtmlOutput か TextOutput を返すこと。「アクセスしたユーザーとして実行」ではその人として動くことGoogle Apps Script: Web Apps2026-10-07
無料の枠では送った内容が製品の改善に使われ、人が読むことがあること。有料の枠ではプロンプトや画像などを製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録することGemini API Additional Terms of Service2026-10-07

フランチャイズの店に写真の提出を求める範囲と、指摘の扱いは、加盟店との契約と本部の運用の決まりに合わせてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0663)についてのご相談はこちらから。

AI活用について相談する
目次