建設現場で協力会社からメール・チャットでばらばらの形で届く作業日報を拾い、元請けの工事日報の様式(作業内容・人数・資機材)にそろえてまとめる
協力会社の職長からメールやチャットで届く作業日報を拾い、作業内容・人数・資機材などの決まった項目に読み取ります。現場ごと・日ごとに並べ、元請けの工事日報の様式にそろえた下書きにします。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 建設/製造
- 対象部門
- 生産
- 対象業務
- データ入力・転記/記録・議事録作成
- 主な課題
- 人手が足りない/入力作業が多い/期限・対応漏れが起きる
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 夕方、工事担当者が現場のチャンネルと代表アドレスのメールを開き、その日の日報を探す
- 1件ずつ読み、協力会社名、作業場所、作業内容、人数、資機材を工事日報の様式に打ち込む
- 手書きの日報の写真は、拡大して読む。読めない字は職長に電話で聞く
- その日の作業予定と見比べ、日報が届いていない協力会社に電話かチャットで催促する
- 全社分がそろったら、工事日報を所長に回して確認を受ける
- 月末に、日報から協力会社ごとの出面を集計する
- 人協力会社の職長が、これまでどおり現場のチャンネルか代表アドレスへ日報を送る
- 自動ワークフローが新しいメールとチャットの書き込みを拾い、送り主から協力会社を特定する
- 自動本文と添付の写真を、生成AIに渡せる形にそろえる
- 自動生成AIが、作業日・作業場所・作業内容・人数・作業時間・資機材・翌日の予定・安全上の特記事項を読み取る。書かれていない項目は「不明」とする
- 自動資機材の名前を、現場の資機材の辞書に照らして正式な名前にそろえる
- 自動読み取った結果を、現場・日付・協力会社ごとの一覧に1行ずつ書く
- 自動夕方6時に、その日の作業予定と一覧を突き合わせ、日報が届いていない協力会社と、項目が「不明」の行を工事担当者に知らせる。確認の文面の下書きを添える
- 人工事担当者が一覧を見て、「不明」の行と読み取りに自信のない行を確かめ、必要なら職長に確認する
- 自動工事担当者が確定した一覧から、工事日報の様式の文書を作る
- 人所長が工事日報を確認する
各工程の詳しい説明を読む
- 夕方、工事担当者が現場のチャンネルと代表アドレスのメールを開き、その日の日報を探す
- 1件ずつ読み、協力会社名、作業場所、作業内容、人数、資機材を工事日報の様式に打ち込む
- 手書きの日報の写真は、拡大して読む。読めない字は職長に電話で聞く
- その日の作業予定と見比べ、日報が届いていない協力会社に電話かチャットで催促する
- 全社分がそろったら、工事日報を所長に回して確認を受ける
- 月末に、日報から協力会社ごとの出面を集計する
(a)書き方がばらばらで、読む場所が決まらない。 「3F 型枠 5人 ユニック1」と書く会社もあれば、「本日は3階の柱・壁の型枠の建て込みを行いました。作業員は職長を含め5名」と文章で書く会社もあります。同じ内容を、毎回違う場所から拾う作業になります。
(b)人数の書き方が一定しない。 「5名」と書く会社、職長と作業員を分けて書く会社、作業員の氏名を並べるだけの会社。氏名の列挙から人数を数え直すのは、毎日の地味な手間です。 数え間違えると、月末の出面の集計がずれます。
(c)届いていない日報に気づくのが遅い。 打ち直しが夜までかかると、4番目の催促ができないまま一日が終わります。職長が帰った後では、翌日まで日報がそろいません。 翌朝の朝礼の資料に穴が開きます。
(d)資機材の名前がそろわない。 「ユニック」「4tユニック」「クレーン付きトラック」。同じ車両でも会社によって呼び方が違い、月末に台数を数えるときに困ります。 揚重の計画と突き合わせることもできません。
- 【人】 協力会社の職長が、これまでどおり現場のチャンネルか代表アドレスへ日報を送る
- 【自動】 ワークフローが新しいメールとチャットの書き込みを拾い、送り主から協力会社を特定する
- 【自動】 本文と添付の写真を、生成AIに渡せる形にそろえる
- 【自動】 生成AIが、作業日・作業場所・作業内容・人数・作業時間・資機材・翌日の予定・安全上の特記事項を読み取る。書かれていない項目は「不明」とする
- 【自動】 資機材の名前を、現場の資機材の辞書に照らして正式な名前にそろえる
- 【自動】 読み取った結果を、現場・日付・協力会社ごとの一覧に1行ずつ書く
- 【自動】 夕方6時に、その日の作業予定と一覧を突き合わせ、日報が届いていない協力会社と、項目が「不明」の行を工事担当者に知らせる。確認の文面の下書きを添える
- 【人】 工事担当者が一覧を見て、「不明」の行と読み取りに自信のない行を確かめ、必要なら職長に確認する
- 【自動】 工事担当者が確定した一覧から、工事日報の様式の文書を作る
- 【人】 所長が工事日報を確認する
8番目が、この設計の分かれ目です。 全行を読み直すのではなく、「不明」と自信のない行だけを見ます。 全部を確かめる運用にすると、打ち直しが読み直しに変わるだけで時間は減りません。
7番目の催促の文面は、下書きまでにします。 送るかどうかは工事担当者が決めます。職長が日報を別の経路で送っていた、その日は作業が中止になった、といった事情は一覧からは分からないからです。
02今回想定するシステム構成
協力会社の職長 ├─ 現場の代表アドレスへメール(本文・写真の添付) └─ 現場の Slack のチャンネルへ書き込み(本文・写真) │ ▼【トリガー】Make の Gmail「Watch emails」/Slack「Watch Private Channel Messages」 Make(シナリオ1:届いた日報の読み取り) ├──▶ 送り主から協力会社を特定(協力会社の一覧) ├──▶ 添付の写真を取り出す(List email attachments and media/Download a File) ▼ Claude API(Make の Anthropic Claude アプリ「Make an API Call」) │ 本文と写真から、決まった項目を読み取る │ structured outputs で決まった形のJSONを返す ▼ Make ── 資機材の名前を辞書でそろえる → 日報の一覧(スプレッドシート)へ1行 ▼【トリガー】毎日18時のスケジュール Make(シナリオ2:取りまとめ) ├──▶ 作業予定と突き合わせ、未着と「不明」を出す → 工事担当者へ通知 ▼ 【人】工事担当者が確認・確定 ▼ Make ── 工事日報の様式に流し込む(Google ドキュメント「Create a Document from a Template」)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make | Zapier、Power Automate、n8n |
| 生成AI | Claude API(Make の Anthropic Claude アプリ) | OpenAI API、Gemini API |
| 連携 | Slack(現場のチャンネル) | Microsoft Teams |
| 文書 | Google ドキュメント(工事日報の様式) | Microsoft Word |
| 保管 | Google スプレッドシート(日報の一覧・協力会社の一覧・資機材の辞書・作業予定) | SharePoint リスト |
新しく足すのは、ワークフローと生成AIだけです。 メールとチャットの経路は協力会社がすでに使っているものをそのまま使い、職長に新しいアプリの入力を頼みません。 入力の手間を協力会社の側に移すと、日報そのものが届かなくなるからです。
メールの取り込みには、Make の Gmail の「Watch emails」を使います。 新しいメールが届いたときに動くトリガーで、条件の指定に、選択式の「Simple filter」と、Gmail の検索式を書く「Gmail filter」があります。送り主のアドレス、件名、含む語、添付の有無で絞り込めます。 1回に取る件数の上限は500件以下とされています。添付は「List email attachments and media」で取り出します。
個人の @gmail.com アカウントには制約があります。 Google は Make のようなアプリから Gmail へのアクセスを、個人の @gmail.com アカウントでは6か月に制限しており、6か月ごとに再認証が要るとされています。現場の代表アドレスは、会社の Google Workspace のアカウントにします。
チャットの取り込みには、Slack の「Watch Private Channel Messages」を使います。 非公開のチャンネルに新しい書き込みがあったときに動くモジュールで、公開チャンネル用、ダイレクトメッセージ用のものもあります。Slack のモジュールは、Slack のユーザーのアカウントでの接続が前提です。写真は「Download a File」で取り出します。
03どうやって実装するのか
処理の起点を決める
トリガーは2つあります。届いた日報を1件ずつ読むものと、夕方にまとめるものです。
1件ずつ読む側は、Gmail の「Watch emails」と Slack の「Watch Private Channel Messages」です。どちらも、届いた順に動かします。 夕方にまとめて読むと、未着に気づくのが遅れ、催促が職長の帰った後になります。Make のシナリオのスケジュールを「一定間隔」にし、15分ごとに見に行く設定にします(最短の間隔は契約のプランで異なります)。
まとめる側は、毎日18時に動くスケジュールです。 その日の作業予定と一覧を突き合わせ、未着と「不明」を工事担当者に知らせます。19時30分にもう一度動かし、遅れて届いたものを反映します。
Gmail の側は、送り主で絞ります。 協力会社の一覧に登録されたアドレスから届いたものだけを拾い、広告や他の連絡を読み取りに回しません。 一覧に無いアドレスから「日報」を含む件名で届いたものは、別のラベルを付けて工事担当者に回します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 日報の本文 | メールの本文、チャットの書き込み | Gmail/Slack |
| 日報の写真 | 手書きの日報、ホワイトボードの写真 | メールの添付、チャットのファイル |
| 協力会社の一覧 | 会社名、職種、職長の氏名、メールアドレス、Slack のユーザー | スプレッドシート |
| 作業予定 | 日付、現場、入る予定の協力会社、作業場所、予定の作業 | 工程表から作った予定表 |
| 資機材の辞書 | 正式な名前と、協力会社が使う呼び方の一覧 | スプレッドシート |
| 過去の訂正 | 同じ日・同じ会社の、前に届いた日報と訂正の書き込み | 日報の一覧 |
質を決めるのは、協力会社の一覧と資機材の辞書です。 一覧にメールアドレスや Slack のユーザーが登録されていなければ、送り主から会社を特定できません。辞書が無ければ、「ユニック」と「4tユニック」は別の資機材として数えられます。
作業予定は、未着を見つけるために使います。 予定に載っていない会社から日報が届いたときも、一覧に出します。予定の変更が現場で決まって、予定表に反映されていないことがあるからです。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| メールの本文と添付 | Gmail の「Watch emails」と「List email attachments and media」 | 日報の本文と写真 |
| チャットの書き込みとファイル | Slack の「Watch Private Channel Messages」と「Download a File」 | 同上 |
| 送り主の会社 | 協力会社の一覧の検索 | 協力会社名と職種を確定させる |
| その日の作業予定 | 予定表の検索 | 未着の判定、作業場所の候補 |
協力会社は、送り主のアドレスとユーザーで決めます。AIに本文から推し量らせません。 職長が本文に会社名を書かないことは珍しくなく、書いていても略称です。会社の特定を誤ると、出面が別の会社に計上されます。
チャットは、スレッドの返信も拾います。 「さっきの人数、6名に訂正です」のような訂正は、元の書き込みへの返信として届くことが多いからです。訂正は、元の日報と同じ日・同じ会社の行に結び付けて扱います。
AIへ渡す前に整形する
- 送り主の特定 … アドレスまたは Slack のユーザーから、協力会社の一覧を引きます。一覧に無ければ「送り主不明」として人へ回します
- 日報かどうかの見分け … 件名や本文に、日報の語や日付がなく、短いあいさつや質問だけのものは、読み取りに回しません
- 署名と引用の除去 … メールの署名と、過去のやり取りの引用部分を外します
- 写真の形式の確認 … Claude が受け付ける形式は JPEG、PNG、GIF、WebP です。それ以外の形式は変換します
- 写真の大きさの確認 … 直接のAPIで1枚10MBまで、縦横8000ピクセルまでとされています。スマートフォンの写真は大きいので、縮小して送ります
- 作業日の候補を付ける … 届いた日時を渡します。深夜0時を過ぎて届いた日報は、前日のものの可能性があることを指示に書きます
- 同じ日・同じ会社の前の日報を探す … 2件目なら、訂正か追加かを判断する材料として前の内容を渡します
5番目は、読み取りの精度と費用の両方に効きます。 公式の説明では、画像は大きすぎると縮小されて処理され、縮小で文字が読みにくくなることがあるとされています。手書きの日報は、用紙の部分だけを切り出してから送るのが確実です。
6番目を忘れると、作業日がずれます。 夜遅くに送ってくる職長は少なくありません。届いた日付をそのまま作業日にすると、月末の出面の集計で、ある日が0名、次の日が倍になります。
AIに処理させる
させるのは、本文と写真から決まった項目を読み取り、書かれていない項目を「不明」と返すことだけです。
| 読み取る項目 | 読み取り方 | 書かれていないときの扱い |
|---|---|---|
| 作業日 | 本文の日付。無ければ届いた日時を候補にする | 候補のまま、date_source に「受信日時」と書く |
| 作業場所 | 階、工区、通り芯、部屋名 | unknown |
| 作業内容 | 何の作業を行ったか(型枠の建て込み、配筋、配管など) | unknown |
| 人数 | 職長と作業員の人数。合計だけならその値 | unknown。氏名だけなら列挙された数を別の欄に |
| 作業時間 | 開始と終了、または残業の有無 | unknown |
| 資機材 | 名前と台数 | none_stated |
| 翌日の予定 | 翌日の作業と予定人数 | unknown |
| 安全上の特記事項 | ヒヤリハット、けが、指摘を受けたこと | none_stated |
人数の行がいちばん大事です。 「作業員:山田、佐藤、鈴木」のように氏名だけが並ぶ日報は、人数が書かれているわけではありません。 列挙された氏名の数は別の欄に入れ、headcount は unknown のままにします。職長が自分を数えていない、応援の作業員を書き忘れた、という食い違いがあるためです。 確定は工事担当者が行います。
| させないこと | 理由 |
|---|---|
| 協力会社の特定 | 送り主で決める。本文の略称から推し量らない |
| 書かれていない人数の推定 | 出面は安全管理と精算の根拠。前日の人数で埋めない |
| 資機材の名前の言い換え | 辞書でそろえる。AIに正式名を作らせない |
| 安全上の特記事項の評価 | 重さの判断は工事担当者と所長が行う |
| 作業予定との食い違いの判断 | 突き合わせはワークフローの規則で行う |
2行目の「前日の人数で埋めない」は、指示に明記します。 同じ会社の前日の日報を渡していると、今日の人数が書かれていないときに前日の値を写してくることがあります。値として正しく見えるので、人の確認でも見落とされます。
指示内容を固定する
あなたは建設現場の元請けで、協力会社から届いた作業日報を
工事日報の項目に読み取る立場です。
渡された本文と画像に書かれていることだけを読み取ってください。
【読み取る項目】
work_date / location / work_description / headcount(foreman, workers, total)/
work_hours / equipment(name_as_written, count)/ next_day_plan / safety_notes
【厳守事項】
- 書かれていない項目は "unknown" にしてください。推測で埋めないでください
- 人数は、数字で書かれているものだけを headcount に入れてください。
氏名が並んでいるだけのときは、headcount は unknown のままにし、
listed_names_count に並んでいた氏名の数を入れてください
- 前に届いた日報(previous_report)の値を、今日の値として写さないでください。
previous_report は、訂正か追加かを判断するためだけに使ってください
- 資機材は、書かれていた呼び方のまま name_as_written に入れてください。
正式な名前に言い換えないでください
- 作業日が本文に無いときは、受信日時を候補として入れ、
date_source を "received_at" にしてください。
受信が0時から5時の間なら、date_note に「前日の作業の可能性」と書いてください
- 手書きの文字が読めないときは、その項目を unreadable にし、
evidence に読めなかった箇所の様子を書いてください
- 安全上の特記事項は、書かれていた文をそのまま写してください。評価しないでください
- 日報ではない書き込みと判断したときは、document_type を "other" にしてください
- 訂正の書き込みのときは、is_correction を true にし、訂正された項目だけを入れてください
【協力会社】{company_name}(職種:{trade})
【受信日時】{received_at}
【前に届いた日報】{previous_report}
【本文】{body}
【画像】(添付)
「氏名の数を headcount に入れない」を書かないと、AIは数えて入れます。 数えること自体は正しいのですが、日報に書かれた人数と、工事担当者が確かめた人数の区別が消えます。 出面の記録として後から説明できなくなります。
「前の日報を写さない」は、渡し方の副作用への手当てです。 訂正を見分けるために前の日報を渡すと、それが空欄を埋める材料に見えます。使い道を限ることを、渡すのと同じ場所に書きます。
出力形式を固定する
次の形のJSONで受け取ります。 Messages API の structured outputs で output_config.format に json_schema を指定し、スキーマに沿った応答を受け取ります。
{
"document_type": "daily_report | other",
"is_correction": false,
"work_date": "",
"date_source": "body | received_at",
"date_note": "",
"location": "",
"work_description": "",
"headcount": { "foreman": "", "workers": "", "total": "" },
"listed_names_count": 0,
"work_hours": "",
"equipment": [ { "name_as_written": "", "count": "" } ],
"next_day_plan": "",
"safety_notes": "",
"unreadable_fields": [],
"evidence": ""
}
1つ目の理由は、「不明」を値として持てることです。 unknown、none_stated、unreadable を区別して返させると、書かれていないのか、資機材を使わなかったのか、読めなかったのかが一覧で分かります。工事担当者が職長に聞く内容が、それぞれ違います。
2つ目は、name_as_written と辞書を分けられることです。 資機材の正式な名前は、ワークフローが辞書で引いて別の列に入れます。辞書に無い呼び方は空欄のまま一覧に出し、工事担当者が辞書に足します。 足すほど、次からは自動でそろいます。
3つ目は、is_correction で訂正を機械的に扱えることです。 訂正なら同じ日・同じ会社の行を更新し、元の値を履歴の列に残します。
| 一覧の状態 | 付ける条件(ワークフローの規則) |
|---|---|
| 確認不要 | すべての項目が読み取れ、人数が数字で書かれている |
| 要確認 | unknown または unreadable の項目がある。人数が氏名の列挙だけ |
| 未着 | 作業予定に載っているのに、18時までに日報が無い |
| 予定外 | 作業予定に無い会社から日報が届いた |
| 送り主不明 | 協力会社の一覧に無いアドレス・ユーザー |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Gmail(現場の代表アドレス) | 「Watch emails」「List email attachments and media」 | 日報のメールと添付の写真 |
| Slack(現場のチャンネル) | 「Watch Private Channel Messages」「Download a File」 | 日報の書き込みと写真 |
| Claude API | Anthropic Claude アプリの「Make an API Call」 | 項目の読み取り |
| 日報の一覧・協力会社の一覧・辞書・予定表 | スプレッドシートの読み書き | 1件1行の記録、会社の特定、名前の統一、未着の判定 |
| 工事日報の様式 | Google ドキュメントの「Create a Document from a Template」 | 確定した一覧から現場ごと・日ごとの工事日報 |
協力会社への返信は、自動で送りません。 未着と「不明」の確認の文面は、工事担当者への通知に下書きとして添えます。送るのは工事担当者で、Slack なら自分のアカウントから書き込みます。
工事日報の文書は、工事担当者が一覧を確定してから作ります。 確定前の一覧から作ると、unknown の欄が空白のまま所長に回ります。空白は「0名」と読まれることがあります。
人が確認する
工事担当者が見るのは、18時の通知に出た行だけです。
- 「未着」を最初に見る … 職長が帰る前に確認します。作業が中止になった、別の会社にまとめて書いてもらった、といった事情を一覧の備考に書きます
- 「要確認」の人数を確かめる … 氏名の列挙だけの行は、職長に人数を確かめます。応援の作業員や職長自身を含むかを聞きます
- 読めなかった箇所を確かめる …
unreadableの項目は、写真を開いて読むか、職長に聞きます - 安全上の特記事項を読む … 書かれていたら、その日のうちに所長へ伝えます。翌朝の工事日報を待ちません
- 辞書に無い資機材の呼び方を足す … 空欄の正式名を埋め、辞書に1行足します
- 一覧を確定する … 確定した時点で工事日報の文書が作られます
4番目は、取りまとめとは別の流れとして扱います。 日報に「足場の手すりが外れていた」と書かれていたら、工事日報の項目として記録するだけでなく、すぐに動くべき連絡です。 通知の中でも、安全上の特記事項がある行は先頭に出します。
月末の出面の集計は、確定した人数だけを使います。 unknown が残っている日があれば、集計の段階で一覧に出し、常用の精算の前に必ず埋めます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 送り主が協力会社の一覧に無い | 「送り主不明」として人へ回す。新しく入った会社なら一覧に登録する |
| 1通に2社分の日報が書かれている | 会社を分けられないので「要確認」。職長に会社ごとに送ってもらうよう頼む |
| 1通に2日分が書かれている | 作業日ごとに分けて読み取らせ、date_source を確かめる |
| 写真が暗い・斜め・小さい | unreadable として人へ。用紙を正面から撮ってもらうよう頼む |
| Excel や PDF の日報が添付されている | 当面は人へ回す。本文か写真で送ってもらう運用に寄せる |
| 訂正が届いた | 同じ日・同じ会社の行を更新し、元の値を履歴に残す |
| 応答が拒否された・途中で切れた | stop_reason を見て、その件を「要確認」として人へ |
| 作業が中止になった日 | 予定表の側で中止にする。未着として毎日催促しない |
| 19時30分を過ぎて届いた | 翌朝の取りまとめに含める。作業日は本文の日付で決める |
1行目と2行目が、運用を始めた最初の月に多く出ます。 新しい協力会社の登録漏れと、1人の職長が複数の会社の作業員をまとめて報告する書き方です。どちらも取り決めで減らせるので、件数を数えて協力会社との打合せで伝えます。
記録を残す
- 届いたメール・書き込みの原文と、添付の写真
- 生成AIの応答のJSONの全文と、
stop_reason - 工事担当者が確かめて直した値と、直す前の読み取りの値
- 訂正の履歴(いつ、どの項目が、何から何に変わったか)
- 未着の催促を送った日時と、日報が届いた日時
- 辞書に足した資機材の呼び方
3つ目の「直す前の値」は、出面の記録を説明するためにも残します。 月末に協力会社から「この日は6名入っていた」と言われたとき、日報に何と書かれていて、誰がいつ確かめたかを示せます。
5つ目の未着の記録は、協力会社ごとに数えます。 毎週同じ会社が遅れるなら、送り方の取り決めを見直す材料になります。
04実装レベルの3段階
最小構成では、毎日の量はさばけません。 1件ずつ貼るので、読み取れるかを確かめるための段階です。 本記事の想定は半自動化です。 1件5分が1.5分になります。残るのは、「要確認」の行の確認と、未着の催促の判断です。読み取りが自動になっても、出面の確定は人が持ちます。 本格構成に進む前に、辞書と協力会社の一覧を整えてください。 半自動化を1か月回すと、辞書に無い呼び方と、一覧に無い送り主が一通り出そろいます。そこを埋めてから月末の集計を自動にしないと、集計の数字に穴が残ります。
05工数削減シミュレーション
導入後 480件 × 1.5分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 1つの現場に毎日5社以上の協力会社が入り、作業日報がメール本文、チャットの書き込み、手書きの日報の写真とばらばらの形で届く元請けの建設会社。工事担当者や現場事務が夕方にそれを読み、自社の工事日報の様式に打ち直している場合。協力会社の職長に、決まったメールアドレスか現場のチャットのチャンネルへ送ってもらう取り決めができる場合。
- 協力会社が数社に限られ、全社が元請けの指定した施工管理の仕組みに直接入力している場合。日報を紙で手渡ししており、メールやチャットで届く形がない場合。現場が月に数日しか稼働しない場合。なお、出面(人数)を常用の精算の根拠として確定させることや、安全上の判断は、この構成では代替できません。
07最小構成で試す方法
- 先週の1つの現場の日報を、5日分集める(メール、チャット、手書きの写真を混ぜる)
- その日に工事担当者が打ち込んだ工事日報も用意する
- 手元の生成AIの画面に、日報を1件ずつ貼り付ける(写真はそのまま添付する)
- 「この日報から、作業日・作業場所・作業内容・人数・作業時間・資機材・翌日の予定・安全上の特記事項を読み取ってください。書かれていない項目は不明としてください。氏名だけが並んでいる場合は人数を数えず、不明としてください」と指示する
- 出てきた結果を、工事担当者が打ち込んだ工事日報と項目ごとに突き合わせる
5日分でよいので、必ず手書きの写真を入れてください。 本文の読み取りはほぼ問題なく進むはずで、差が出るのは写真と人数の書き方です。
| 出てきた内容 | 判断 |
|---|---|
| 工事日報と同じ値が読み取れ、書かれていない項目が不明になっている | ワークフローの組み立てに進む |
| 氏名を数えて人数に入れた、前日の値で埋めた | 指示の書き方で直る。構成は有効 |
| 手書きの写真の大半が読めない | 撮り方の取り決めが先。 AIの問題ではない |
3行目が出たときは、写真の撮り方を職長にお願いします。 用紙を正面から、影が入らないように、用紙だけが写るように。それだけで読める割合は大きく変わります。 日報の用紙そのものを、元請けの様式に寄せてもらうのも効きます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 氏名の数が人数として入る | headcount と listed_names_count を分け、指示で数えないよう明記する |
| 前日の人数で空欄が埋まる | 前の日報の使い道を指示で限る。人数が前日と完全に同じ行に印を付ける |
| 深夜に届いた日報の作業日がずれる | 受信日時を候補とし、0時〜5時の受信に注記を付ける |
| 会社を取り違える | 送り主で決める。本文の略称から推し量らない |
| 資機材の数え方がそろわない | 辞書でそろえ、辞書に無いものは空欄で人へ |
| 手書きの写真が読めない | 用紙だけを正面から撮ってもらう。大きすぎる写真は縮小する |
| 個人の Gmail で6か月ごとに接続が切れる | 会社の Google Workspace のアカウントを使う |
| 訂正が別の行になる | スレッドの返信も拾い、is_correction で同じ行を更新する |
| 空欄が「0名」と読まれる | 確定前の一覧から工事日報を作らない |
| 安全上の特記事項が翌朝まで埋もれる | 通知の先頭に出し、その日のうちに所長へ伝える |
上の2行が、この構成の失敗のほとんどです。 どちらも人数の欄に、日報に書かれていない値が入る形です。値がそれらしく見えるので、人の確認でも通ってしまいます。 書かれていない人数は「不明」のまま、人が確かめて埋める。これを崩さないことが、出面の記録を信用できるものにします。
下の2行も、早いうちに決めておきます。 空欄の扱いと安全上の連絡は、取りまとめの手間とは別の問題です。工事日報を早く作ることより、正しく伝わることを優先してください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 協力会社の会社名、職長と作業員の氏名、人数と作業時間、作業場所、現場の写真、そして安全上の出来事の記録です。
- 外部へ渡す範囲を絞る … 生成AIに渡すのは、日報の本文と写真、協力会社名と職種までです。作業員の氏名は読み取りに必要ないので、本文から伏せて渡す設計にできます。人数の確認に氏名が要るときは、工事担当者が原文を見ます
- 現場の写真に写り込むものに気をつける … 手書きの日報の写真に、図面や施主の情報、他の作業員の顔が写っていることがあります。用紙だけを写すよう取り決め、送る前に切り出します
- 協力会社へ自動で送らない … 催促や確認の文面は下書きまでです。相手は他社の職長で、誤った催促は取引の関係にひびきます
- 出面を確定させない … この構成が出すのは、日報に書かれていた人数の読み取りまでです。常用の精算の根拠となる人数は、工事担当者が確かめて確定します
- 安全上の判断をさせない … 安全上の特記事項は、書かれた文をそのまま写させ、重さの判断と対応は工事担当者と所長が行います
- チャットの権限を絞る … Slack の接続は、取りまとめ用のアカウントにし、読む範囲を現場のチャンネルに限ります。 他のチャンネルの書き込みを拾わないようにします
誤りが起きた場合のリスクは、人数を誤って記録すること、会社を取り違えること、安全上の連絡が遅れることの3つです。 1つ目は unknown を埋めない指示と人の確認、2つ目は送り主での特定、3つ目は通知の先頭に出す規則で防ぎます。どれもAIの判断の外側で守るように組みます。
10まず何から始めるか
1週目:協力会社の一覧と送り先を整える
1つの現場の協力会社の一覧に、職長のメールアドレスと Slack のユーザーを登録します。あわせて、日報の送り先を現場の代表アドレスと現場のチャンネルの2つに決め、職長に伝えます。1通に1社分、写真は用紙を正面から、の2点も伝えます。
2週目:5日分で試す
先週の日報を5日分集め、手元の生成AIに読み取らせます。工事担当者が打ち込んだ工事日報と項目ごとに突き合わせ、氏名の数を人数に入れていないか、前日の値で埋めていないかを最優先で見ます。
3週目:辞書と予定表を作る
その現場でよく使う資機材の呼び方を集め、正式な名前との対応の辞書を作ります。工程表から、日ごとに入る予定の協力会社の予定表を作ります。予定表が無いと、未着が判定できません。
4週目:Make で一覧と18時の通知までをつなぐ
Gmail と Slack のトリガー、生成AIの呼び出し、一覧への書き込み、18時の未着と「不明」の通知までを作ります。最初の2週間は、工事担当者がこれまでどおり打ち込みも続け、両方を見比べます。
2か月目: 工事日報の様式への流し込みを足し、打ち込みをやめます。「要確認」の件数を協力会社ごとに数えます。3か月目以降: 他の現場に広げ、1件5分が何分になったかを実測します。月末の出面の集計で unknown が残らなくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Gmail のモジュールに、新しいメールで動く Watch emails、添付を取り出す List email attachments and media などがあること。Watch emails に Simple filter と Gmail filter があり、送り主・件名・含む語・添付の有無で絞れ、取得件数の上限が500以下であること | Make Apps: Gmail modules | 2026-10-06 |
| Google が Make のようなアプリからの Gmail へのアクセスを、個人の @gmail.com アカウントでは6か月に制限し、6か月ごとに再認証が要ること | Make Apps: Gmail | 2026-10-06 |
| Slack のモジュールに Watch Public Channel Messages、Watch Private Channel Messages、Get a File、Download a File などがあり、Slack のユーザーのアカウントでの接続が前提であること | Make Apps: Slack modules | 2026-10-06 |
| Iterator が配列の要素をそれぞれ別のバンドルとして出力し、メールの複数の添付を1件ずつ扱う例があること | Make Help Center: Iterator | 2026-10-06 |
| Create a Document from a Template が既存のテンプレート文書を複製してタグを置き換えること | Make Apps: Google Docs modules | 2026-10-06 |
| 画像の形式が JPEG・PNG・GIF・WebP であること。直接のAPIで1枚10MB、縦横8000ピクセルまでであること。大きな画像は縮小され、文字が読みにくくなることがあること。低品質・回転・小さい画像で誤りが起きうること | Claude Docs: Vision | 2026-10-06 |
output_config.format に json_schema を指定するとスキーマに沿った応答が返ること。拒否や max_tokens 到達時はスキーマに合わない出力になりうること | Claude Docs: Structured outputs | 2026-10-06 |
出面の確定と常用の精算の扱いは、自社と協力会社との取り決めで決めてください。 本記事は上記のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0487)についてのご相談はこちらから。
