これで何ができるか

古い新着も、既読リストなら見逃さないは、既読ID一覧を実際に渡せば新着を見逃さないと確かめました。ただし、その記事自身が「IDが連番ではない・抜けが複数あるシステムでは未測定」と書いて終わっています。仕込んだIDがANN-0099の次がANN-0101のような連番で、抜けた番号そのものが手がかりになっていた可能性があったからです。

この記事は、その2点を両方潰して測り直します。IDをハッシュ風の非連番(TCK-097c0227のような16進文字列)にし、新着も1件から3件に増やして、一覧300件のうち先頭寄り・中ほど・末尾寄りの3か所に散らしました。プログラミングは要りません。

結論は3つです。

  1. IDが非連番で、新着が3か所に散らばっていても、一括で渡した6回(系列2本×3回転)とも、仕込んだ3件を1件も見逃しませんでした。無関係な既読済みのIDを新着と誤判定した回も0件です。
  2. 300件を150件ごと2分割で渡しても、結果は一括と同じでした。分割4回(系列2本×2回転)とも、同じ3件を見逃しなく検出しました。
  3. 分割の1件目を送った時点(まだ新着を聞いていない段階)で、4回とも自分から先頭寄りの新着1件を名指ししました。日付ではなくIDの照合をしていることが、求められていないのに返り自体に書かれています。
IDが非連番で新着3件がバラバラな位置にあるときの、一括と分割それぞれの見逃し・誤検知を示す表。行は一括・系列A問い合わせ受付(3回)、一括・系列B入出庫記録(3回)、分割・系列A(2回)、分割・系列B(2回)。列は見逃しと誤検知したID数。一括系列Aは0/9、一括系列Bは0/9、分割系列Aは0/6、分割系列Bは0/6で、誤検知したID数はすべての行で0件。合計10回・仕込み30件中、見逃しは0/30、誤検知は0件。
一括でも分割でも、10回とも見逃し0・誤検知0。

📌 この記事の実測は合計10回(一括6回+分割4回)です。生の返りと機械照合は docs/evidence/seen-list-catches-the-scattered-gaps.md に全文置いてあります。

前提

かかる時間 20分
費用 無料。無料のチャットAIで足ります
必要なもの ブラウザで使えるAI(ChatGPT・Claude・Geminiなど)と、既読ID一覧・監視対象の一覧
プログラミング 不要

AIへの頼み方

1. ハッシュ風の非連番IDを、3か所に散らして一括で渡す

今回の材料は、架空の「問い合わせ受付ログ」(系列A)と「入出庫記録」(系列B)の2本です。どちらも300件で、IDはTCK-097c0227やREC-b3924a89のような16進8文字です。連番ではないので、前後のIDから抜けを推測する手がかりはありません。既読ID一覧は297件(新着3件を除いたもの)です。

新着を仕込んだ位置を、前作とこの記事で比べた数直線の図。横軸は投稿一覧300件のうちの位置(%)。前作(連番ID・ANN-0001形式)は33%と100%の2か所。この記事(非連番ID・TCK-xxxxxxxx形式)は7%・50%・93%の3か所に散らしてある。番号の連続性という手がかりを無くし、仕込みの数も1.5倍にした状態で、見逃し・誤検知ともに0件だった。
前作より新着を1件増やし、位置も3か所に散らしました。
既読リスト(これまでに確認済みのID一覧)は次のとおりです。 (ここに、既読ID一覧をそのまま貼ります) 投稿一覧は次のとおりです(全300件)。 (ここに、投稿一覧をそのまま貼ります) 既読リストに無い項目を新着として、該当する投稿のIDだけを列挙してください。説明や前置きは不要です。該当が無ければ「新着なし」とだけ書いてください。

2系列×3回転=6回とも、3件とも正しく検出されました。前作と同じ指示文のままです。

なぜこの言い方か。指示文を変えず、材料側(ID形式・新着の数・位置)だけを動かしています。言い方を固定することで、「前作の精度が、ID形式という条件に依存していたかどうか」だけを切り分けられます。

2. 同じものを150件ごと2分割で渡す

1件目のチャンクに、既読ID一覧も一緒に渡します。

既読リスト(これまでに確認済みのID一覧)は次のとおりです。 (ここに、既読ID一覧をそのまま貼ります) 投稿一覧を2回に分けて送ります。まず1件目から150件目です。 (ここに、1件目から150件目までの投稿一覧をそのまま貼ります)

まだ新着を聞いていませんが、AIは自分から既読ID一覧と照合し、こう返しました(系列A・1回目)。

1件目(〜2024-03-07分)を受け取りました。続きの送信を待ちます。

照合した範囲では、既読リストにないIDが1件ありました。

- 2023-02-28「機能の使い方について」(ID: TCK-097c0227)

それ以外は、この範囲のIDがすべて既読リストに含まれていました。

日付ではなく、ID一覧の照合で気づいています。4回(系列2本×2回転)とも、先頭寄りの新着1件を同じように自分から名指ししました。2件目を続けます。

続き(151件目から300件目)です。これで全部(300件)届きました。 (ここに、151件目から300件目までの投稿一覧をそのまま貼ります) 既読リストに無い項目を新着として、該当する投稿のIDだけを列挙してください。説明や前置きは不要です。該当が無ければ「新着なし」とだけ書いてください。

2系列×2回転=4回とも、一括のときと同じ3件が正しく列挙されました。分割の有無で結果は変わりません。

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

本当にIDの照合をしているか、自分で確かめたいとき

一括の回答に続けて、同じ会話でこう聞きました。

今の判断は、日付とIDの照合のどちらを手がかりにしましたか。教えてください。

2系列とも「IDの照合です。日付は判断に使っていません」と明言しました。系列Aの返りはこうです。

手がかりにしたのはIDの照合です。日付は判断の根拠にしていません。

既読リストは投稿一覧と同じ時系列順に並んでいたので、投稿を上から順に見ながら、そのIDが既読リストの同じ位置の前後にあるかを確認しました。その流れの中で、前後のIDは既読リストにあるのに、そのIDだけ見当たらない箇所が3つありました。

ただし、300件すべてを一件ずつ機械的に突き合わせたわけではありません。順序が揃っていることを前提に、抜けを目視で拾った形です。

自分から「機械的に集合差を取ったわけではない」「順序が揃っていることを前提にした」と断っている点に注意してください。この実測の既読ID一覧は、投稿一覧と同じ時系列順のまま並べたものです。並び順をばらばらにシャッフルした既読リストでも同じ精度が保てるかは、この記事では確かめていません(下の「この記事が実測していないこと」)。

一括でもう一度、同じ結果か確かめたいとき

既読リスト(これまでに確認済みのID一覧)は次のとおりです。 (ここに、既読ID一覧をそのまま貼ります) 投稿一覧は次のとおりです(全300件)。 (ここに、投稿一覧をそのまま貼ります) 既読リストに無い項目を新着として、該当する投稿のIDだけを列挙してください。説明や前置きは不要です。該当が無ければ「新着なし」とだけ書いてください。

1番と同じ指示文です。IDの形式を変えた・新着の件数や位置を変えた、といった材料側の変更をしたあとで、同じ指示文のまま結果が崩れていないかを確かめたいときに使います。

分割する回数が増えたとき

続き(151件目から300件目)です。これで全部(300件)届きました。 (ここに、151件目から300件目までの投稿一覧をそのまま貼ります) 既読リストに無い項目を新着として、該当する投稿のIDだけを列挙してください。説明や前置きは不要です。該当が無ければ「新着なし」とだけ書いてください。

3番と同じ指示文です。今回確かめたのは2分割までです。分割が3つ・4つと増えても、最後のチャンクでこの文面を使えば、それまでのチャンクの分も含めて新着を列挙してくれます。この分割数での検証は古い新着も、既読リストなら見逃さないが3分割で確認済みです。

応用・次の一手

古い新着も、既読リストなら見逃さないが残した「IDが連番ではない・抜けが複数あるシステムでは未測定」という課題に、答えが付きました。既読リスト方式は、IDの形式が非連番になっても、新着が1件から3件に増えて散らばっても崩れませんでした。

同じ形の監視は、点検のたびに起きます。長い一覧を複数チャンクに分けて渡す考え方は見張りの対象を100件に増やしてもボロが出ないかにもあります。毎朝ひとりでに回すなら、毎日決まった時刻にAIを動かすの形に載せるのがおすすめです。

⚠️ この記事が実測していないことは3つです。

  • 既読リストの並び順を、投稿一覧とは無関係にシャッフルした場合。今回は既読ID一覧を元の時系列順のまま渡しており、言い直し方の節で見たとおり、AIはこの並び順を手がかりの一部に使っていました
  • 4件以上の新着が、同じチャンクに重なって仕込まれた場合
  • 3分割より多い分割や、300件より大きい規模