AI自動化を再実行しても壊しにくくする状態管理と重複防止の方法
AIに自動化を作らせて、最初の1回がうまく動くと「完成した」と考えたくなります。
私も不動産管理レポートの取得を自動化したとき、実際に問題が見えてきたのは2回目以降でした。
同じファイルをもう一度保存する。担当者が変わってメールを拾えなくなる。取得したファイルが、本当に想定したPDFなのか分からない。
そこで、処理そのものだけでなく、状態管理、重複防止、入力の正規化、成果物の確認まで設計へ入れるようにしました。
1回目が成功しても、2回目は条件が違う
管理会社のポータルとGmailから、定期的にPDFを取得して保存する処理を作りました。
当初は、対象ページを開き、PDF作成ボタンを押し、ダウンロードして保存するという一本道でした。
しかし実運用では、PDF取得に失敗することがありました。
そこで「ボタンを押せた」ことを成功条件にせず、通常のダウンロードだけでなく、ダウンロードイベント、通信レスポンス、新しいタブなど、実際にどの経路でファイルが取得されたかを確認するようにしました。
さらに、ファイル名の末尾がPDFだから成功とせず、取得物の中身がPDFとして確認できるかも見るようにしました。
「処理済み」を残さないと、同じ対象をまた処理する
次に問題になったのが再実行です。
同じ自動化をもう一度動かしたとき、前回取得した報告書を再び取得して保存する可能性があります。
そこで、取得済みのIDを状態として残し、処理前に照合するようにしました。
ここで重要なのは、対象が今存在しているかだけではありません。
その対象をすでに処理したかを別に持つことです。
既存ファイルも無条件には上書きせず、再実行時に同じ成果物を重ねにくい形へ変えました。
変わりやすい情報だけを識別キーにしない
Gmailから情報を拾う処理では、担当者個人のメールアドレスだけに依存すると、担当者変更で対象を拾えなくなることがあります。
そこで、個人名や件名の完全一致だけではなく、会社ドメイン、物件、対象年月など、比較的変わりにくい情報も使うようにしました。
また、同じ対象なのに表記が違うだけで別物と判定しないよう、保存名や対象年月、書類名をそろえてから照合するようにしました。
このように、表記をそろえて比較できる形にすることが正規化です。
何を「同じ処理」とみなすかを決める
別の自動化では、同じシグナルを二重処理しないために、時刻や価格、対応関係を組み合わせて識別条件を持たせたこともあります。
対象がファイルでもイベントでも、必要なのは同じです。
どの条件が一致したら、前回と同じ対象とみなすのか。
ここが曖昧なままだと、再実行時の重複判定も曖昧になります。
自動化を完成扱いする前に確認する6項目
私は、再実行がある自動化では次を確認するようにしています。
- 何をもって同じ処理とみなすか
- 処理済み状態をどこに残すか
- 人名や件名など変わりやすい情報へ依存しすぎていないか
- 入力の表記揺れをどうそろえるか
- 成果物が想定した内容になっているか
- 既存成果物を意図せず上書きしないか
初回の成功だけでは、この確認はできません。
一度成功した処理をもう一度動かしたときに、同じ対象をどう扱うかまで確認します。
「再実行」と「途中から再開」は分けて考える
この記事で扱っているのは、同じ処理をもう一度実行したときに重複させにくくする設計です。
一方、複数工程のうち途中だけ失敗したとき、どの工程から再開するかは別の設計問題です。
この2つを分けると、状態管理で何を残すべきかが整理しやすくなります。
今日からできること
今使っている自動化を1つ選び、同じ入力で2回目を動かしたら何が起きるかを確認してみてください。
二重保存、二重通知、上書き、外部更新の重複が起こりそうなら、まず「同じ対象をどう識別するか」と「処理済みをどこに残すか」を決めます。
実務で見つかった修正を次の自動化にも使えるルールとして残したい場合は、AI改善OS Starter Kitに、ガイドライン、実例、完成プロンプト、改善ログをまとめています。