結論:産業廃棄物の収集運搬・中間処理業では、マニフェスト(産業廃棄物管理票)の起算日管理と許可証の更新期限管理をClaude Codeに「集計」と「突合」だけ任せ、許可証・契約マスタへの書き込みをhooksとpermissionsで塞ぐ設計にすると、コンプライアンス担当者が安心して運用できます(想定シナリオ)。
- 要点1:電子マニフェスト(JWNET)と紙マニフェストが混在していても、CSV正規化とClaude Codeでの突合により、5年保存義務の起算日リストを月次で自動生成できます(試算)
- 要点2:許可証マスタ・契約マスタへの書き込みは
permissions.denyとPreToolUseフックで二重に塞ぎ、Claude Codeには読み取り専用のスナップショットだけを渡す設計が安全です - 要点3:マニフェストの保存期限判定・許可更新の要否は必ず行政書士・許可行政庁(都道府県・政令市)に確認し、Claude Codeの出力はあくまで一次スクリーニングとして扱います
対象読者:産業廃棄物収集運搬・処分業のコンプライアンス担当者・情報システム担当者、廃棄物業界のDXを支援するSIerのエンジニア
今日やること:直近1年分のマニフェストのA票交付日・B2/D/E票受領日を1枚のCSVにまとめて、本記事の手順1(正規化プロンプト)を試してみてください。
事例区分:想定シナリオ(モデルケース)。以下は実在する特定の企業の事例ではなく、産業廃棄物収集運搬業・中間処理業(県内3拠点・従業員40名規模を想定)で典型的に起こりうる書類管理の課題をもとに構成した仮説ベースの実装解説です。数値はすべて試算値であり、実測結果ではありません。また、マニフェストの保存義務・許可証の更新要否といった法令適合の最終判断は、行政書士や許可行政庁(都道府県・政令市の廃棄物担当部局)に必ず確認してください。Claude Codeは書類の整理・突合を支援するツールであり、法令適合の最終判断者ではありません。
「このマニフェスト、A票の交付日っていつでしたっけ?」
産業廃棄物処理業のDX相談でよく出てくるやり取りです。マニフェストは廃棄物処理法で5年間の保存義務があり、しかもA票(排出事業者の交付日起算)とB2票・D票・E票(各事業者の受領日起算)で起算日が違います。電子マニフェスト(JWNET)に一本化できていればまだ管理しやすいのですが、実際には紙のマニフェストが混在していたり、拠点ごとにExcelの管理方法がバラバラだったりして、「このロットの保存期限、いつ切れるんだっけ」を人力で追いかけているケースが少なくありません。正直に言うと、この手の「起算日がバラバラで期限管理が属人化する」問題は、廃棄物業界に限らず契約書・許認可全般でもよく見かけます。
この記事では、産業廃棄物収集運搬・中間処理業(想定)のマニフェスト管理・許可証更新管理をClaude Codeで効率化した実装手順を、hooksとpermissionsによる安全設計まで含めて解説します。
産業廃棄物処理業界の書類負担はどこにあるのか
環境省によると、電子マニフェスト(JWNET)の捕捉率は2024年度時点で約64.5%にとどまっており、第五次循環型社会推進基本計画では2030年に75%まで引き上げる目標が掲げられています(環境省「産業廃棄物管理票・電子マニフェスト関連」、2026年7月参照)。つまり現時点では、業界の3割超がまだ紙マニフェストを併用しているか、電子化が部分的な状態にあるということです。紙と電子が混在する現場では、保存期限や記載内容のチェックをExcelの手作業に頼らざるを得ず、拠点数が増えるほど負荷が積み上がります。
導入前の状況:紙とExcelに分散したマニフェスト管理
想定した法人の業務フローはこうです。3拠点それぞれの担当者が、電子マニフェスト(JWNET)のCSVエクスポートと、紙マニフェストの手入力Excelを別々に管理しており、統一されたフォーマットがありません。月末になるとコンプライアンス担当者がそれぞれのファイルを目視で確認し、保存期限が近いロットや、許可証の更新時期が近い拠点をリストアップする、という作業に月8時間ほどかかっていた、という試算です。
ボトルネックは大きく3つありました。
- 拠点ごとにJWNET CSVの列名・紙マニフェストの入力ルールが微妙に異なる(品目コードの表記ゆれ等)
- A票・B2票・D票・E票で起算日が異なるため、保存期限の計算を毎回手作業でやり直している
- 収集運搬業・処分業の許可証(有効期間5年)の更新時期を、拠点担当者の記憶とカレンダーの手入力に頼っている
Claude Codeに任せた5つの役割
実装チームがClaude Codeに任せたのは、法令適合の判断や書き込みではなく「正規化」「突合」「期限リスト作成」の3種類だけに絞り込むことでした。具体的には次の5つです。
- マニフェストデータの正規化 — JWNET CSVエクスポートと紙マニフェストの起こしExcelを1つのスキーマに統合し、品目コード・数量の表記ゆれを揃える
- 保存期限リストの自動生成 — A票は交付日、B2/D/E票は受領日を起算日として、5年保存期限が近いロットを月次でリストアップする
- 許可証の有効期限突合 — 拠点別の収集運搬業許可・処分業許可(都道府県・政令市発行)の有効期限マスタと突合し、更新時期が近いものにフラグを立てる
- 契約書・料金表との記載単価突合 — 委託契約書・料金表に記載された処理単価と、マニフェスト記載の数量・金額の整合をチェックし、記載漏れ候補を抽出する
- 月次JWNET報告データの一次スクリーニング — 前月比で処理量が大きく変動した品目・拠点にフラグを立てる(最終判断はコンプライアンス責任者が行う)
最初の実装エピソードとして印象的だったのが、正規化の段階でした。拠点Aは品目コードを「廃プラスチック類」とテキストで入力し、拠点Bは環境省の廃棄物データ処理形式の品目コード(20桁の分類コード)で入力していて、単純な文字列一致では突合できなかったんです。ここでClaude Codeに渡したプロンプトが次のものです。
以下はJWNET CSVエクスポートと、紙マニフェストを手入力したExcelの
2種類のデータです。両方から「マニフェスト番号」「交付日」「受領日」
「品目コード」「品目名」「数量」「排出事業場」を抽出し、
1つのCSVスキーマに統合してください。
- 品目コードがテキストのみの行は、品目名から環境省の廃棄物データ
処理形式コード表に相当するコードを推定し、「推定コード」列に
記録する(確定はしない)
- 交付日・受領日の表記ゆれ(2026/7/3, 令和8年7月3日 など)は
ISO8601 (YYYY-MM-DD) に統一
- 抽出できなかった行はスキップせず、"要確認" 列に理由を記録
- 不足している情報があれば、最初に質問してから作業を開始してください
- 仮定した点は必ず"仮定"と明記してください
入力:
{JWNET CSV と 手入力Excelのテキスト}
2つ目のプロンプトは、A票・B2/D/E票の起算日を踏まえた保存期限リストの生成です。
正規化済みのマニフェストデータ(manifest_normalized.csv)から、
5年の保存期限が近いロットをリストアップしてください。
- A票は「交付日」を起算日として5年後を保存期限とする
- B2票・D票・E票は「受領日」を起算日として5年後を保存期限とする
(票種は伝票種別列 slip_type で判定する)
- 保存期限まで90日以内のロットを「要確認リスト」として抽出
- 出力は retention_watchlist.csv とし、列は
[マニフェスト番号, 票種, 起算日, 保存期限, 残日数, 排出事業場] とする
- これは廃棄物処理法上の保存義務の目安であり、最終的な保存期間の
判断は行政書士・許可行政庁に確認する前提のリストです
- 数字と固有名詞は、根拠(計算式)を添えてください
3つ目は許可証の有効期限突合です。ここで実装チームが最初につまずいたのが「許可証データが拠点ごとに別々のExcelで、都道府県によって様式が違う」ことでした。そこで許可証マスタ自体を統一フォーマットのCSVに集約し、突合ロジックをスクリプト化して、Claude Codeにはそのスクリプトの生成・修正だけを任せる形にしました。
拠点別の許可証有効期限突合スクリプト(permit_expiry_check.py)を
作成してください。
要件:
- 入力: permit_master.csv(拠点名, 許可種別[収集運搬/処分],
発行行政庁, 許可番号, 有効期限)
- 有効期限まで180日以内の許可証を「更新要検討リスト」として抽出
- 出力: permit_renewal_watchlist.csv
(拠点名, 許可種別, 発行行政庁, 有効期限, 残日数)
- 産業廃棄物処理業の許可有効期間は原則5年だが、優良認定を受けている
場合は7年になるケースがあるため、permit_master.csv の
is_yuryo(優良認定フラグ)列を参照して期限計算の前提を分岐させる
- テストケースを3件(通常許可のみ/優良認定含む/データ欠損あり)作成する
4つ目は契約書・料金表とマニフェスト記載単価の突合です。処理単価の記載漏れや契約更新の反映漏れを見つけて、「確認してほしいリスト」を作らせる、という位置付けにしました。
manifest_normalized.csv(当月分)と contract_price_master.csv
(委託契約書・料金表の単価一覧)を突合してください。
- 品目コードごとに、マニフェスト記載の想定金額と契約単価×数量の
計算値を比較する
- 差額が契約単価の10%を超える行を「要確認リスト」として抽出
- 出力: price_mismatch_watchlist.csv
(マニフェスト番号, 品目名, 契約単価, 想定金額, 差額, 差額率)
- これは差異の確定ではなく「確認してほしいリスト」です。
原因の断定はしないでください
- 差額率の計算式をレポート内に明記してください
実装スタック
- Claude Code CLI(非対話モード
-p/--bare) - Python 3 +
pandas(CSV正規化・突合・期限計算) - settings.json(
permissions.allow/denyによるコマンド制御) - PreToolUse hook(許可証マスタ・契約マスタへの書き込み系コマンドをブロック)
- cron(毎朝の日次バッチ実行)+ Slack Webhook(期限アラート通知)
hooksとpermissionsによる安全設計
正直、ここが今回の実装で一番気を使った部分です。許可証マスタ・契約マスタはコンプライアンス上重要なデータなので、Claude Codeに誤って書き込み権限を渡すと、担当者の一言のプロンプトで有効期限や契約単価が上書きされてしまうリスクがあります。そこで採用したのが、settings.jsonのpermissionsとPreToolUseフックによる二重ガードです。
まず.claude/settings.jsonで、許可証マスタ・契約マスタを更新しうるコマンドをdenyに入れ、読み取り専用のスクリプト実行だけをallowにします(Claude Code公式ドキュメントの permission rule syntax に準拠)。
{
"permissions": {
"allow": [
"Bash(python3 scripts/normalize_manifest.py *)",
"Bash(python3 scripts/retention_watchlist.py *)",
"Bash(python3 scripts/permit_expiry_check.py *)"
],
"deny": [
"Bash(*permit_master* UPDATE*)",
"Bash(rm *)",
"Write(./data/permit_master.csv)",
"Write(./data/contract_price_master.csv)"
]
}
}
さらに、万が一denyルールをすり抜けるコマンドが来た場合の保険として、PreToolUseフックで「許可証マスタ・契約マスタ本体へ書き込もうとするBashコマンド」を検知してブロックするスクリプトを仕込みました。実装中、テスト用のプロンプトで「許可証マスタの有効期限も直接書き換えて」と指示したところ、このフックが動作をブロックしてくれた場面があり、二重ガードの効果を実感したエピソードです。このフックスクリプト自体もClaude Codeに次のように依頼して生成しました。
PreToolUseフック用のシェルスクリプトを作成してください。
要件:
- Bashツールのコマンドに permit_master.csv または
contract_price_master.csv への書き込みを示すパターン
(リダイレクト、tee、sed -i、cp/mv での上書き)が含まれる場合はブロックする
- ブロック時は permissionDecision: "deny" のJSONを標準出力に返す
- 該当しない場合は exit 0 で通常のフローに戻す
- jq コマンドが使える前提で書いてください
生成されたスクリプトが次のものです。
#!/bin/bash
# .claude/hooks/block-master-write.sh
cmd=$(jq -r '.tool_input.command // ""')
if echo "$cmd" | grep -qiE '(permit_master|contract_price_master)\.csv' \
&& echo "$cmd" | grep -qiE '(>|tee|sed -i|cp |mv )'; then
jq -n '{
hookSpecificOutput: {
hookEventName: "PreToolUse",
permissionDecision: "deny",
permissionDecisionReason: "許可証・契約マスタ本体への書き込みはブロックされています。read-onlyスナップショット経由で突合してください。"
}
}'
else
exit 0
fi
hooksの設定方法や利用できるイベントの詳細はClaude Code Hooks実践ガイドにまとめています。permissionsのルール設計をチームでどう合意形成するかはClaude Code権限設計ガイドも参考になります。
日次バッチ運用(非対話モード)
Claude Codeには-p(--print)フラグを使った非対話モードがあり、CIやcronから呼び出せます。今回は起動を軽くするため--bareを付け、hooks・skills・MCP・CLAUDE.mdの自動読み込みをスキップし、必要な権限だけを--allowedToolsで明示的に渡す構成にしました(Claude Code公式ドキュメントで案内されている構成です)。
#!/bin/bash
# cron: 毎朝7時に実行
cd /opt/waste-manifest-report
claude --bare -p "manifest_normalized.csv と permit_master.csv を突合し、
retention_watchlist.csv と permit_renewal_watchlist.csv を更新して、
保存期限90日以内・許可更新180日以内の件数を要約して" \
--allowedTools "Bash(python3 scripts/*.py *),Read" \
--output-format json > /var/log/waste-report/$(date +%F).json
出力を--output-format jsonにしておくと、total_cost_usdを含むメタデータが得られるため、月あたりのAPIコストを別途トラッキングする運用にも使えます。
【要注意】よくある失敗パターンと回避策
失敗1:曖昧すぎる指示
❌「マニフェストを整理して」
⭕「JWNET CSVと紙マニフェストの起こしデータから、マニフェスト番号・交付日・受領日・品目コード・数量を抽出し、ISO8601形式に統一したCSVを出力して。抽出できなかった行はスキップせず要確認欄に理由を記録して」
なぜこれが重要か:出力スキーマと起算日の定義を具体的に指定しないと、実行のたびに列名や期限計算の基準がぶれて、下流の突合スクリプトが毎回壊れます。
失敗2:許可証マスタ・契約マスタへの書き込み権限を直接渡す
❌ Claude Codeに許可証マスタ・契約マスタCSVへのフルアクセスを与える
⭕ permissions.denyとPreToolUseフックで書き込み系コマンドを塞ぎ、read-onlyスナップショットだけを渡す
なぜこれが重要か:許可証・契約データの誤更新はコンプライアンス上のリスクに直結します。読み取りと書き込みを物理的に分離しておくと、指示の解釈ミスがあっても実害が出ません。
失敗3:保存期限・許可更新の要否をAIに確定させる
❌ Claude Codeが出した「保存期限リスト」「更新要否」をそのまま最終判断として扱う
⭕ 一次スクリーニングとして使い、最終的な法令適合の判断は行政書士・許可行政庁(都道府県・政令市の廃棄物担当部局)に確認する
なぜこれが重要か:廃棄物処理法の解釈・優良認定の有無・地域ごとの運用差は専門家の確認が前提です。AIは補助ツールであり、最終判断者ではありません。
失敗4:正規化〜期限管理〜契約突合まで一度に自動化しようとする
❌「マニフェスト管理を全部自動化して」と一括で依頼する
⭕ まず「正規化」だけをPoCで検証し、次に「保存期限リスト」、最後に「許可証・契約突合」と段階的に広げる
なぜこれが重要か:実装チームが最初にJWNET CSVの列名を年度によって変わっていることに気づかず、突合スクリプトが該当ゼロ件と誤判定してしまったことがありました。段階的に検証していたおかげで、この列名変更に早い段階で気づけた、という教訓です。大きなタスクを分割すると、各段階で数字の妥当性を人間が確認でき、手戻りが少なくなります。
段階的導入のロードマップ
Phase 1(1〜2ヶ月):単一拠点でJWNET CSVエクスポートと紙マニフェストの正規化・突合をPoC検証する。
Phase 2(3〜4ヶ月):全拠点へ横展開し、許可証の有効期限突合と更新アラートをSlack通知に追加する。
Phase 3(5〜8ヶ月):委託契約書・料金表との突合まで拡張し、月次JWNET報告のドラフト作成を検討する(最終提出前の人間確認は必須)。
想定効果(試算)
| 指標 | 導入前(想定) | 導入後(想定) |
|---|---|---|
| マニフェスト突合・保存期限チェックの月次時間 | 約8時間 | 約1.5時間 |
| 許可証更新の見落としヒヤリ・ハット(年間) | 2〜3件 | 事前アラートで抑制(想定) |
| 記載不備(単価差異)の発見リードタイム | 翌月判明 | 当日中 |
| 契約書・料金表の突合作業(月次) | 約3時間 | 約30分 |
※上記はすべて想定シナリオに基づく試算値です。実際の効果は拠点数・マニフェスト件数・既存の記録方法によって変わります。また保存期限・許可更新の最終判断は行政書士・許可行政庁への確認が前提です。
適用余地のある業界・規模
「起算日がバラバラで期限管理が属人化している」「許可証・契約マスタへの書き込み権限を絞りつつAIに突合だけ任せたい」という構図は、産業廃棄物処理業に限りません。建設業の許可証・下請契約管理、運送業の運行管理者資格・車検期限管理、士業事務所の許認可更新管理など、法定書類の起算日・期限管理が属人化している業種であれば、同じ設計思想(read-only突合 + hooks/permissionsによる書き込み制限)が応用できます。拠点数が3〜10程度の中堅規模が、PoCを始めやすい規模感だと考えられます。
内部リンク:関連事例・参考記事
- 自治体の条例改正差分チェックをClaude Codeで効率化 — 法令・規則の差分チェックという点で本記事の許可証・保存期限管理と設計思想が近い事例です
- 契約書レビュー自動化|Claude Code×法務の実装事例 — 契約書突合の実装アプローチの参考になります
- Claude Code Hooks実践ガイド|整形・通知の自動化
- Claude Code権限設計ガイド
まとめ:今日から始める3つのアクション
- 今日やること:直近1年分のマニフェストのA票交付日・B2/D/E票受領日を1枚のCSVにまとめ、本記事の正規化プロンプトを試す
- 今週中:許可証マスタのread-onlyスナップショットを用意し、有効期限突合スクリプトのPoCを回す
- 今月中:
permissions.denyとPreToolUseフックを設定し、書き込み権限を物理的に分離してから全拠点へ横展開する
正直にお伝えすると、この構成はまだ発展途上です。保存期限の解釈や優良認定の有無による許可期間の違いは拠点・地域ごとに確認が必要ですし、最終的な法令適合の判断はAI単体では行えません。だからこそ「AIに丸投げ」ではなく、正規化と突合だけをAIに任せ、最終判断は人(コンプライアンス担当者・行政書士・許可行政庁)が行う「AIと協業」の設計が重要だと考えています。
次回予告:次の記事では、月次JWNET報告のドラフト作成をClaude Codeでどこまで自動化できるか、2027年4月施行予定の最終処分報告義務拡充も踏まえて検証する予定です。
FAQ
- Q: Claude Codeは産業廃棄物処理業のマニフェスト管理に使えますか?
- はい、JWNET CSVと紙マニフェストの正規化・突合・保存期限リスト生成のようなデータ処理タスクであれば、Claude Codeが生成するPythonスクリプトを使って自動化できます。ただし許可証マスタ・契約マスタなどコンプライアンス上重要なデータへの書き込みは、permissionsとhooksで制限することを推奨します。
- Q: マニフェストの保存期限はAIが判定して確定してよいですか?
- 確定判断には使わないでください。Claude Codeが出す保存期限リストはあくまで一次スクリーニングであり、廃棄物処理法上の保存義務・起算日の解釈については行政書士や許可行政庁に必ず確認してください。
- Q: 許可証マスタへの書き込み権限はClaude Codeに与えるべきですか?
- 推奨しません。読み取り専用のスナップショットを渡し、settings.jsonのpermissions.denyとPreToolUseフックで書き込み系コマンドをブロックする二重の安全設計にすることで、指示の解釈ミスがあっても実データへの影響を防げます。
- Q: hooksとpermissionsの違いは何ですか?
- permissionsはsettings.jsonのallow/ask/denyルールで、コマンドパターンごとに実行可否を宣言的に設定します。hooksはPreToolUseなどのイベントごとにスクリプトやHTTPエンドポイントを実行し、実行時の内容を見て動的に許可・拒否を判断できる仕組みです。両方を組み合わせると二重の安全設計になります。
- Q: 本記事の事例は実在するものですか?
- 本記事の事例・数値・コードはすべて想定シナリオ(モデルケース)です。実在する特定の産業廃棄物処理業者の事例ではありません。
- Q: 産業廃棄物処理業でなくても同じ設計は応用できますか?
- 応用できます。法定書類の起算日・期限管理が属人化している業種であれば、建設業や運送業など、同じ設計思想がそのまま流用できます。
参考・出典
- 環境省「産業廃棄物管理票・電子マニフェスト関連」(電子マニフェスト捕捉率2024年度約64.5%・2030年目標75%。参照日: 2026-07-08)
- 日本産業廃棄物処理振興センター(JWセンター)「捕捉率・登録件数」(参照日: 2026-07-08)
- Claude Code公式ドキュメント:Hooks reference(参照日: 2026-07-08)
- Claude Code公式ドキュメント:Settings(permissions構文)(参照日: 2026-07-08)
- Claude Code公式ドキュメント:Run Claude Code programmatically(非対話モード)(参照日: 2026-07-08)
著者プロフィール
佐藤傑(さとう・すぐる)。株式会社Uravation代表取締役。早稲田大学法学部在学中に生成AIの可能性に魅了され、X(@SuguruKun_ai)で活用法を発信(フォロワー約10万人)。100社以上の企業向けAI研修・導入支援を展開。著書『AIエージェント仕事術』(SBクリエイティブ)。SoftBank IT連載7回執筆。
Claude Code 個別指導・業界別DX導入支援
hooks・permissions設計を含めた安全なClaude Code導入を、Uravationが伴走します。ご質問・ご相談はお問い合わせフォームからお気軽にどうぞ。