Claude Code で Teams の過去投稿を検索する ― 巨大な CSV を直接読ませず、検索スクリプトを挟んで「探しもの」を軽くした

結論

Teams の投稿を貯めた CSV(十数万行、投稿は数万件)から「あの設定を管理しているファイルはどれ?」を探すとき、CSV を Claude Code に直接読ませるより、検索用の小さなスクリプトを作って、その結果だけを読ませる方が、読む量が大きく減りました。

もう一つ分かったのは、依頼文の言葉をそのまま検索するだけでは足りないということです。投稿の中で実際に使われている言い回しに合わせないと、探しているものは見つかりません。

やったことは3つです。

  1. 検索スクリプトを1本作る(キーワードを渡すと、1件1行の短い一覧だけ出す)
  2. フォルダに案内ファイル(CLAUDE.md)を置き、「CSV は直接開かず、先にこのスクリプトを使う」と書く
  3. 次の調べものでは、「Teams で調べて」と言うだけにする

同じ調査を、同じ指示で2回やって比べました。

1回目(CSV を直接読む)2回目(スクリプト経由)
進め方検索で出た行の前後を何度も読み、確認のためにさらに長い範囲を読む(コマンド十数回)検索語を変えながら4回検索しただけ(コマンド1回にまとめて実行)
画面に流れた量長い投稿の本文やリンクが大量に流れる1件1行(約90文字)×最大8件×4回
たどり着いた答え探していた資料同じ

※ 処理時間やトークン数は実測していません。「読んだ量が大きく減った」ことは見た目で明らかでした。

1回目で困っていたこと(読む量が増えた理由)

指示そのものは明確でした。ただ、投稿の CSV は十数万行あり、1件の本文に長い文章や URL が含まれます。Claude Code は「あやしい箇所を見つけては、前後を読んで確かめる」を繰り返していて、読む量が増えやすい作業に見えました。

この種の依頼は、検索の入口をこちらで用意してあげると進めやすくなります。

検索スクリプトの中身

Python で書いた短いスクリプトです。「検索用のスクリプトを作って、フォルダに置いて。それを Claude が確認する形にしたい」と頼んで作りました。

機能は次のとおりです。

  • キーワードを複数並べると、すべて含む行だけを探す(--any を付けると、どれか1つ含む行)
  • 日付(--from / --to)、チャット名(--chat)、送信者(--sender)で絞る
  • 結果は新しい順に、日時・チャット名・送信者・本文のキーワード周辺だけを1行で出す
  • 件数が多いときは「ほか○件」と出して、絞り込みを促す
  • 一覧の id= を渡すと、その1件だけを全文で表示する(--id)

CSV は本文の途中に改行が入るので、grep のような単純な行検索ではなく、CSV として正しく読み込んでから検索しています。

「Claude が迷わず使える」ようにする置き方

スクリプトを作っただけでは、次の会話で Claude Code が存在を知りません。そこで フォルダに CLAUDE.md を置きました。Claude Code はそのフォルダで作業するときに、自動で CLAUDE.md を読みます。

書いた内容は、次のとおりです。

## Teams の過去投稿を調べるとき
- teams_messages.csv は巨大。Read や Grep で直接開かない
- 先に検索スクリプトを使う(コマンド例)
- 複数語は AND、--any で OR、--from / --chat / --sender で絞り込み
- 一覧の id を --id に渡すと、その1件だけ全文表示
- 直近の投稿だけなら teams_recent.md を見る

ポイントは、「やってはいけないこと」と「代わりにやること」をセットで書くことです。さらに、コマンドの例まで書いておくと、迷わず同じ形で使ってくれます。

検索語は、依頼文の言葉そのままでは足りない

スクリプトがあっても、検索語が合っていなければ見つかりません。 こちらが頭の中で使っている言葉と、投稿に実際に書かれている言い回しは、違うことがあります。

例として、本番系と予備系で「同期されない設定」を管理している資料を探したときの順番です。こちらはその資料を「移行用」と呼んでいました。

  1. 話題になっているチャネルを見つける。 話題に関係する言葉を含む投稿を見て、本命は、そのシステムの運用チャネルだと分かりました。以降は --chat でここに絞っています
  2. 投稿の中の言い回しに合わせる。 こちらは「同期されない設定」と考えていましたが、投稿では「予備系への反映(漏れ)」「予備環境の設定」と書かれていました。「予備」と、設定の種類を表す語や「同期」などを組み合わせて検索しました
  3. 何度も出てくる資料名を見つける。 2 の検索結果に、同じ資料の名前が複数の投稿に出てきました。これが探していた資料でした
  4. 資料名で検索し直す。 資料の場所(添付ファイル名)と、使われ方の経緯(誰がいつ何を記載したか)が分かりました
  5. 念のため、元の言葉も確認する。 依頼文にあった「移行用」は、このチャネルでは0件でした。こちらが思っていた呼び名は、現場では使われていませんでした

まとめると、依頼文の言葉ではなく、投稿の中の言い回しで探すことと、チャネルや複数語で絞ることが効きました。

Claude Code に検索を任せるときは、こう頼むと進めやすくなります。

依頼文の言葉が、投稿にそのまま出るとは限らない。言い換えを複数考えて、まず件数だけ確認してから絞り込んで。

自分で検索したいとき

AI を通さず、PowerShell から直接実行すれば、トークンは一切使いません。

python search_teams.py 検索語1 検索語2 --max 10

なお、Claude Code の中で ! を付けて実行すると、出力が会話に入るので、トークンは消費します。自分で調べるなら、別の PowerShell ウィンドウで実行するのがおすすめです。

同じことをしたい人へ:こう頼むと進めやすい

  1. 最初に「このファイルは大きい。直接読まずに、検索用のスクリプトを作って」と頼む
  2. 出力の形を指定する(「1件1行で」「本文は100文字まで」「件数の上限を付けて」)
  3. 「このフォルダに案内ファイル(CLAUDE.md)を作って、使い方を書いて」と頼む
  4. 次回からは「◯◯について調べて」と言うだけにする

注意点

  • 検索の対象は、自分の PC に保存されている範囲の投稿です(見たことのないチャネルの投稿は入りません)
  • 仕事の投稿には社外秘の内容が含まれます。CSV やスクリプトの出力を、外部に貼り付けたり送ったりしないでください
  • 検索語が少しでも違うと見つかりません。見つからないときは、投稿の中で実際に使われている言い回しに合わせて、言い換えを試してください

コメント

タイトルとURLをコピーしました