これで何ができるか

複数の処理を1つの指示で見張る記事は、頻度が5倍違う2つの処理(1日4〜8回と1日1〜2回)を1本のログに混ぜて試しました。「処理ごとに計算して」と頼めば、どちらが止まっても正しく見つかります。ただし、あの記事は処理が2本まで・頻度差が5倍までという条件でした。

この記事は、処理を4本(P1〜P4)に増やし、頻度差を最大約17倍まで広げて、同じ頼み方がまだ崩れないかを確かめました。P1〜P4のどれか1本だけを4日間止める総当たり4パターンを用意しました。加えて、全処理が正常な構成(誤報ゼロの確認)も用意し、同じ指示文で各2回試しました。

  • 「処理ごとに、その処理自身の記録から目安を計算して」と頼むと、止めたのがP1〜P4のどれであっても結果は同じでした。10回中10回、停止4日間を完全に名指ししています
  • 全処理が正常な構成でも、2回とも誤報なく「該当なし」と答えました
  • 一方、「日ごとに合算して」と頼むと、最も頻度の低いP1の停止は2回とも見逃しました。処理が2本から4本に増え、P1の割合が全体の合計に対してさらに小さくなった分、見逃しは前よりも起きやすい形になっています
process=P1〜P4の4つの処理について、ふだんの1日あたり実行回数の範囲を横棒で示した図。P1は1〜2回/日、P2は4〜8回/日、P3は10〜15回/日、P4は20〜30回/日で、最も少ないP1と最も多いP4では約17倍の差がある。下の枠には、P4はP1の約17倍の頻度で先行記事の約5倍から差を広げたこと、処理数も2本から4本に増やしたことが書かれている。
P1(1〜2回/日)とP4(20〜30回/日)の差は約17倍。先行記事の約5倍から広げました。

前提

かかる時間 20分
費用 無料。無料のチャットAIで足ります
必要なもの 複数の定期実行の、実行時刻が分かる記録(GitHub Actionsの実行履歴・ログファイルのタイムスタンプなど)
プログラミング 不要。実行時刻の一覧をそのまま貼るだけです

材料は、架空の処理P1〜P4の実行時刻を1本にまとめたログです。どちらも21日間(2026-09-01〜09-21)ぶんで、1行に処理名が書かれています。

  • P1=1日1〜2回(もっとも少ない)
  • P2=1日4〜8回
  • P3=1日10〜15回
  • P4=1日20〜30回(もっとも多い。P1の約17倍)

5つの構成を用意しました。

  • P1だけ停止・P2だけ停止・P3だけ停止・P4だけ停止・全処理が正常の5パターン
  • 停止させる構成は、対象の処理だけ09-10〜09-13の4日間を0件にしました
  • 止めない構成は、全期間とも0件の日がありません

AIへの頼み方

1. 処理ごとに計算させる(もっとも少ないP1が停止)

先行記事で効いた頼み方を、4本に増やしたログにそのまま使います。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 処理ごとに、その処理自身の記録から「ふだんの1日あたりの実行回数」の目安を計算してください。そのうえで、その処理だけの目安と比べて極端に少ない日(0件の日を含む)があれば、処理名・日付・実行回数を挙げてください。該当する日が無ければ「該当なし」と答えてください。

上に、P1〜P4の実行時刻が混ざった21日分のログ(約960行)を貼りました。もっとも頻度の低いP1(1日1〜2回)が停止した構成で2回試した結果です。

1回目は「該当あり:P1のみ(2026-09-10〜09-13の4日間、各0回)」。P1の目安を約1.2回/日と計算し、4日間を表で名指ししました。P2・P3・P4は「極端に少ない日はありません」でした。2回目も同じく、P1の4日間を完全に名指し。「P1は他の17日は毎日1〜2回動いていて、09-14の23:59の記録で再開しています」と根拠も添えました。

2. もっとも多いP4が停止した場合でも試す

今度は、もっとも頻度の高いP4(1日20〜30回)が停止し、他の3処理が正常な構成で、同じ指示文を2回試しました。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 処理ごとに、その処理自身の記録から「ふだんの1日あたりの実行回数」の目安を計算してください。そのうえで、その処理だけの目安と比べて極端に少ない日(0件の日を含む)があれば、処理名・日付・実行回数を挙げてください。該当する日が無ければ「該当なし」と答えてください。

1回目は「該当あり:P4の4日間だけです」。P4の目安を「中央値は約27」と計算し、4日間を名指し。「P1・P2・P3は該当なし」でした。2回目も同じく、P4の4日間を完全に名指し。「同じ期間にP3は通常どおり動いています。P4だけが止まっていたことになります」と、他の処理との違いも自分から言葉にしました。

3. 残りの2パターンと、全処理が正常な構成も試す

同じ指示文を、P2だけ停止・P3だけ停止・全処理が正常、の3構成でも各2回試しました。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 処理ごとに、その処理自身の記録から「ふだんの1日あたりの実行回数」の目安を計算してください。そのうえで、その処理だけの目安と比べて極端に少ない日(0件の日を含む)があれば、処理名・日付・実行回数を挙げてください。該当する日が無ければ「該当なし」と答えてください。

P2だけ停止した2回は、両方とも「該当あり:process=P2のみ」で4日間を正しく名指し。P3だけ停止した2回も、両方とも「該当あり:P3だけです」で4日間を正しく名指ししました。P1・P2・P4(またはP1・P2・P3・P4のうち停止していない3処理)への誤報は、この2構成の4回を通じて0件でした。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 処理ごとに、その処理自身の記録から「ふだんの1日あたりの実行回数」の目安を計算してください。そのうえで、その処理だけの目安と比べて極端に少ない日(0件の日を含む)があれば、処理名・日付・実行回数を挙げてください。該当する日が無ければ「該当なし」と答えてください。

全処理が正常な構成(どの処理も09-10〜09-13を含む全期間で0件の日が無い版)では、2回とも「該当なし」でした。

  • 1回目:「各処理で、自身の目安の半分を明確に下回る日は見当たりませんでした」
  • 2回目:「どの処理にも0回の日や、自身の目安と比べて極端に少ない日はありませんでした」

止めたのがP1〜P4のどれであっても、10回中10回、停止4日間を完全に名指ししました。頻度が最大約17倍違う4つの処理が同じログに混ざっていても、どの処理の目安も混ざらず、誤報もありませんでした。

process=P1〜P4の4本を1本のログに混ぜ、どれか1本だけを4日間止める総当たり4パターンと、全処理が正常な構成の計5構成を、同じ指示文で各2回試した結果を示す表。P1・P2・P3・P4のどれを止めた場合も2/2で停止4日間を正しく名指しできた。全処理が正常な構成も2/2で誤報なく「該当なし」と答えた。下の枠には、止めたのがP1〜P4のどれでも2回とも完全に名指しできたこと、正常な処理を誤って異常と報告した回は10回を通じて0件だったこと、全処理正常でも2回とも誤報が無かったことが書かれている。
止めた処理がP1〜P4のどれでも、2回とも完全に名指しできました。

なぜ、処理が4本・頻度差17倍に広がっても食われなかったのか

10回の返りはすべて、処理ごとに別々の目安(合計や1日あたりの回数)を自分から計算していました。指示文がもともと「ログ全体」ではなく「その処理自身の記録から」と名指ししています。そのため、計算の単位が処理名で区切られたままだったのです。先行記事が2本のときに確かめた理屈が、4本・頻度差17倍に広げても同じ形で働いていました。

うまくいかないときの言い直し方

「処理ごとに」を外すと、もっとも少ない処理の停止はさらに見えなくなる

同じログ(P1が停止した構成)に、「処理ごとに」という指定を外し、「日ごとの合計」で極端に少ない日を探す聞き方に変えました。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 日付ごとに、ふだんの実行回数の目安と比べて極端に少ない日があれば、日付と実行回数を挙げてください。該当する日が無ければ「該当なし」と答えてください。

2回とも「該当なし」でした。1回目は「ふだんは45前後で、全体は37〜53回の範囲に収まっています。最も少ない9/10(37回)でも、他の日の最小である9/13と9/18(39回)と大差なく、極端に少ない日とは言えません」。2回目も同じく、9/10の37回を「ほかの日と比べて極端に少ないとは言えません」としています。

→ 原因は先行記事と同じ、合算という作業そのものです。P1〜P4を合計すると1日あたり約45回になります。P1の1〜2回が消えても、合計は45回から37〜39回へ下がるだけで、ふだんの揺れの範囲に収まってしまいます。処理が2本から4本に増えた分、停止した処理(P1)が合計に占める割合はさらに小さくなりました(約45回のうちの1〜2回)。合算では、前よりも見つけにくくなっています。直すのは、合算をやめて「処理ごと」に戻すことです(指示文1〜3)。

応用・次の一手

構成 処理ごとに計算 日ごとに合算
P1(最少)だけ停止 2/2(正しく名指し) 0/2(見逃し)
P2だけ停止 2/2(正しく名指し) 未測定
P3だけ停止 2/2(正しく名指し) 未測定
P4(最多)だけ停止 2/2(正しく名指し) 未測定
全処理が正常 2/2(誤報なし) 未測定

通知やIssue登録につなげるなら、処理ごとの判定を省略せずに書かせたほうが扱いやすくなります。先行記事が確かめた言い直しが、そのまま使えます。

これは、複数の定期実行処理が実際に動いた時刻を記録したログです。処理名は process=P1・process=P2・process=P3・process=P4 の4種類が混ざっています。 処理ごとに、その処理自身の記録から「ふだんの1日あたりの実行回数」の目安を計算してください。そのうえで、その処理だけの目安と比べて極端に少ない日(0件の日を含む)があれば、処理名・日付・実行回数を挙げてください。処理ごとに「該当あり」か「該当なし」のどちらかを、省略せずに書いてください。

実務に載せるなら、次の順番がおすすめです。

  1. 指示文1〜3の形で、処理ごとの判定を省略せずに出させる
  2. 「該当あり」が返った処理だけ、自動化が静かに壊れたのを、AIに見つけさせる記事と同じ要領でGitHubのIssueを立てる
  3. 更新停止の異常判定は一律にしない記事は、別の軸(監視対象の更新頻度)を確かめています。監視対象を3→20系統に増やしても判定は崩れませんでした。処理数の軸・頻度差の軸・更新頻度の軸は、それぞれ別に確かめておくと安心です

⚠️ この結果は、架空の処理4本・計12回の実測です。「処理が何本に増えても、頻度差がどこまで広がっても崩れない」と一般化しないでください。試したのは、次の範囲までです。

  • 処理は4本まで。6本以上に増やす場合は試していません
  • 停止したのは常に1本だけです。2本以上が同時に止まる場合は試していません(先行記事の宿題の一部も、まだ残っています)
  • 頻度の差は最大約17倍(1〜2回と20〜30回)まで。それ以上に差が開く組み合わせは試していません
  • 停止は常に4日間・同じ日付(09-10〜09-13)でした。停止の長さや日付がずれる場合は試していません

今回の生の返りと機械照合は docs/evidence/four-process-log-keeps-each-own-baseline.md に全文置いてあります。