ごみ収集の作業員が撮った不適正排出の写真から品目と違反の種類を見分けて集積所別の台帳にし、町内会への啓発文の案を毎月作る
収集の作業員が、出し方の誤りで収集しなかったごみの写真をフォームで送ると、AIが写真から品目と違反の種類を見分け、集積所別の台帳に記録します。月末には集積所と町内会ごとの集計から、回覧に使う啓発文の案を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- その他/不動産/自治体
- 対象部門
- 総務
- 対象業務
- データ入力・転記/書類作成
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 作業員が収集しなかったごみに警告のシールを貼り、写真を撮る
- 作業日報に、集積所の番号と、シールの区分と、気づいたことを手で書く
- 帰庁後、写真を班ごとにパソコンの共有フォルダへ取り込む
- 事務の担当者が、日報の行と写真を撮影の時刻で突き合わせる
- 写真を見て、品目(缶、スプレー缶、家電など)と違反の種類を判断し、集積所の台帳の別のシートに書き写す
- 月末に、集積所ごと・町内会ごとの件数と、多い品目を集計する
- 取り残しの多い町内会について、文例集から啓発の文書を作り、町内会長に送る
- 人作業員が警告のシールを貼り、業務用のスマートフォンから Google フォームを開いて、集積所の番号、シールの区分、写真を送る
- 自動フォームの送信をきっかけに Google Apps Script が動き、写真を取り出す
- 自動集積所の台帳から、その集積所の町内会と、その日の収集の区分を引く
- 自動Gemini API に写真を渡し、品目、違反の種類、写り込みの有無をJSONで返させる
- 自動品目の区分とその日の収集の区分を照らし、収集日の誤りを規則で決める
- 自動AIの見分けた結果と、作業員の選んだシールの区分を照らし、合わないものに印を付ける
- 自動台帳のシートに1行を足す
- 人事務の担当者が、印の付いた行と、危険物の行を確かめる
- 自動月初に、集積所ごと・町内会ごとに件数と品目を集計し、啓発文の案を作る
- 人担当者が啓発文の案を直し、町内会長に送る
各工程の詳しい説明を読む
- 作業員が収集しなかったごみに警告のシールを貼り、写真を撮る
- 作業日報に、集積所の番号と、シールの区分と、気づいたことを手で書く
- 帰庁後、写真を班ごとにパソコンの共有フォルダへ取り込む
- 事務の担当者が、日報の行と写真を撮影の時刻で突き合わせる
- 写真を見て、品目(缶、スプレー缶、家電など)と違反の種類を判断し、集積所の台帳の別のシートに書き写す
- 月末に、集積所ごと・町内会ごとの件数と、多い品目を集計する
- 取り残しの多い町内会について、文例集から啓発の文書を作り、町内会長に送る
(a)写真と日報の突き合わせに時間がかかる。 写真のファイル名は撮影の日時だけで、どの集積所かは分かりません。日報の時刻と写真の時刻を並べて、どの写真がどの行かを推し量っています。 1枚の写真が見つからないだけで、その日の班の分を全部見直すことになります。
(b)品目と違反の書き方が人によって違う。 ある担当者は「缶混入」、別の担当者は「可燃にアルミ缶」と書きます。同じことを違う言葉で書いているので、月末の集計で数えられません。 集計のたびに、書き方をそろえる手直しが入ります。
(c)シールの区分と写真の中身が合わないことがある。 作業員は急いでいるので、写真を見ると危険物が混ざっているのに「分別が違います」だけに印を付けることがあります。スプレー缶や電池は収集車の火災の原因になるため、区別して数えたい品目です。 今は担当者が写真を見て気づいたときだけ直しています。
(d)啓発の文書が毎月同じになる。 文例集から選んで町内会の名前を入れ替えているので、「分別にご協力ください」という同じ文面が毎月届きます。 町内会長からは、何が多いのかを具体的に書いてほしいと言われています。
- 【人】 作業員が警告のシールを貼り、業務用のスマートフォンから Google フォームを開いて、集積所の番号、シールの区分、写真を送る
- 【自動】 フォームの送信をきっかけに Google Apps Script が動き、写真を取り出す
- 【自動】 集積所の台帳から、その集積所の町内会と、その日の収集の区分を引く
- 【自動】 Gemini API に写真を渡し、品目、違反の種類、写り込みの有無をJSONで返させる
- 【自動】 品目の区分とその日の収集の区分を照らし、収集日の誤りを規則で決める
- 【自動】 AIの見分けた結果と、作業員の選んだシールの区分を照らし、合わないものに印を付ける
- 【自動】 台帳のシートに1行を足す
- 【人】 事務の担当者が、印の付いた行と、危険物の行を確かめる
- 【自動】 月初に、集積所ごと・町内会ごとに件数と品目を集計し、啓発文の案を作る
- 【人】 担当者が啓発文の案を直し、町内会長に送る
1番目で集積所の番号を入れてもらうことが、第3章の(a)を消します。 写真と集積所が送った時点で結び付くので、時刻で推し量る作業がなくなります。 作業員の手間は、日報に書いていたことをフォームに移すだけです。
6番目が、この設計の確認の入口です。 AIと作業員の見立てが同じなら、ほぼ確かです。違うときだけ人が写真を見ることで、540件すべてを見る必要がなくなります。
02今回想定するシステム構成
作業員(業務用のスマートフォン) │ 集積所の番号・シールの区分・写真(1〜3枚) ▼ Google フォーム(ファイルのアップロードの質問) │ ▼【トリガー】フォーム送信時 Google Apps Script ├──▶ 写真をドライブから取り出す ├──▶ 集積所の台帳を引く(町内会・その日の収集の区分) │ ├──▶ Gemini API(画像入力・構造化出力) │ 品目/違反の種類/写り込みの有無 │ ├──▶ 収集日の誤りを規則で決める ├──▶ シールの区分と照らして印を付ける ▼ 取り残しの台帳(スプレッドシート)──【事務の担当者が確認】 │ ▼【時間主導型トリガー:毎月1日】 Google Apps Script ── 集積所別・町内会別に集計 ▼ Gemini API ── 町内会ごとの啓発文の案 ▼ 【担当者が直して町内会長へ】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make |
| 生成AI | Gemini API(画像入力・構造化出力) | Claude API、OpenAI API |
| 写真の受付 | Google フォーム | Microsoft Forms |
| 台帳の置き場 | Google スプレッドシート | SharePoint のリスト |
集積所の台帳は、新しく足すものではありません。 今ある表計算のファイルを Google スプレッドシートに移し、集積所の番号、町内会、曜日ごとの収集の区分の列がそろっていることを確かめます。取り残しの記録は、同じファイルの別のシートに足していきます。
写真の受付には、Google フォームの「ファイルのアップロード」の質問を使います。 この質問に答えるには、回答者が Google アカウントにログインする必要があるとされています。業務用のスマートフォンに、作業員ごとか班ごとのアカウントでログインしておきます。アップロードされたファイルは、フォームのオーナーの Google ドライブの新しいフォルダに保存されるとされ、作成者はファイルの形式、最大数、最大のファイルサイズを決められます。フォームが共有ドライブに保存されている場合や、管理者がデータ損失防止の機能を有効にしている場合は、この形式は使えないとされているので、フォームの置き場所を先に決めます。
Gemini API を選んだのは、画像を直接入力でき、Apps Script から呼び出しやすいためです。 画像はURLで渡す方法、Base64にしてインラインで渡す方法、File API でアップロードする方法があります。インラインで渡す場合は、プロンプトと画像を合わせたリクエスト全体が20MBまでとされています。対応する形式は PNG、JPEG、WEBP、HEIC、HEIF です。
有料のサービスとして使います。 利用規約では、無料のサービスに送った内容は Google の製品や機械学習の技術の改善に使われ、人が読んで注釈を付けることがあるとされ、機密や個人の情報を送らないようにと書かれています。有料のサービスでは、プロンプトと応答を製品の改善に使わず、不正利用の検知のために限られた期間だけ記録するとされています。写真に宛名が写りうる業務なので、有料のサービスを前提にします。
03どうやって実装するのか
処理の起点を決める
起点は2つです。 写真の受付と、月初の集計です。
1つ目は、Apps Script のインストール可能なトリガーの「フォーム送信時」です。 作業員がフォームを送るたびに1件ずつ動きます。帰庁後にまとめて処理する形にはしません。 作業員が現場にいるうちに処理が終われば、写真が暗くて見分けられなかったときに、次の集積所へ移る前に撮り直しを頼めます。
2つ目は、時間主導型のトリガーです。 時間主導型のトリガーは、最短で1分ごと、最長で月1回の間隔で動かせるとされています。毎月1日の早朝に、前月分の集計と啓発文の案づくりを動かします。
インストール可能なトリガーは、作成した人のアカウントで動くとされています。担当者の個人のアカウントで作ると、異動のときに止まります。清掃事務所の共用の管理用アカウントで作ります。 トリガーが失敗したときは、作成者にメールが届くとされているので、そのメールが事務所の誰かに届くようにしておきます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| フォームの回答 | 集積所の番号、シールの区分(複数選択)、写真のファイル、作業員のメモ、送信の日時、班 | Google フォーム |
| 写真 | 取り残したごみの写真(1〜3枚) | フォームのオーナーのドライブ |
| 集積所の台帳 | 集積所の番号、所在地、町内会、曜日ごとの収集の区分 | スプレッドシート |
| 分別の区分の一覧 | 市の分別の区分(燃やすごみ、燃やさないごみ、缶・びん、ペットボトル、プラスチック、古紙、粗大ごみ、危険物など)と、その代表的な品目 | 清掃事務所の一覧 |
| 収集日程の例外 | 年末年始や祝日の振替 | 清掃事務所の一覧 |
質を決めるのは、分別の区分の一覧です。 市によって区分が違います。スプレー缶を「危険ごみ」とする市もあれば、「燃やさないごみ」に穴を開けずに出すとする市もあります。 AIに一般的な分け方で答えさせると、自分の市の区分とずれます。一覧をそのままAIに渡し、その中からだけ選ばせます。
収集日程の例外を持つのは、祝日の振替で収集の区分が変わる日があるためです。 曜日だけで照らすと、振替の日に正しく出されたごみを「収集日の誤り」と記録してしまいます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 回答の項目 | フォーム送信時のイベント | 集積所の番号、シールの区分、メモ |
| 写真 | 回答に含まれるファイルのIDからドライブのファイルを開く | Gemini API に渡す画像 |
| 町内会と収集の区分 | 集積所の台帳を番号で引く | 収集日の誤りの判定と集計 |
| 分別の区分の一覧 | スプレッドシートの別のシート | AIへの選択肢 |
集積所の番号は、フォームで入力させ、台帳に無い番号は受け付けないようにします。番号の打ち間違いは、そのまま別の町内会の記録になります。台帳に無ければ、その回答は台帳に載せず、担当者の確認のシートに回します。
写真はドライブから取り出してBase64にし、インラインで渡します。 スマートフォンの写真は1枚で数MBあり、Base64にすると大きさが増えます。フォームの側で枚数を3枚まで、1枚の大きさに上限を設けておき、 合計が20MBに近づくときは1枚ずつ別のリクエストで渡します。
AIへ渡す前に整形する
- 集積所の番号を確かめる … 台帳に無い番号は、確認のシートに回す
- その日の収集の区分を決める … 送信の日付の曜日と、収集日程の例外から、その集積所のその日の区分を出す
- 写真の形式を確かめる … JPEG、PNG、WEBP、HEIC、HEIF のいずれかであること。それ以外は確認のシートへ
- 写真の大きさを確かめる … 合計がリクエストの上限に近ければ、1枚ずつに分ける
- 重複を除く … 同じ集積所から同じ日に10分以内に2回送られたものは、続きとしてまとめる
- 分別の区分の一覧を添える … AIに選ばせる区分と、代表的な品目の一覧を入れる
2番目が、第1章で書いた「写真で分からないことを規則で決める」の材料です。 AIには、その日がどの区分の収集日かを渡しません。渡すと、AIが写真を見ずに「収集日の誤り」と答えるようになります。 区分の照らし合わせは、AIの答えが返ってきた後に Apps Script で行います。
写真の大きさは、費用にも効きます。 画像は、縦横とも384ピクセル以下なら258トークン、それより大きければ768×768ピクセルのタイルに分けて1タイルごとに258トークンと数えるとされています。また、media_resolution のパラメータで、1枚の画像に割り当てる最大のトークン数を決められるとされています。品目を見分けるのに細かい解像度は要らないことが多いので、試す段階で精度と費用の釣り合いを見ます。
AIに処理させる
| させること | 中身 |
|---|---|
| 写真の状態 | 見分けられる写真か。暗い、ぶれている、ごみが写っていない |
| 品目 | 写っている品目を、分別の区分の一覧の中から選ぶ。根拠の見え方を短く書く |
| 違反の種類 | 下の表の中から選ぶ。写真から判断できないものは選ばない |
| シールの写り | 警告のシールが写っているか |
| 写り込み | 宛名、人の顔、車のナンバーなど、個人を特定しうるものが写っているか |
| 違反の種類 | 写真で見分けられるか |
|---|---|
wrong_sorting(分別の誤り) | 見分けられる。中身が透けて見える場合 |
non_designated_bag(指定袋でない) | 見分けられる。袋の色と印刷 |
hazardous_mixed(危険物の混入) | 見分けられる。スプレー缶、電池、ライターなど |
bulky_item(粗大ごみ) | 見分けられる。大きさと品目 |
appliance_recycling(家電リサイクルの対象) | 見分けられる。エアコン、テレビ、冷蔵庫、洗濯機の形 |
business_waste_suspected(事業系の疑い) | 疑いまで。大量の同じ梱包材など |
| 収集日の誤り | 見分けられない。 Apps Script が区分の照らし合わせで決める |
表のいちばん下の行は、AIの選択肢に入れません。 写真に写っているのは「今日ここにあるごみ」だけで、今日がそのごみの日かどうかは写っていないからです。
| させないこと | 理由 |
|---|---|
| 収集日の誤りの判定 | 写真に写っていない。規則で決める |
| 宛名や名前の書き写し | 個人の情報を台帳に残さない |
| 排出者の推測 | 啓発は集積所と町内会の単位で行う |
| 不法投棄かどうかの判断 | 通報するかは担当者と警察が決める |
| 一覧に無い区分を作る | 市の区分とずれる |
2行目がいちばん起きやすい失敗です。 写真に郵便物が写っていると、AIは親切のつもりで「○○様宛の封筒」と根拠に書きます。根拠の欄は台帳にそのまま残るので、指示で禁じ、写り込みは印だけにします。
指示内容を固定する
あなたは市の清掃事務所で、収集できなかったごみの写真を記録する担当者です。
渡された写真だけを見て、品目と違反の種類を記録してください。推測で埋めないでください。
【品目の選び方】
- 品目は、下の「分別の区分の一覧」の区分から選んでください。一覧に無い区分を作らないでください。
- 写っている品目を最大5つまで、目立つものから順に挙げてください。
- 各品目について、写真のどこにどう見えるかを evidence に短く書いてください(例:袋の右下に缶が透けて見える)。
- 袋の中身が見えない場合は、中身を推測せず「中身不明」としてください。
【違反の種類の選び方】
- 次の6つから、写真で確かめられるものだけを選んでください。
wrong_sorting, non_designated_bag, hazardous_mixed, bulky_item,
appliance_recycling, business_waste_suspected
- 収集日を間違えたかどうかは、写真から判断しないでください。選択肢にもありません。
- スプレー缶、電池、ライター、刃物が見えた場合は、必ず hazardous_mixed を選んでください。
- business_waste_suspected は「疑い」です。断定する書き方をしないでください。
【厳守事項】
- 宛名、氏名、住所、電話番号、車のナンバーなど、写真に写った文字を書き写さないでください。
写っていた場合は personal_info_visible を true にするだけにしてください。
- 誰が出したか、どの家から出たかを推測しないでください。
- 不法投棄にあたるかどうかを書かないでください。
- 写真が暗い、ぶれている、ごみが写っていない場合は photo_usable を false にし、
品目と違反の種類を空にしてください。
- 作業員の選んだシールの区分に合わせて答えを変えないでください。写真から見えたとおりに答えてください。
【分別の区分の一覧】{sorting_categories}
【作業員のメモ】{worker_note}
「シールの区分に合わせて答えを変えない」と書いているのは、照らし合わせの意味を守るためです。 作業員の選んだ区分は、指示の中に入れていません。入れると、AIはそれに寄せて答え、第5章の6番目の照らし合わせが空振りになります。 作業員のメモだけは、写真の角度で見えない事情(「袋の底にびん」など)が書かれることがあるので渡します。
「中身不明」を明記しないと、袋の色から中身を決めます。 燃やすごみの指定袋なら燃やすごみ、と答えるのが自然だからです。見えていないものを見えたことにしないのが、この記録の最低限の約束です。
月初の啓発文の案は、別の指示で作ります。 渡すのは写真ではなく、Apps Script が集計した町内会ごとの数字だけです。
あなたは市の清掃事務所で、町内会に回覧してもらう、ごみの出し方のお知らせを書く担当者です。
渡された「先月の集計」だけを根拠に、回覧用のお知らせの案を400字以内で書いてください。
- 件数の多かった品目と違反の種類を、多い順に2つまで具体的に書いてください。
- それぞれについて、市の正しい出し方を「分別の区分の一覧」から1文で添えてください。
- 数字は集計に書かれた値だけを写し、計算しないでください。
- 特定の集積所の利用者や家を責める書き方、「違反者」という言葉を使わないでください。
- 集計に無い品目や、前の月との比較を書かないでください。
【先月の集計】{monthly_counts} 【分別の区分の一覧】{sorting_categories}
写真を渡さないのは、啓発文に写り込みが入り込む経路を断つためです。 集計の数字だけなら、個人の情報が文書に混ざることはありません。
出力形式を固定する
構造化出力で、次の形のJSONを受け取ります。
{
"photo_usable": true,
"items": [
{ "category": "", "label": "", "evidence": "" }
],
"violations": [
{ "type": "wrong_sorting | non_designated_bag | hazardous_mixed | bulky_item | appliance_recycling | business_waste_suspected",
"evidence": "" }
],
"sticker_visible": true,
"personal_info_visible": false,
"unclear_points": ""
}
JSONで受けるのは、台帳の列にそのまま入れるためです。 Gemini API の構造化出力は JSON Schema の一部に対応していて、enum で分類の値を固定できます。category を分別の区分の一覧で、type を6つの値で固定すれば、 第3章の(b)の書き方のばらつきが起きません。
ただし、形が正しいことと、値が正しいことは別です。 公式の説明でも、出力は構文として正しいJSONになるが、値はアプリケーションの側で必ず確かめるようにとされています。Apps Script の側で、category が一覧にあるか、photo_usable が false なのに品目が入っていないかを確かめます。
AIの答えを受けた後、Apps Script が次の列を足して台帳に書きます。
| 列 | 決め方 |
|---|---|
| 収集日の誤り | 品目の区分が、その日の収集の区分に含まれなければ「あり」 |
| シールとの不一致 | AIの違反の種類と、作業員のシールの区分が合わなければ「あり」 |
| 確認の要否 | 不一致、危険物、写り込み、写真不可、事業系の疑いのどれかがあれば「要確認」 |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Google フォーム | フォーム送信時のトリガー | 回答と写真のファイルを受け取る |
| Google ドライブ | Apps Script から読む | 写真を取り出す |
| 集積所の台帳 | Apps Script から読む | 町内会と収集の区分を引く |
| Gemini API | Apps Script から HTTP で呼ぶ | 品目と違反の種類、啓発文の案 |
| 取り残しの台帳 | Apps Script から書く | 1件1行で記録する |
| 担当者への通知 | メール | 危険物と写真不可のものだけ、その日のうちに知らせる |
Apps Script には実行の上限があります。 1回の実行は6分まで、トリガーの合計の実行時間は Google Workspace のアカウントで1日6時間まで、外部へのURLの呼び出しは1日10万回までとされています。1件ずつの処理は数十秒で終わるので、ふだんは届きません。届きうるのは、月初の啓発文の案づくりです。 町内会が百を超えると6分に収まらないので、15町内会ずつに区切り、処理した町内会に印を付けて、次のトリガーで続きから動かします。 トリガーの数は1つのスクリプトで1人20個までとされているので、区切りごとにトリガーを足していく作り方はしません。
メールの通知は、件数を絞ります。 メールの受信者数にも1日の上限があります。通知は危険物と写真不可に限り、 それ以外は台帳の「要確認」の列で見ます。
人が確認する
人が見るのは「要確認」の行です。 次の順で見ます。
- 危険物 … 収集車の火災の原因になる品目です。その日のうちに集積所の掲示と、町内会への連絡を検討します
- 写真不可 … 作業員に撮り直しか、メモでの補足を頼みます
- シールとの不一致 … 写真を開き、どちらが正しいかを決めて直します
- 写り込み … 写真の閲覧の範囲を限り、啓発の資料に使わない印を付けます
- 事業系の疑い … 事業系のごみの担当に回します。この構成では断定しません
「要確認」でない行は、週に一度、件数と品目の並びを流し見ます。 AIと作業員の見立てが一致した行なので、1行ずつ写真は開きません。全件を開く運用にすると、第10章の18.0時間には収まりません。
直したときは、直す前の値と並べて残します。 どの品目で見誤りが多いかが分かれば、分別の区分の一覧に代表的な品目を足して直せます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 集積所の番号が台帳に無い | 台帳に載せず、確認のシートへ。作業員に番号を確かめる |
| 写真が添付されていない | 台帳に「写真なし」で載せ、シールの区分だけで記録する |
| 写真の形式が対応外 | 確認のシートへ。スマートフォンの保存形式の設定を見直す |
| リクエストが大きすぎる | 1枚ずつに分けて呼び直す |
| AIの応答がJSONの形にならない | 1回だけ呼び直す。続けば確認のシートへ |
| 一覧に無い区分が返ってきた | その品目を「区分不明」にして要確認へ |
| 6分の上限で止まった | 処理済みの印のある行の次から、次のトリガーで続ける |
| 祝日の振替の日 | 収集日程の例外で区分を決める。例外の一覧が古いと誤った「収集日の誤り」が出る |
最後の行は、年に何度か必ず起きます。 年末年始と大型連休の前に、収集日程の例外の一覧を更新する作業を、年間の予定に入れておきます。
記録を残す
- フォームの回答と、写真のファイルのID
- AIに渡した指示と、返ってきたJSONの全文
- 規則で足した列(収集日の誤り、シールとの不一致、確認の要否)
- 担当者が直した値と、直す前の値
- 月ごとの集計と、啓発文の案と、実際に送った文書
- 写り込みの印と、その写真の閲覧の範囲
写真そのものは、保存の期間を決めて消します。 取り残しの記録として要るのは品目と違反の種類で、写真をいつまでも残すと、写り込んだ宛名もいつまでも残ります。 保存の期間は、庁内の文書の取り扱いの決まりに合わせて決めます。
04実装レベルの3段階
半自動化が、本記事の想定です。 写真と集積所がフォームで結び付き、品目と違反の種類がそろった言葉で台帳に入り、月初には集計と案が出ています。1件6分が2分になるのはこの段階です。 本格構成は、地図や経路のシステムとの連携が要ります。 地図に重ねる仕組みや、収集の経路を持つシステムは市によって違うため、この部分は利用環境に合わせた個別の実装になります。 半自動化で半年分の台帳がたまってから考えても遅くありません。
05工数削減シミュレーション
導入後 540件 × 2分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 集積所が数千か所あり、分別の誤りや収集日の誤りで収集しなかったごみに警告のシールを貼って写真を撮る運用がある市町村の清掃事務所。写真と作業日報を帰庁後に事務の担当者が見比べ、表計算の台帳に手で書き写している場合。町内会や自治会への啓発の文書を、担当者の手持ちの文例から毎月作っている場合。マンションのごみ置き場を巡回する管理会社や、収集運搬を受託する事業者にも同じ形が当てはまります。
- 収集しなかったごみが月に数十件で、目視と手書きの台帳で足りる場合。作業員に業務用のスマートフォンが配られておらず、写真を撮る運用がない場合。外部のクラウドサービスに写真を送ることが庁内の情報セキュリティポリシーで認められていない場合。なお、不法投棄として警察に通報するか、排出者を調べて指導するかといった判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の取り残しの写真から50枚を選ぶ(危険物、家電、粗大ごみ、中身の見えない袋を必ず入れる)
- その50枚について、当時の台帳の記録を並べる
- 分別の区分の一覧と第7章の指示を、手元の生成AIの画面に貼り、写真を1枚ずつ渡す
- 返ってきた品目と違反の種類を、当時の記録と見比べる
- 宛名が写った写真で、AIが宛名を書き写していないかを確かめる
| 出てきた内容 | 判断 |
|---|---|
| 当時の記録と同じ品目と違反が出た | フォームと Apps Script をつなぐ段階へ進む |
| 中身の見えない袋の中身を決めて答えた | 指示の書き方で直る。構成は有効 |
| 写真が暗く、見分けられない枚数が多い | 撮り方の決まりが先。 フラッシュ、距離、袋の向きを決める |
3行目が出ても、失敗ではありません。 今の記録が、担当者の推測で埋められていた部分があるということです。撮り方の決まりを1枚の紙にまとめ、作業員に配ってから撮り直したものでもう一度試してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが収集日の誤りを答える | 選択肢から外し、その日の区分を渡さない。規則で決める |
| AIが宛名を根拠に書き写す | 指示で禁じ、写り込みは印だけにする |
| 袋の色から中身を決める | 見えないものは「中身不明」と明記させる |
| シールの区分にAIが寄せる | シールの区分を指示に入れない |
| 市の区分と違う分け方で答える | 分別の区分の一覧を渡し、enum で固定する |
| 祝日の振替の日に誤った判定が出る | 収集日程の例外の一覧を年間の予定で更新する |
| 月初の処理が6分で止まる | 町内会を区切り、処理済みの印から続ける |
| トリガーが担当者の異動で止まる | 共用の管理用アカウントで作る |
| フォームでファイルのアップロードが使えない | 共有ドライブ上のフォームでは使えない。置き場所を変える |
| 無料のサービスで個人の情報を送る | 有料のサービスを前提にする |
| 啓発文が集積所の利用者を責める文面になる | 集計の数字だけを渡し、責める言い方を指示で禁じる |
上の2行が、この構成の考え方そのものです。 写真で分かることだけをAIに見させ、写真から分かってしまうこと(宛名)は見なかったことにさせます。 この2つが守れていれば、台帳は記録として使えます。
最後の行は、町内会との関係に直接ひびきます。 回覧の文書は町内会長の名前で配られることが多く、責める文面の回覧は、町内会長が住民から苦情を受けることになります。 案を直す担当者も、文面の調子を最初に見てください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 集積所の写真(ごみの中身、ときに郵便物の宛名、通行人、車のナンバー)、集積所の所在地と町内会、作業員のメモです。
- 排出者を特定する目的で使わない … 写真に宛名が写っていても、この構成はそれを読まず、記録にも残しません。 排出者を調べて指導するかどうかは、庁内の決まりに従って担当者が判断する別の手続きです
- データの扱いを確かめる … Gemini API は、無料のサービスでは送った内容が改善に使われ、人が読むことがあるとされています。有料のサービスで使い、庁内の情報セキュリティポリシーに照らして、外部のクラウドに写真を送ってよいかを先に確かめます
- 啓発文に写真を付けない … 啓発の文書には品目と件数だけを書きます。写り込みの印が無い写真でも、特定の家の前だとわかる構図のものは使いません
- 写真の閲覧の範囲を限る … フォームのファイルが保存されるドライブのフォルダは、清掃事務所の担当者だけが見られるようにします
- この構成は不法投棄の判断を代替しない … 大量の投棄や事業系の疑いは、担当者が現場を確かめて判断します
誤りが起きた場合のリスクは、誤った品目で町内会に啓発文を出すことと、写り込んだ個人の情報が台帳や文書に残ることです。 前者は啓発文を人が直すことで、後者は書き写しを禁じることで防ぎます。どちらも、AIの答えをそのまま外に出さない設計で守ります。
10まず何から始めるか
1週目:分別の区分の一覧と集積所の台帳を整える
市の分別の区分と代表的な品目を一覧にし、集積所の台帳に町内会と曜日ごとの収集の区分の列がそろっているかを確かめます。収集日程の例外(祝日の振替)も一覧にします。
2週目:50枚で試す
先月の写真から50枚を選び、手元の生成AIで品目と違反の種類を答えさせます。中身の見えない袋の中身を決めていないか、宛名を書き写していないかを最優先で見ます。
3週目:撮り方の決まりとフォームを作る
撮る距離、袋の向き、暗いときのフラッシュを1枚の紙にまとめ、Google フォームを作ります。2つの収集班で、日報の代わりにフォームを使ってもらいます。
4週目:Apps Script でつなぐ
フォーム送信時のトリガーで Gemini API を呼び、台帳に書くところまで作ります。この時点では月初の啓発文は作らず、台帳の記録と「要確認」の割合だけを見ます。
2か月目: 全班に広げ、月初の集計と啓発文の案を足します。3か月目以降: 1件6分が何分になったかを測ります。町内会長に送る文書に、その町内会で多かった品目が具体的に書かれるようになった時点で、この構成は完成です。
11関連ユースケース
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Gemini API が画像を入力として扱えること。URL、Base64のインライン、File API の3つの渡し方があること。インラインの場合はリクエスト全体が20MBまでであること。対応形式が PNG、JPEG、WEBP、HEIC、HEIF であること。1回のリクエストに最大3,600枚の画像を含められること。縦横とも384ピクセル以下は258トークン、それより大きい画像は768×768ピクセルのタイルごとに258トークンであること。media_resolution で1枚あたりの最大トークン数を決められること | Google AI for Developers: Image understanding | 2026-10-05 |
構造化出力が JSON Schema の一部に対応し、enum や required を使えること。出力は構文として正しいJSONになるが、値はアプリケーションの側で確かめるべきとされていること | Google AI for Developers: Structured output | 2026-10-05 |
| 無料のサービスでは送った内容が製品の改善に使われ、人が読むことがあり、機密や個人の情報を送らないよう求められていること。有料のサービスではプロンプトと応答を製品の改善に使わず、不正利用の検知のために限られた期間だけ記録すること | Google AI for Developers: Gemini API Additional Terms of Service | 2026-10-05 |
| インストール可能なトリガーに「フォーム送信時」と時間主導型があり、時間主導型は最短1分ごと・最長月1回で動かせること。作成した人のアカウントで動くこと。失敗時に作成者へメールが届くこと | Google for Developers: Installable triggers | 2026-10-05 |
| 1回の実行が6分まで、トリガーの合計実行時間が Google Workspace のアカウントで1日6時間まで、URLの呼び出しが1日10万回まで、トリガーが1スクリプトあたり1人20個までであること。メールの受信者数に1日の上限があること | Google for Developers: Quotas for Google Services | 2026-10-05 |
| 「ファイルのアップロード」の質問に答えるには Google アカウントへのログインが必要なこと。ファイルがフォームのオーナーのドライブの新しいフォルダに保存されること。形式・最大数・最大サイズを設定できること。共有ドライブ上のフォームやデータ損失防止が有効な場合は使えないこと | Google ドキュメント エディタ ヘルプ: フォームの質問の形式を選択する | 2026-10-05 |
分別の区分、収集日程、警告のシールの区分は、市町村ごとに異なります。 本記事は特定の市の区分を確かめたものではありません。写真の取り扱いと保存の期間は、庁内の個人情報の取り扱いと文書の管理の決まりに従ってください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0425)についてのご相談はこちらから。
