飲食・店舗

HACCP記録が続かない現場をClaude Codeでどう支えるか

HACCPに沿った衛生管理記録が続かない飲食店の現場で、温度記録の日次入力・月次集計・基準外の自動抽出をClaude Codeでどこまで仕組み化できるかを実装パターンとして整理する。

HACCP記録が続かない現場をClaude Codeでどう支えるか

結論:HACCPに沿った衛生管理の「記録」が続かない主因は、日次のチェック項目と調理都度発生する重要管理点の記録タイミングがズレていることにある。Claude Codeは衛生管理そのものを代替するツールではなく、日次入力・月次集計・基準外(逸脱)の抽出・記録様式の整備という「記録運用の周辺作業」を仕組み化する道具として使える。

  • 要点1:一般衛生管理(原材料受入・温度確認・清掃・手洗い等)と重要管理点(加熱・冷却の温度時間管理)は記録の性質が異なり、同じ仕組みで拾おうとすると破綻しやすい。
  • 要点2:実装の骨格は「日次入力→月次集計→基準外の自動抽出」の3段パイプラインで、Claude Codeにはスクリプトの生成・保守・レビューを任せる。
  • 要点3:衛生管理計画の策定・数値基準の設定・最終判断は事業者自身が行うものであり、AIが代替する領域ではない。

対象読者:飲食店・外食チェーン向けに衛生管理記録の仕組みを受託開発・内製する開発者、PM、情報システム担当者

今日やること:自店(または支援先)の記録用紙を1枚手に取り、「一般衛生管理」と「重要管理点」のどちらの記録が、どのタイミングで書かれていないかを洗い出すこと

本記事は特定の実在店舗の支援事例ではありません。複数の飲食店向け受託開発・内製化の相談でくり返し出てくる「HACCPの記録が続かない」という課題を一般化した実装パターン解説です。文中の工数・時間の数値はすべて試算・想定であり、実測結果ではありません。

最近、飲食店向けの業務システムを扱う開発者の間で「衛生管理の記録アプリを作ってほしい」という相談が増えている、という声をよく聞きます。話を聞いていくと、要望の中身は毎回ほぼ同じです。「専用の衛生管理システムを入れるほどの規模じゃない」「でも紙の記録は、閉店後に慌ててまとめて書いてしまっている」「保健所の立入りで指摘されたわけじゃないけど、このままだと不安」。これは経営判断というより、記録という地味な作業を継続させる仕組みの問題です。だとすれば、Claude Codeで小さく作って現場に合わせて育てていくアプローチと相性がいいはずです。この記事では、その実装パターンを一般衛生管理と重要管理点それぞれの記録の性質から整理し、日次入力・月次集計・基準外抽出のコード例まで踏み込んで書いていきます。

なぜHACCP記録は「継続」でつまずくのか

衛生管理の記録が止まる現場には共通点がある。一般衛生管理の項目(原材料の受入確認、冷蔵・冷凍庫の温度確認、器具の洗浄・消毒、トイレの清掃、従業員の健康管理・手洗い)は、1日のうち決まったタイミングで発生する「定型チェック」だ。一方で重要管理点(加熱・冷却の温度と時間の管理)は、調理のたびに発生する「都度チェック」で、忙しい厨房では記録を後回しにしやすい。

紙の記録用紙は、この2種類のチェックを1枚の表に混在させがちで、閉店後にまとめて記憶で埋める運用に陥りやすい。これは担当者の意識の問題というより、記録のタイミングと業務の動線が噛み合っていない設計の問題であることが多い。実装で解決するなら、まずこの「いつ・誰が・何を」記録するのかを、一般衛生管理と重要管理点に分けて棚卸しするところから始めるのが実務的だ。

HACCPに沿った衛生管理の義務化を正確に理解する

実装に入る前に、制度の枠組みを正確に押さえておく。食品衛生法の改正により、2021年6月1日からHACCPに沿った衛生管理が原則すべての食品等事業者に完全義務化されている(厚生労働省「HACCPに沿った衛生管理の制度化」)。

制度上は大きく2つの実施方法に分かれる。

  • HACCPに基づく衛生管理:コーデックス委員会が策定したHACCP7原則に基づき、事業者自らが使用原材料や製造方法に応じて計画を作成・管理する方法。主に大規模事業者や一定の業種が対象。
  • HACCPの考え方を取り入れた衛生管理:小規模な事業者等が、業界団体が作成し厚生労働省が内容を確認した「手引書」に沿って、簡略化されたアプローチで衛生管理を行う方法。小規模な一般飲食店の多くはこちらに該当するとされる。

どちらに該当するかは業種・規模によって基準があるため、本記事では断定を避ける。自店がどちらの区分に当たるか、記録の様式・保存期間について詳細な指導を受けたい場合は、必ず所轄の保健所または食品衛生協会に確認してほしい。自治体によって指導のニュアンスが異なる場合もある。

本記事のコード例は、小規模な一般飲食店向けに公益社団法人日本食品衛生協会が作成し、厚生労働省サイトで公開されている「HACCPの考え方に基づく衛生管理のための手引書(小規模な一般飲食店事業者向け)概要版」の構成(①衛生管理計画の策定 → ②計画に基づく実施 → ③確認・記録)をベースにしている。

Claude Codeが担う範囲、事業者が担う範囲

ここが最も誤解されやすい部分なので、先に明確にしておく。Claude Codeにやらせるのは以下の作業に限定する。

  1. 記録の入力補助 — 日次のチェック結果をCSV・DBに素早く残すツールの実装
  2. 記録の集計 — 月次で「良/否」の件数、否の内容、温度の推移を集計するスクリプトの実装
  3. 基準外(逸脱)の抽出 — 自店の衛生管理計画で定めた基準値から外れた記録を機械的にリストアップする処理
  4. 記録様式の整備 — 手引書の別紙1(計画)・別紙2(実施記録)に相当するテンプレートの生成とバージョン管理

逆に、Claude Codeにやらせてはいけないのは、衛生管理計画そのものの策定、日々の温度計測・目視確認・手洗い実施の代行、そして「この記録で保健所の指導に適合しているか」という最終判断だ。これらは食品衛生法上、事業者自身が担う責任であり、AIが代替できる領域ではない。実装者としては、システムの設計段階で「これはあくまで記録・集計の道具であり、衛生管理の実施者はシステムではなく人である」という前提をUIやドキュメントに明記しておくことをすすめる。

実装全体像:日次記録 → 月次集計 → 逸脱抽出のパイプライン

骨格はシンプルな3段構成にする。想定環境はPython 3.11 / pandas 2.x、記録データはローカルのCSV(将来的にSQLiteへ移行しやすい設計)とした。

haccp-records/
├── data/
│   ├── general/          # 一般衛生管理の日次記録 (CSV, 月別)
│   └── ccp/              # 重要管理点(加熱・冷却)の記録 (CSV, 月別)
├── config/
│   └── thresholds.yaml   # 自店の衛生管理計画で定めた基準値
├── scripts/
│   ├── input_general.py  # 一般衛生管理の日次入力
│   ├── input_ccp.py      # 重要管理点の都度入力
│   ├── monthly_report.py # 月次集計
│   └── deviation_check.py # 基準外の抽出
└── templates/
    └── record_sheet_template.csv  # 記録様式テンプレ(別紙1/別紙2相当)

この構成をClaude Codeに作らせる際の最初の指示は、次のように具体的に条件を絞るとブレが少ない。

厚生労働省の「HACCPの考え方に基づく衛生管理のための手引書(小規模な一般飲食店事業者向け)」の
構成に沿って、上記のディレクトリ構成でPythonプロジェクトを初期化してください。
一般衛生管理と重要管理点は別々のCSVスキーマにしてください。
基準値(冷蔵庫の温度上限など)はコードに直接埋め込まず、config/thresholds.yaml に外出しして、
店舗ごとに変更できるようにしてください。
不足している情報があれば、実装前に質問してください。

温度記録の日次入力を仕組み化する

一般衛生管理の記録は、手引書の実施記録(別紙2)に準拠して、①原材料の受入確認、②冷蔵・冷凍庫の温度確認、③交差汚染・二次汚染の防止、④器具等の洗浄・消毒、⑤トイレの洗浄・消毒、⑥従業員の健康管理・手洗いの実施、をそれぞれ「良・否」でチェックし、否の場合は特記事項を書く運用に合わせる。CLIでの入力例は次のようになる。

$ python scripts/input_general.py
日付 [自動: 2026-07-27]:
① 原材料の受入確認 (良/否): 良
② 冷蔵庫内温度 (℃): 4
   冷凍庫内温度 (℃): -18
③ 交差汚染・二次汚染の防止 (良/否): 良
④ 器具等の洗浄・消毒 (良/否): 良
⑤ トイレの洗浄・消毒 (良/否): 良
⑥ 従業員の健康管理・手洗い (良/否): 否
   特記事項(必須): Aさんが体調不良のため調理から外し、盛り付けのみ担当させた
記録者名: 佐藤
→ data/general/2026-07.csv に1行追記しました

Claude Codeへの実装指示はこのように書いた。

入力項目のうち「否」が選ばれた場合は、特記事項の入力を必須にしてください。
温度は数値のみ受け付け、範囲外(冷蔵0〜15℃、冷凍-30〜0℃)の値が入力されたら
入力ミスの可能性を警告してから再入力を促してください。
この数値範囲は入力ミス検知のためのものであり、衛生管理上の合否基準ではないことを
コード内コメントに明記してください。

この最後の一文が地味に重要だ。入力バリデーション用の数値範囲と、衛生管理計画上の合否基準を混同したコードは、後で読んだ人(店主や保健所対応をする担当者)を誤解させる。

手書き記録・スマホ入力からのデータ取り込み

すでに紙の記録運用が定着している店舗では、いきなりCLI入力に切り替えるより、記録用紙をスマホで撮影してテキスト化する方が現実的なことが多い。実装パターンとしては、画像をClaude Codeに読み取らせて構造化データ(CSV行)に変換する処理を書くことになる。

記録用紙の写真から、①〜⑥の「良・否」の丸印、庫内温度の手書き数値、特記事項の手書き文字を
読み取り、data/general/ のCSVスキーマに合う形式でJSON出力するプロンプトを設計してください。
読み取りに自信が持てない文字は、そのまま出力せず "要確認" とマークしてください。
仮定した読み取り結果には必ず信頼度の低さが分かるフラグを付けてください。

ここで欠かせないのが、読み取り結果をそのまま正式記録として確定させないという運用ルールだ。OCR・画像読み取りは誤読の可能性がゼロにならないため、日々の確認者(店主など、入力者とは別の人が週1回程度確認する運用は手引書でも推奨されている)が、読み取り結果と原本の記録用紙を突き合わせてから確定するステップを、システム側でも「未確定」ステータスとして残しておくとよい。

月次集計と「基準外」の自動抽出

月次集計では、①「良/否」の件数集計、②否だった項目の内容一覧、③重要管理点の温度推移、の3種類を出す。重要管理点(加熱・冷却)については、手引書がメニューを3グループに分類する考え方を採用している。

グループ 調理の性質 手引書が示す考え方
第1グループ 非加熱のもの(冷蔵品を冷たいまま提供) 危険温度帯(10〜60℃)に入れず、冷蔵庫から出したらすぐ提供
第2グループ 加熱して温かいまま提供するもの 中心部までよく加熱(目安として75℃で1分間以上)
第3グループ 加熱後に冷却し、再加熱または冷たいまま提供するもの 危険温度帯に長く留まらないよう速やかに冷却

この「75℃・1分間」「危険温度帯10〜60℃」という数値は、あくまで手引書が示す一般的な目安であり、すべての店舗・メニューに一律適用できる法的な合格ラインではない。自店の衛生管理計画で、扱うメニューごとに実際のチェック方法(火の強さや時間、見た目、中心温度など)を決めているはずなので、逸脱抽出のコードはその計画値を参照する設計にする。

# scripts/deviation_check.py の骨子(Claude Codeと一緒に実装した例)
import pandas as pd
import yaml

def check_deviations(csv_path: str, thresholds_path: str) -> pd.DataFrame:
    df = pd.read_csv(csv_path)
    with open(thresholds_path) as f:
        th = yaml.safe_load(f)  # 店舗ごとの衛生管理計画の基準値

    deviations = []
    for _, row in df.iterrows():
        if row.get("判定_冷蔵") == "否" or (
            pd.notna(row.get("冷蔵庫温度")) and row["冷蔵庫温度"] > th["fridge_max_c"]
        ):
            deviations.append({"日付": row["日付"], "項目": "冷蔵庫温度", "値": row.get("冷蔵庫温度")})
        # 冷凍庫・重要管理点についても同様のチェックを追加
    return pd.DataFrame(deviations)

Claude Codeへの指示では、閾値の出どころを明示させることを徹底した。

thresholds.yaml の値は、この記事の読者(店舗)が自分の衛生管理計画に基づいて
設定するものです。デフォルト値をコードにハードコードせず、
設定ファイルが存在しない場合はエラーで停止し、
「衛生管理計画で定めた基準値をthresholds.yamlに設定してください」と表示してください。

月次のレポート出力を自動化・定期実行したい場合は、非対話モードで実行させる方法もある。たとえば毎月1日の朝にcronで月次サマリを作りたいなら、次のようにヘッドレスモード(-p)と権限プロンプトのスキップ(--dangerously-skip-permissions)を組み合わせる構成が考えられる(この2つはClaude Code公式ドキュメントに記載されているオプションで、後者は自動化・CI用途を想定したものであり、人が確認せずに衛生管理の判断そのものを自動化する用途には使わない)。

0 8 1 * * cd /path/to/haccp-records && \
  claude -p "monthly_report.py を実行し、今月の否件数と逸脱一覧をSlack通知用テキストに整形して" \
  --dangerously-skip-permissions >> logs/monthly_cron.log

この手のcron連携は、既存記事「飲食店POSをClaude Codeで月次集計・Slack通知する実装事例」のパイプライン設計と考え方はほぼ同じなので、あわせて読むと実装の勘所がつかみやすい。

記録様式のテンプレ生成とバージョン管理

記録の様式そのものは自由とされているが、「実施した内容が後から確認できる」ことが前提になる。手引書の別紙1(計画)・別紙2(実施記録)の項目構成をベースに、CSV/スプレッドシート用のテンプレートをClaude Codeに生成させ、Gitでバージョン管理しておくと、メニュー変更や手引書改定に合わせて記録項目を直したときの差分が追える。

templates/record_sheet_template.csv を、①原材料受入 ②庫内温度 ③交差汚染防止
④器具洗浄消毒 ⑤トイレ洗浄消毒 ⑥従業員健康管理・手洗い の列を持つ
一般衛生管理用と、メニューグループ別のチェック方法を記入する重要管理点用の
2つのテンプレートに分けて生成してください。
列の意味をコメント行としてテンプレ内に残してください。

テンプレートをGit管理しておくメリットは、保健所からの指導や手引書の改訂があったときに「いつ・どの項目を・なぜ変えたか」がコミットログに残ることだ。紙の記録用紙を差し替えると、変更履歴は現場の記憶にしか残らない。

段階的な導入ロードマップ

Phase 1(2週間程度):現状の紙の記録運用を棚卸しし、一般衛生管理と重要管理点のCSVスキーマを設計。日次入力ツールのプロトタイプを1店舗で試す。

Phase 2(1〜2ヶ月):月次集計・逸脱抽出スクリプトを実装し、紙の記録と並行運用。否だった項目のフィードバックが現場の改善行動につながっているかを確認する。

Phase 3(継続運用):記録様式のバージョン管理を定着させ、手引書の改訂や保健所の指導内容の変化にスクリプト側も追従させる。複数店舗展開する場合はthresholds.yamlを店舗別に管理する。

想定される工数の変化(試算)

以下はあくまで実装パターンとしての試算モデルであり、特定店舗での実測結果ではない。紙の記録を前提にした「月末にまとめて集計・確認する」作業と、日次入力+自動集計後の確認作業を比較したイメージとして参考にしてほしい。

作業 想定:紙の記録+手集計 想定:日次入力+自動集計
月次の否件数・特記事項の洗い出し 記録用紙をめくって読み返す作業が発生 集計スクリプトの出力を確認するだけ
基準外(逸脱)の把握 気づいた人が個別に報告するまで見えない 閾値ベースで機械的にリストアップされる
記録様式の変更対応 紙を刷り直し、現場に周知 テンプレをGitで更新し、差分を共有

正直に言うと、日次入力の手間そのものは紙に書くのと大差ない。効果が出るのは「月末にまとめて確認する」フェーズであり、入力の負担を減らすことが目的化した実装は失敗しやすい。

よくある失敗パターンと回避策

失敗1:目視確認や計測まで「AI任せ」にしてしまう
❌ 「Claude Codeで仕組みを作ったから、衛生管理は大丈夫」と考えて、実際の温度計測や器具の目視確認を省略してしまう。
⭕ Claude Codeが担うのは記録・集計・抽出までで、計測と確認は必ず人が行う前提を崩さない。

失敗2:手引書の数値をすべての店舗・メニューに一律適用する
❌ 「冷蔵10℃以下・冷凍-15℃以下・加熱75℃1分」を万能の合否基準としてコードにハードコードする。
⭕ 自店の衛生管理計画で定めた基準値を設定ファイルに外出しし、手引書の数値はあくまで一般的な目安として扱う。

失敗3:OCR・画像読み取りの結果を確認なしで正式記録にする
❌ 手書き記録の写真から自動で読み取ったCSVを、そのまま月次の確認記録として確定させる。
⭕ 読み取り結果は「未確認」ステータスにしておき、確認者が原本と突き合わせてから確定させる運用にする。

失敗4:システム導入後に保健所への相談・確認を省略する
❌ ツールが動いたので、そのまま自己判断で紙の記録を完全にやめてしまう。
⭕ 記録の様式変更や運用開始前に、必要に応じて所轄の保健所や食品衛生協会に確認する。

よくある質問

Q. Claude CodeでHACCPの衛生管理記録を完全自動化できますか?

できません。記録の入力補助・集計・基準外の抽出はサポートできますが、衛生管理計画の策定や日々の温度計測・目視確認は事業者自身が行う必要があります。適合性の最終判断は保健所や食品衛生の専門家に相談してください。

Q. HACCPに基づく衛生管理と、HACCPの考え方を取り入れた衛生管理はどう違いますか?

前者はコーデックスHACCP7原則に基づき事業者自身が計画を策定するもので、主に大規模事業者などが対象です。後者は業界団体が作成し厚生労働省が内容を確認した手引書に沿って簡略化された衛生管理を行うもので、小規模な一般飲食店の多くが対象とされています。自店がどちらに該当するかは業種・規模で基準があるため、厚生労働省の資料や所轄の保健所に確認してください。

Q. 手書きの記録用紙は完全にやめてもいいですか?

記録の様式自体は自由とされていますが、切り替える際は保健所への相談や、既存の手引書が求める記載項目を満たしているかの確認をおすすめします。急に紙をなくすと現場の入力漏れが増えるリスクもあるため、一定期間は並行運用するのが無難です。

Q. OCRで手書き記録を読み取らせても大丈夫ですか?

読み取り結果をそのまま正式記録として確定するのはリスクがあります。誤読の可能性があるため、日々の確認者が読み取り結果と記録用紙の原本を照合してから確定するステップを残すことをおすすめします。

Q. 温度の記録はスマホ入力・既存の衛生管理アプリ・自作スクリプトのどれがいいですか?

どれでも構いません。重要なのは「実施した内容が継続して確認できる」ことです。自作する場合も既存アプリを使う場合も、記録項目や運用ルールは手引書や保健所の指導に沿って設計してください。

Q. 記事中のコマンドやコード例はそのまま使えますか?

実装パターンの一例であり、店舗ごとの衛生管理計画・メニュー構成に合わせて調整が必要です。またClaude Code自体のコマンドやオプションの仕様は更新される可能性があるため、実装前に公式ドキュメント(code.claude.com/docs)で最新の仕様を確認してください。

まとめ:今日から始める3つのアクション

  1. 今日やること:現在の記録用紙を1枚見て、一般衛生管理と重要管理点のどちらの記録が、どのタイミングで抜けやすいかを洗い出す
  2. 今週中:一般衛生管理と重要管理点を別スキーマに分けたCSV設計案を、Claude Codeと一緒にたたき台として作ってみる
  3. 今月中:紙の記録と並行運用しながら、月次集計・基準外抽出のスクリプトを1サイクル回してみる

関連記事として、記録・集計の自動化パイプラインという観点では「飲食店POSをClaude Codeで月次集計・Slack通知する実装事例」、現場データの取り込みという観点では「飲食チェーン食材発注・フードロスをClaude Code自動化」、点検記録の運用という観点では「清掃業の点検報告をClaude Codeで自動化」もあわせて参考にしてほしい。

ご質問・ご相談はお問い合わせフォームからお気軽にどうぞ。

著者プロフィール

佐藤傑(さとう・すぐる)。株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。100社以上の企業向けAI研修・導入支援を展開。著書『AIエージェント仕事術』(SBクリエイティブ)。

参照・出典

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する