レシピや仕入品を変えたときに、メニューのアレルゲン一覧表が変更に追随しているかを点検する
仕入品の規格書が改訂されたときやレシピを変えたときに、新旧の規格書を Claude に読ませ、アレルゲン29品目の記載の変化を判定させます。影響するメニューを引き、一覧表の記載と食い違う箇所を承認前に洗い出します。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/n8n/Power Automate/Python
- 対象業界
- 宿泊/小売/飲食
- 対象部門
- 品質管理
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 属人化している/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 仕入先から届いた新しい規格書を、担当者が共有フォルダに保存する
- 担当者が新しい規格書のアレルゲンの欄を読み、29品目のどれを含むかを確かめる
- 古い規格書を開き、並べて見比べて、変わった品目を探す
- レシピ管理でその仕入品を使っているメニューを検索し、一覧に書き出す
- 書き出したメニューについて、アレルゲン一覧表の該当する行を開き、印が変更後の中身と合っているかを見る
- 直す必要があるマスを書き出し、上長の承認を得て一覧表を更新する
- 店頭とWebの一覧表を差し替え、店舗へ連絡する
- 人担当者が新しい規格書を「規格書受付」フォルダに保存する。購買部は代替品を手配したら、代替品の登録の画面に記録する
- 自動保存または登録をきっかけに Power Automate が動き、仕入品コードと旧版の規格書を引く
- 【AI】 Claude API が新旧の規格書を読み、29品目ごとに「含む/含まない/記載なし/読めない」と、混入の可能性の記載を根拠付きで返す
- 自動旧版との差を品目ごとに出す
- 自動中継のプログラムがレシピを最終のメニューまで展開し、影響するメニューを洗い出す
- 自動メニューごとに、変更後の29品目と一覧表の印を突き合わせ、食い違うマスを出す
- 自動食い違いを「印の追加が必要」「印を外せる候補」「判断できない」に分け、品質管理部の点検の一覧に載せる
- 人担当者が、根拠の文字列と規格書の該当ページを見て、1件ずつ確かめる
- 人「判断できない」のものは仕入先へ問い合わせる
- 人上長が一覧表の修正を承認し、担当者が一覧表を更新する
各工程の詳しい説明を読む
- 仕入先から届いた新しい規格書を、担当者が共有フォルダに保存する
- 担当者が新しい規格書のアレルゲンの欄を読み、29品目のどれを含むかを確かめる
- 古い規格書を開き、並べて見比べて、変わった品目を探す
- レシピ管理でその仕入品を使っているメニューを検索し、一覧に書き出す
- 書き出したメニューについて、アレルゲン一覧表の該当する行を開き、印が変更後の中身と合っているかを見る
- 直す必要があるマスを書き出し、上長の承認を得て一覧表を更新する
- 店頭とWebの一覧表を差し替え、店舗へ連絡する
(a)規格書の書式が仕入先ごとに違う。 29品目の表で○×が付いているもの、原材料欄の末尾に「(一部に小麦・卵・大豆を含む)」とだけ書かれているもの、別紙に分かれているものがあります。2番で「どこを読めばよいか」を探すところから始まります。
(b)「書かれていない」を「含まない」と読んでしまう。 準ずるもの20品目までを網羅した表になっていない規格書では、たとえばごまやゼラチンについて何も書かれていないことがあります。急いでいると、書かれていないことを「含まない」と読んで先に進みます。
(c)影響するメニューを引き漏らす。 4番の検索は仕入品コードで行いますが、ソースの中にソースを使う2段階のレシピでは、元の仕入品から最終のメニューまでたどり着けないことがあります。デミグラスソースを使った煮込みハンバーグのソースを、別のメニューにかけている、という形です。
(d)代替品が一覧表に届かない。 欠品の代替品は購買部の手配で動き、品質管理部に知らせが来るのが切り替えの後になることがあります。数週間だけ一覧表と中身が食い違い、元に戻ったときに誰も気づかない、ということが起きえます。
- 【人】 担当者が新しい規格書を「規格書受付」フォルダに保存する。購買部は代替品を手配したら、代替品の登録の画面に記録する
- 【自動】 保存または登録をきっかけに Power Automate が動き、仕入品コードと旧版の規格書を引く
- 【AI】 Claude API が新旧の規格書を読み、29品目ごとに「含む/含まない/記載なし/読めない」と、混入の可能性の記載を根拠付きで返す
- 【自動】 旧版との差を品目ごとに出す
- 【自動】 中継のプログラムがレシピを最終のメニューまで展開し、影響するメニューを洗い出す
- 【自動】 メニューごとに、変更後の29品目と一覧表の印を突き合わせ、食い違うマスを出す
- 【自動】 食い違いを「印の追加が必要」「印を外せる候補」「判断できない」に分け、品質管理部の点検の一覧に載せる
- 【人】 担当者が、根拠の文字列と規格書の該当ページを見て、1件ずつ確かめる
- 【人】 「判断できない」のものは仕入先へ問い合わせる
- 【人】 上長が一覧表の修正を承認し、担当者が一覧表を更新する
8番目で人が見るのは、食い違いが出たものだけです。 規格書が変わっても、アレルゲンの記載に変化が無ければ点検の一覧には「変化なし」として並ぶだけです。時間を使うのは、印の追加が必要なものと判断できないものです。
7番目で「印の追加が必要」を先頭に置くのは、誤りの重さが違うからです。 含むのに印が無いのは、お客様の健康に直結します。含まないのに印が残っているのも正確さを欠きますが、急ぐ順は追加が先です。
02今回想定するシステム構成
規格書の改訂(PDF)/レシピの変更/代替品の登録 ▼【トリガー】フォルダへの保存・登録の記録 Power Automate ├──▶ 仕入品コードと旧版の規格書を引く ▼ Claude API ── 新旧の規格書を読み、29品目の記載を判定 │ 含む/含まない/記載なし/読めない、混入の可能性、根拠の文字列とページ ▼ 中継のプログラム(Python) ├──▶ 旧版との差を品目ごとに出す ├──▶ レシピを最終のメニューまで展開(ソースの中のソースも) └──▶ メニューごとに一覧表の印と突き合わせる ▼ 点検の一覧(追加が必要/外せる候補/判断できない) ▼ 【品質管理の担当者が確認 → 上長が承認】 ▼ アレルゲン一覧表の更新 ── 店頭・Webへ掲載
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(規格書の読み取りと29品目の判定) | OpenAI API、Gemini API |
| 差異計算 | Python(レシピの展開と一覧表との突き合わせ) | Google Apps Script |
| 連携 | Power Automate(フォルダの監視と通知) | Make、n8n |
| 保管 | SharePoint(規格書の新旧と点検の記録) | Box、Google Drive |
| レシピ管理 | 既存のレシピ管理システム(原材料とメニューの対応の書き出し) | 表計算で管理しているレシピ表 |
レシピ管理と一覧表は、新しく足すものではありません。 この構成は、レシピ管理から原材料とメニューの対応を読み、一覧表の印を読むだけで、どちらにも書き込みません。 一覧表の更新は、承認の後に担当者が行います。
規格書のPDFは、Claude API にそのまま渡します。 Claude のドキュメントでは、PDFの中の文章・画像・図表・表について質問でき、1回のリクエストの上限は32MB、ページ数は600ページまで(リクエストのコンテキストウィンドウが100万トークン未満の場合は100ページまで)とされています。パスワードや暗号化のかかったPDFは扱えません。 また、各ページは画像としても処理されるため、表の罫線と○×の位置関係も読み取りの材料になります。規格書のアレルゲン欄は表になっていることが多く、ここが効きます。
返答の形は、構造化出力で固定します。 Claude のドキュメントでは、output_config.format にJSONスキーマを指定すると、返答がスキーマに従うよう制約されるとされています。enum が使えるので、判定の値を4つに限れます。 オブジェクトには additionalProperties: false を指定する必要があり、minLength のような文字列の制約は使えません。品目の数が29であることは、スキーマではなく中継のプログラムの側で確かめます。
03どうやって実装するのか
処理の起点を決める
起点は3つあり、どれも同じ流れに入れます。
| 起点 | きっかけ | 取るもの |
|---|---|---|
| 規格書の改訂 | 「規格書受付」フォルダへのPDFの保存 | 新しい規格書と、同じ仕入品コードの旧版 |
| レシピの変更 | レシピ管理からの変更の書き出し(毎日1回) | 変わったメニューと、追加・削除された原材料 |
| 代替品への切り替え | 購買部が代替品の登録の画面に記録 | 元の仕入品と代替品の規格書、切り替えの期間 |
3つ目の代替品を、必ず起点に入れてください。 第3章の(d)のとおり、代替品は購買部の手配で動くので、品質管理部を通らずに店舗へ届くことがあります。購買部の記録を起点にすると、切り替えた時点で点検が始まります。 登録には「いつまでの代替か」を持たせ、元に戻す日にもう一度同じ点検を動かします。
レシピの変更は、レシピ管理の変更を1日1回まとめて書き出して起点にします。メニューの改定は発売日が決まっているので、発売日の2週間前までに点検が終わるよう、書き出しの時点で発売日を持たせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 規格書(新) | 仕入先の規格書PDF。原材料、アレルゲンの表、製造工程の注意書き | 規格書受付フォルダ |
| 規格書(旧) | 同じ仕入品コードの直前の版 | 規格書の保管フォルダ |
| 対象品目の一覧 | 特定原材料9品目と準ずるもの20品目の名前と、表記の揺れ | 品質管理部が持つ品目マスタ |
| レシピ | メニュー → 原材料・中間品(ソース等)→ 仕入品コードの対応 | レシピ管理の書き出し |
| アレルゲン一覧表 | メニュー150品 × 29品目の印と、混入の可能性の印 | 一覧表のExcel |
| 共用の設備 | 揚げ油を共用するメニューの組み、調理器具の共用 | 品質管理部が持つ一覧 |
対象品目の一覧は、指示文に書き込まずにマスタとして持ちます。 消費者庁のページでは、2023年3月にくるみ、2026年4月1日にカシューナッツが特定原材料に加えられたこと、2024年3月に準ずるものにマカダミアナッツが加わり、まつたけが削除されたことが示されています。品目は変わるものです。 指示文に29品目を書き込むと、次の改正のときに指示文と一覧表の列がずれます。
表記の揺れも同じマスタに持たせます。 「乳」を「乳成分」「乳製品」、「えび」を「海老」と書く規格書があります。揺れを持たないと、書いてあるのに「記載なし」になります。
共用の設備の一覧は、規格書からは分からない混入の可能性のためです。 仕入品が変わらなくても、同じ揚げ油でえびの天ぷらを揚げていれば、そのフライドポテトには混入の可能性があります。 これは店舗の調理の問題で、規格書を読んでも出てきません。
データの取得方法を決める
| 取るもの | どこから | 取り方 |
|---|---|---|
| 新旧の規格書 | SharePoint のフォルダ | ファイル名の仕入品コードで旧版を引く |
| レシピ | レシピ管理 | 原材料とメニューの対応をCSVで毎日書き出す |
| 一覧表の印 | 一覧表のExcel | メニューコードと品目名で印を読む |
| 品目マスタ | 品質管理部のExcel | 品目名、区分(特定原材料/準ずるもの)、表記の揺れ |
旧版の規格書は、仕入品コードで引けるように保管します。 ファイル名を「仕入品コード_版の日付.pdf」にそろえ、新しい版を受け付けたら旧版を保管フォルダへ移します。 旧版が引けないときは、差を出さずに新しい版だけで判定し、一覧表との突き合わせは行います。
レシピは、中間品を含めて展開できる形で書き出します。 メニューからソース、ソースから仕入品、という2段階以上の対応を、親子の組の表として持たせます。 中継のプログラムがこれを最終のメニューまでたどります。
AIへ渡す前に整形する
- PDFの確認 … パスワードや暗号化のかかったPDFは扱えないため、受け付けた時点で開けるかを確かめ、開けないものは仕入先に解除した版を依頼します
- サイズとページ数の確認 … 1回のリクエストは32MBまでです。規格書は数ページのことが多いものの、製品カタログをまとめて送ってくる仕入先は、該当の品目のページだけに分けます
- 仕入品コードの特定 … ファイル名のコードで仕入品マスタを引きます。コードが付いていないファイルは、担当者に戻します
- レシピの展開 … 中継のプログラムが、仕入品コードから最終のメニューまでをたどって一覧にします
- 共用の設備の付け足し … 影響するメニューと揚げ油を共用するメニューも、点検の対象に加えます
- 代替品の期間の記録 … 代替品は切り替えの開始日と終了予定日を持たせ、終了予定日に同じ点検をもう一度動かす予約を入れます
4番目を人の検索に戻さないでください。 第3章の(c)の引き漏らしは、ここで起きていました。親子の組をたどるのはプログラムの仕事で、AIに「どのメニューに使われていそうか」を聞くものではありません。
AIに処理させる
させるのは、新旧の規格書について、29品目それぞれの記載を読み、次の4つのどれに当たるかを判定することです。
| 判定 | 意味 | 例 |
|---|---|---|
contains | 含むと書かれている | 表で○、原材料欄に「(一部に小麦を含む)」 |
not_contained | 含まないと明記されている | 表で×や「不使用」 |
not_stated | その品目について何も書かれていない | 準ずるものの表が無い規格書のごま |
unreadable | 書かれているが読み取れない | スキャンがつぶれている、○×の位置が崩れている |
あわせて、混入の可能性の記載(「本品製造工場では○○を含む製品を製造しています」など)を品目ごとに別に読みます。含むかどうかと、混入の可能性とは、一覧表でも別の印です。
| させないこと | 理由 |
|---|---|
not_stated を not_contained として扱うこと | 確かめていない「含まない」が一覧表に載る |
| 原材料名からの推測 | 「ホワイトソース」だから乳を含む、と推測で埋めると、根拠が規格書から離れる |
| 一覧表の修正の判断 | 承認するのは品質管理の担当者と上長 |
| 影響するメニューの推測 | レシピの展開はプログラムが行う |
| お客様が食べられるかの判断 | 一覧表の情報と、個々のお客様への説明は別のもの |
2行目は、いちばん起きやすい誤りです。 原材料名に「バター」とあれば乳を含むのは確かに正しいのですが、AIが自分の知識で埋めた contains と、規格書に書かれた contains を区別できなくなります。 原材料名から読み取れる場合は、判定は contains のまま根拠に原材料名をそのまま写させ、根拠の種類を「アレルゲン表示」「原材料名」の2つで分けます。
指示内容を固定する
あなたは外食チェーンの品質管理部で、仕入品の規格書を読む担当者です。
渡された規格書に書かれていることだけで判定してください。
あなたの知識で補わないでください。
【判定する品目】{allergen_master}
(品目名と表記の揺れの一覧です。この一覧のすべての品目について判定してください)
【status の選び方】
- contains ........ 含むと書かれている
- not_contained ... 含まない、不使用と明記されている
- not_stated ...... その品目について何も書かれていない
- unreadable ...... 書かれているが読み取れない
表や一覧にその品目の行が無い場合は not_stated です。
not_stated と not_contained を取り違えないでください。迷ったら not_stated にしてください。
【混入の可能性】
製造工程の注意書き(同じ工場・同じラインで製造している等)に書かれた品目を、
contamination に別に記録してください。status には反映しないでください。
【厳守事項】
- 原材料名から含むと読み取れる場合は contains とし、evidence_type を
"ingredient_name" にしてください。アレルゲンの表示から読んだ場合は
"allergen_label" にしてください。
- 原材料名に書かれていない成分を、料理の一般的な作り方から推測しないでください。
- evidence には、判定の根拠にした文字列をそのまま写し、page にページ番号を入れてください。
not_stated の場合、evidence は空にしてください。
- 規格書が複数の製品を含む場合は、仕入品名 {item_name} の部分だけを読んでください。
- 一覧表を直すべきか、お客様が食べられるかは書かないでください。
【規格書(新)】添付PDF 1
【規格書(旧)】添付PDF 2
「表に行が無い場合は not_stated」を明記しないと、not_contained が増えます。 特定原材料の9品目だけの表を載せた規格書で、準ずるものについて何も書かれていないとき、何も言わなければ「表に無い=含まない」と読みます。 表が9品目しかないことは、残りの20品目について何も語っていません。
「迷ったら not_stated」は、誤りを安全な側に寄せるための一文です。 not_stated は問い合わせで解消できますが、誤った not_contained は、一覧表から印が外れるまで誰も気づきません。
出力形式を固定する
次の形のJSONで受け取ります。 構造化出力でスキーマを指定し、status と evidence_type を enum にします。
{
"item_code": "SC-0412",
"item_name": "デミグラスソース(業務用)",
"versions": {
"new": {
"allergens": [
{ "name": "小麦", "status": "contains | not_contained | not_stated | unreadable",
"evidence_type": "allergen_label | ingredient_name | none",
"evidence": "", "page": 1 }
],
"contamination": [{ "name": "", "evidence": "", "page": 0 }]
},
"old": { "allergens": [], "contamination": [] }
},
"other_products_in_file": false
}
1つ目の理由は、新旧の差をプログラムで出せることです。 同じ形の new と old を持たせ、中継のプログラムが品目ごとに比べます。差の出し方をAIに頼まないので、「変化なし」の判定が毎回同じ規則で出ます。
2つ目は、一覧表との突き合わせを規則にできることです。 中継のプログラムは、メニューごとに原材料すべての contains を合わせ、一覧表の印と比べます。
| 変更後の中身 | 一覧表の印 | 結果 |
|---|---|---|
いずれかの原材料が contains | 印なし | 追加が必要 |
すべての原材料が not_contained | 印あり | 外せる候補 |
not_stated か unreadable を含む | どちらでも | 判断できない |
| 上記以外 | 一致 | 変化なし |
3行目で、not_stated が1つでもあれば「判断できない」に倒します。 1つの原材料について確かめていなければ、そのメニューについて「含まない」とは言えないからです。外せる候補になるのは、すべての原材料について「含まない」と明記されているときだけです。
3つ目は、evidence と page で確認が速くなることです。 担当者は、規格書のどのページの何という文字列を根拠にしたかを一覧で読んでから、PDFの該当ページを開けます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 規格書受付フォルダ | Power Automate のトリガー | PDFの保存を検知する |
| 代替品の登録 | Power Automate のトリガー | 購買部の記録を検知し、終了予定日の再点検を予約する |
| Claude API | API呼び出し | 新旧の規格書を読み、29品目を判定する |
| レシピ管理 | CSVの読み取り | 原材料とメニューの親子の組を読む |
| アレルゲン一覧表 | Excelの読み取り | メニューごとの印を読む |
| 点検の一覧 | SharePoint のリスト | 追加が必要/外せる候補/判断できない を載せ、担当者に知らせる |
一覧表には書き込みません。 点検の一覧に出すのは食い違いと根拠までで、印を変えるのは承認の後の担当者です。 一覧表は店頭とWebに出ている、お客様が見る情報です。書き込みを自動にすると、読み取りの誤りがそのままお客様の画面に届きます。
人が確認する
人が見るのは、点検の一覧に「変化なし」以外で載ったものです。
- 「追加が必要」を最初に見る … 規格書の該当ページを開き、
evidenceの文字列が本当にその品目の記載かを確かめます。確かめたら、その日のうちに一覧表を直します - 「判断できない」を仕入先へ問い合わせる …
not_statedの品目を並べた問い合わせ文を作り、仕入先に回答を求めます。回答が来るまで、印は外しません - 「外せる候補」は、急がずに確かめる … すべての原材料の
not_containedの根拠を見ます。旧版でcontainsだったものが外れる場合は、仕入先に配合の変更を確かめてから外します - 共用の設備による混入の可能性を見る … 揚げ油の共用で加えたメニューは、規格書ではなく調理の実態で決まるので、店舗の運用が変わっていないかを確かめます
- 承認を得る … 直すマスの一覧を上長が承認し、担当者が一覧表を更新します
3番目で外すのを急がないのは、誤りの向きが違うからです。 印を残したままにする誤りは、お客様の選択肢を狭めますが、健康は損ないません。印を誤って外す誤りは、お客様の健康に直結します。 外すほうに慎重になる設計にしておきます。
目標は、60件をならして1件10分です。 規格書が変わってもアレルゲンの記載が変わらないものは一覧で流し見て終わり、時間を使うのは追加が必要なものと判断できないものです。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付きのPDF | 扱えないため、仕入先に解除した版を依頼する |
| 32MBを超える、ページが多い | 該当の品目のページだけに分ける |
| 旧版の規格書が見つからない | 差は出さず、新しい版だけで判定して一覧表と突き合わせる |
| 返ってきた品目の数が品目マスタと合わない | その件は点検の一覧に載せず、読み直させる。続けば担当者が読む |
| 1つのファイルに複数の製品がある | other_products_in_file を見て、該当の製品の部分かを担当者が確かめる |
| 規格書が外国語 | 判定はそのまま行い、根拠の文字列は原文のまま残す。 担当者が訳を確かめる |
| レシピに無い仕入品コード | 影響するメニューが出ないので、レシピ管理の登録漏れを疑い、商品部に確かめる |
| 代替品の終了予定日を過ぎても戻らない | 再点検の予約を延ばし、購買部に確かめる |
| API が応答しない | フォルダに残し、処理済みへ移すのは成功時だけにする |
4行目の品目の数の確認を、必ず入れてください。 29品目のうち1つが抜けた返答は、スキーマとしては正しい形をしています。抜けた品目は、どのメニューについても突き合わせの対象から消えます。 品目マスタの数と合わせるのは、中継のプログラムの仕事です。
記録を残す
- 新旧の規格書のPDFと、受け付けた日・起点(改訂/レシピ変更/代替品)
- Claude の返答のJSONの全文と、そのとき使った品目マスタの版
- 中継のプログラムが出した、影響するメニューの一覧と突き合わせの結果
- 担当者が判定を覆した記録 … どの品目の、どの判定を、何に変えたか
- 仕入先への問い合わせと回答
- 一覧表の修正の承認者、承認日、店頭・Webへの掲載日
2つ目で品目マスタの版を残すのは、品目が変わるためです。 準ずるものの品目が改正で入れ替わると、当時どの品目について判定したのかが後から分からなくなります。
最後の掲載日は、お客様から問い合わせを受けたときの記録になります。 ある日にお客様が見た一覧表が、どの規格書に基づいていたかを、掲載日と承認の記録からたどれるようにします。
04実装レベルの3段階
本記事の想定は半自動化です。 第10章の10分は、読み取りとレシピの展開と突き合わせが自動で終わり、担当者が食い違いの根拠を確かめる時間として置いた数字です。 最小構成では、影響するメニューを引く手間が残ります。 規格書を読む時間は減りますが、第4章の③の10分はそのままです。半自動化で効くのは、レシピの展開をプログラムに移すところです。 本格構成に進むのは、半自動化の点検の一覧を3か月ほど見てからにしてください。 「判断できない」が多い仕入先が分かれば、その仕入先に29品目の表を含む規格書の様式をお願いするほうが、問い合わせ文を自動にするより先に効きます。
05工数削減シミュレーション
導入後 60件 × 10分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 数十店舗以上の飲食チェーンや、レストランを持つホテル、惣菜を扱う小売で、メニューごとのアレルゲン一覧表を店頭やWebで出している場合。調味料や加工品の仕入品が多く、仕入先から規格書の改訂や代替品の連絡が毎月届く場合。レシピがレシピ管理システムや表計算で原材料単位に管理されている場合。一覧表の更新を品質管理の担当者の経験に頼っている場合。
- メニューが少なく、すべて店内で原材料から調理していて、仕入品の規格書をほとんど扱わない場合。レシピが原材料単位で記録されておらず、どのメニューにどの仕入品を使うかを引ける先が無い場合(先にレシピの整備が必要です)。一覧表の記載を最終的に誰が承認するかが決まっていない場合。なお、個々のお客様に「食べられるか」を答える判断は、この構成では代替できません。
07最小構成で試す方法
- 過去3か月に届いた規格書の改訂から、20件を選ぶ(アレルゲンの記載が変わったと分かっているものを数件入れる)
- 20件それぞれの新旧の規格書を、手元の Claude の画面に添付する
- 第7章の指示文と品目マスタを貼り、29品目の判定を表で出させる
- 出てきた判定を、当時担当者が確かめた内容と突き合わせる
- 影響するメニューは、この段階では担当者が従来どおりレシピ管理で引く
見るのは、not_stated と not_contained の取り違えが無いかの1点です。 20件のうち、準ずるものの表が無い規格書で not_contained が出ていないかを最優先で確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の確認と同じ品目の変化が出た | API とレシピの展開に進む |
表に行の無い品目が not_contained になった | 指示文の書き方で直る。直るまで先に進まない |
原材料名から推測した contains がある | 根拠の種類を分けさせる指示を強める |
| 読めない規格書が多い | 仕入先から受け取る形式の見直しが先 |
2行目が1件でも出たら、先に進まないでください。 この構成が防ぎたい誤りそのものです。指示文を直し、同じ20件でもう一度出なくなってから次の段階に進みます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
表に行の無い品目が not_contained になる | 「行が無ければ not_stated」を指示文に書く。 迷ったら not_stated |
原材料名から推測した contains が混ざる | 根拠の種類を allergen_label と ingredient_name に分けさせる |
| 返答の品目が1つ抜ける | 品目マスタの数と合わせる検査を中継のプログラムに入れる |
表記の揺れで書いてあるのに not_stated | 品目マスタに「乳成分」「海老」などの揺れを持たせる |
| 品目の改正に一覧表と指示文が追いつかない | 品目を指示文に書き込まず、品目マスタから渡す |
| 2段階のレシピで影響するメニューが漏れる | 中間品を含む親子の組でたどる。AIに推測させない |
| 代替品が品質管理部を通らずに店舗へ届く | 購買部の代替品の登録を起点にし、終了予定日に再点検する |
| 揚げ油の共用による混入の可能性が漏れる | 共用の設備の一覧を持ち、影響するメニューに加える |
| パスワード付きのPDFで止まる | 扱えないため、受け付けた時点で確かめ、解除した版を依頼する |
| 一覧表の自動更新で誤りがお客様に届く | 一覧表には書き込まない。 承認の後に人が更新する |
上の2行が、この構成の失敗のほとんどです。 どちらも、書かれていないことをAIが埋めるところから起きます。判定の根拠を規格書の文字列とページに置き、無ければ無いと返させる設計にできているかで、使えるかどうかが決まります。
7行目と8行目は、規格書を読むだけでは防げません。 代替品と共用の設備は、仕入と調理の運用の側にある情報です。点検の起点と入力データに入れておかないと、規格書の読み取りがどれだけ正確でも一覧表は食い違います。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 仕入先の規格書(配合の情報を含む)、自社のレシピ、アレルゲン一覧表です。個人情報は扱いませんが、規格書は仕入先の営業秘密を含むことがあります。
- 規格書を外部のAIに渡してよいかを、仕入先との取り決めで確かめる … 規格書には配合や製造工程が書かれています。仕入先との秘密保持の取り決めで、外部のサービスでの処理が認められているかを先に確かめます
- 一覧表の更新を自動にしない … 一覧表は、お客様が食べるものを選ぶために見る情報です。承認の後に人が更新する形を崩しません
- 一覧表の正確さを保つ責任は自社にある … 東京都の保健所のページでは、飲食店で提供される食品にはアレルゲン情報の提供は義務付けられていないとしたうえで、使用する食材について最新で正確な情報を提供すること、混入の可能性を必ずお客様に伝えることが求められています。義務でないことは、誤ってよいことを意味しません
- お客様への個別の説明は、一覧表とは別の手順で行う … 同じページでは、質問にあいまいな回答をしないことも挙げられています。この構成が出すのは一覧表の食い違いまでで、個々のお客様が食べられるかの判断は代替しません
- 消費者庁の取組を参照する … 消費者庁は外食・中食の事業者向けに、自主的な取組例や、混入の注意、誤食の事例を扱った動画とパンフレットを公開しています。点検の仕組みと合わせて、店舗の従業員の教育に使います
誤りが起きた場合のリスクは、含むのに印が付かないことと、確かめていないのに印を外すことの2つです。 前者は品目の抜けやレシピの引き漏らしで起き、後者は not_stated と not_contained の取り違えで起きます。どちらも、お客様の健康に直結するので、設計と確認の両方で守ります。
10まず何から始めるか
1週目:品目マスタと共用の設備の一覧を作る
特定原材料9品目と準ずるもの20品目の名前、区分、表記の揺れを1枚の表にします。あわせて、揚げ油や調理器具を共用しているメニューの組を、店舗の調理の手順書から書き出します。
2週目:20件で試す
過去3か月の規格書の改訂から20件を選び、第8章の手順で判定させます。not_stated と not_contained の取り違えが0件になるまで、指示文を直します。
3週目:レシピの書き出しを確かめる
レシピ管理から、中間品を含む親子の組を書き出せるかを確かめます。2段階のレシピを持つメニューを10品選び、仕入品から最終のメニューまで手でたどった結果と、書き出しから展開した結果が一致するかを見ます。
4週目:代替品の登録を決める
購買部と話し、代替品を手配したときに記録する項目(元の仕入品、代替品、開始日、終了予定日)を決めます。ここが決まらないと、第3章の(d)は残ります。
2か月目: 規格書受付フォルダを起点に、判定からレシピの展開、一覧表との突き合わせまでをつなぎます。この時点では一覧表の更新は従来どおりの手順で行い、点検の一覧の食い違いと、担当者の確認の結果を比べます。 3か月目以降: 代替品の登録を起点に加え、1件30分が何分になったかを実測します。「判断できない」の多い仕入先に規格書の様式の相談を始めた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 2026年4月1日にカシューナッツが特定原材料に追加されたこと。2024年3月28日に準ずるものにマカダミアナッツが追加され、まつたけが削除されたこと。2023年3月9日にくるみが特定原材料に追加されたこと | 消費者庁: 食物アレルギー表示に関する情報 | 2026-09-29 |
| 外食・中食の事業者向けに、自主的な取組例、混入の注意、誤食の事例などを扱う動画教材とパンフレットが公開されていること | 消費者庁: 外食・中食 | 2026-09-29 |
| 特定原材料が9品目、特定原材料に準ずるものが20品目であることと、その品目名 | 愛知県衛生研究所: 食品アレルギー表示に関する情報 | 2026-09-29 |
| 飲食店等で提供される食品にはアレルゲン情報の提供が義務付けられていないこと。あいまいな回答をしない、最新で正確な情報を提供する、混入の可能性を必ず伝えることが求められていること | 東京都多摩府中保健所: 飲食店のアレルギー表示 | 2026-09-29 |
output_config.format にJSONスキーマを指定すると返答がスキーマに従うこと。enum が使えること、オブジェクトに additionalProperties: false が必要なこと、minLength などの文字列の制約が使えないこと | Claude Docs: Structured outputs | 2026-09-29 |
| PDFの1回のリクエストが32MBまで、ページ数が600ページまで(コンテキストウィンドウが100万トークン未満の場合は100ページまで)であること。パスワードや暗号化のかかったPDFは扱えないこと。各ページが画像としても処理されること | Claude Docs: PDF support | 2026-09-29 |
アレルゲン一覧表に何を載せ、どこまでを混入の可能性として示すかは、自社の品質管理の方針で決めてください。 本記事は上記のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0307)についてのご相談はこちらから。
