AIに書類チェックを任せてみた

AIに書類チェックを任せてみた|信用できるかは「分からない」と言えるかで決まった

「Claudeで作れないか」と言われた 上司から相談があった。書類のチェックを自動化できないか、という話だ。 前提として、すでに似た仕組みは動いていた。書類を共有フォルダにアップロードするとき、その場でCopilotに読ませて、決まった観点でチェックする——という運用だ。1件ずつなら、これで足りている。 問題はすでにアップロードされた分だった。Copilotからは共有フォルダの中のファイルに手が届かない。つまり「入口」は見張れても、すでに積まれたものをまとめて確認する手段がなかった。 そこを埋められないか、というのが相談の中身だった。 作ったもの 構成は素っ気ないくらい単純だ。 8:50 / 17:50 PowerShell ↓ 新しく増えたフォルダを検出して、一覧をファイルに書き出す 9:00 / 18:00 Claude(スケジュール実行) ↓ その一覧を読んで、PDFをチェック ↓ 結果をまとめて共有フォルダに出力 ↓ 処理済みとして記録 1日2回、誰も操作しない。 朝出社したら、前日分のチェックが終わっている。 なぜこの形になったのか、2つだけ書いておく。 ① 一度に全部やらせたら、途中で止まった 最初は素直に「フォルダの中を全部見て」と頼んだ。途中でタイムアウトして止まった。 考えてみれば当然で、対象は月に1000件近くまで増えていく。しかも毎日増え続けるので、放っておけば量は膨らむ一方だ。一度で終わらせようとする限り、いつか必ず破綻する。 そこで方針を変えた。すでに処理したフォルダを記録しておいて、前回から増えた分だけを渡す。 その「増えた分を見つける係」をPowerShellに任せている。 これで止まらなくなったし、読ませる量が減るので費用も下がる。46万件のファイルを整理したときにも同じ結論に辿り着いていた。 止まることを前提に作る。一度で終わらせようとしない。 別の業務で、また同じ教訓を踏んだことになる。大量のものを扱うときは、たぶんこれが唯一の正解なのだと思う。 なお読ませるのも原則1ページ目だけにしている。必要な情報はそこにしかないからだ。 ② 直接つながらないので、ファイルでバトンを渡す PowerShellとClaudeのスケジュール実行は、互いを呼び出せない。そこで10分ずらして動かし、あいだをファイル1つで繋いだ。8:50に一覧が書き出され、9:00にそれを読む。 書類の仕分けを作ったときも、完了の合図をファイルで渡していた。直接つながらないものを、ファイル1つで安全につなぐ——同じ手を2回使ったことになる。地味だが、これが一番壊れにくい。 いきなり、人の見落としを見つけた テスト段階で、予想していなかったことが起きた。 すでに人の目を通っていた書類から、チェック漏れが見つかった。 レ点を入れるべき欄が空欄のまま、というものだ。 考えてみると当然かもしれない。人は書類を読むとき、「ここにはレ点があるはずだ」と無意識に補ってしまう。何十枚も見ていればなおさらだ。機械はそれをしない。 空欄は空欄として見る。 ここで感じたのは、人の代わりをさせているのではないということだった。人が得意なところと、機械が得意なところは違う。今回埋まったのは、人がどうしても苦手な種類の見落としだった。 でも、いちばん安心したのは別のところ 成果としては上の話が分かりやすい。ただ、実際に使っていて安心したのは違う点だった。 判断が付かないものについて、勝手に決めずに聞いてくる。 これは意図してそう設計した。チェックのルールに、こう書いてある。 判断が付かない項目、および書類にその項目自体が存在しない場合は、推論せずに確認すること。 なぜこうしたか。**検査という仕事で怖いのは、間違えることより「間違えたことに気づけないこと」**だからだ。 もしAIが「たぶん問題ないでしょう」と埋めてしまったら、こちらはそれを信じる。逆に「たぶん不備です」と言われて、それが的外れなら、確認の手間が増えて信用を失う。どちらも困る。 分からないものを分からないと言ってくれるなら、残りは信じられる。 信頼性というのは正確さの話だと思っていたけれど、実際に使ってみると**「言わないことを決められるか」**のほうが効いた。 これは以前46万件のファイルを仕分けたときに決めたルールと同じ構造だった。 迷ったら全部「要確認」に入れる。AIに「たぶん消していいと思います」と判断させない。 別の業務で、同じ原則がまた効いた。たぶんこれは、AIに判断を任せるときの一般的な作法なのだと思う。 最初は、盛大に誤検出した もっとも、最初からうまくいったわけではない。 初期に多かったのが「存在しない項目を不備として報告してくる」というものだった。書類にはいくつか種類があって、種類によってある項目とない項目が違う。それを知らないまま「この項目が空欄です」と指摘してくる。 これはAIが賢くないのではなく、こちらが伝えていなかっただけだ。何ができて何ができないかは最初に一通り調べてあったけれど、業務のルールは調べても出てこない。自分で伝えるしかない部分だった。 だからルールを書き足した。 書類に存在する項目のみをチェック対象とすること。 これで解消した。AIへの頼み方をまとめた記事に「同じことを二度説明したら、それは文書にすべきサイン」と書いたけれど、まさにその通りだった。誤検出が出たら、まず自分の指示を疑う。 「作って終わり」ではなく、育てる期間がある 正直に書いておくと、この仕組みはまだ完成していない。 チェックすべきパターンが多く、新しい書式が出てくるたびにルールを足していく必要がある。当面は、出てきた誤検出を見ながら人が教え続けることになる。 これは面倒に聞こえるかもしれないが、人に仕事を引き継ぐときも同じだと思う。最初から完璧に引き継げる仕事はない。何度か一緒にやって、例外を伝えて、だんだん任せられるようになる。相手がAIでも変わらなかった。 そして——誰も見ていない ここまで書いておいて、いちばん大事なことを書く。 ...

2026年9月9日 · 1 分
共有フォルダの46万件を整理する

共有フォルダの46万件を整理する|AIに「全部読ませない」ための設計

共有フォルダに、46万件たまっていた 長く使われている部署の共有フォルダを調べたら、7年以上更新されていないファイルが約46万件あった。 誰も消さないまま積み上がった結果だ。容量を圧迫しているし、必要なファイルを探すときの邪魔にもなる。かといって、中身を見ずに一括で消すわけにはいかない。契約や台帳のように、法律上の理由で残しておかなければならないものが混ざっているかもしれないからだ。 つまり、46万件を1件ずつ「これは消していいか」判断する必要がある。人力では現実的でない。 最初に考えたのは「AIに46万件を渡したらどうなるか」 こういうとき、まずAIに全部渡して仕分けてもらう、というのが素直な発想だと思う。実際、最初はそれを考えた。 ただ、社内で使っているAIは使った分だけ費用がかかる従量課金だ。この環境では「どれだけの量を読ませたか」がそのまま請求になる。 46万件のファイル一覧というのは、それだけで数千万文字になる。文庫本にすれば数百冊分だ。それを丸ごと読ませて、しかも1件ずつ判断させる——試すまでもなく現実的ではなかった。 そこで方針を変えた。AIに全部を読ませない。 機械にできることは、機械にやらせる 考え方はシンプルで、判断が要らないところにAIを使わないということだ。 ① 期間での足切りは、AIを使わない 「7年以上更新されていない」という条件は、日付を比べるだけで判定できる。ここに判断の余地はない。だからWindowsに標準で入っている仕組み(PowerShell)で共有フォルダを走査して、条件に合うファイルの一覧を作った。この時点でAIは1文字も読んでいない。 ② ファイルの中身は読ませない 判断に使うのは、一覧表に並んだファイルのパス・名前・拡張子・サイズ・日付だけ。ファイルを開いて中身を読むことはしない。 正直これは妥協でもある。中身を読めばもっと正確に判断できる。ただ、ファイル名とフォルダの場所を見れば、たいていのことは分かる。「〇〇_旧」「バックアップ」「コピー」といった名前や、一時ファイルの拡張子は、それだけで十分に判断材料になった。 ③ まず「集計」から始める いきなり1件ずつ見ていくのではなく、最初に全体の傾向を出させた。拡張子ごとの件数、フォルダごとの件数、明らかに不要そうなパターンの件数。 これをやると「この場所は丸ごと消せる」という塊が見えてくる。46万件を1件ずつ判断するのと、まず塊を把握してから残りを個別に見るのとでは、必要な労力がまったく違う。 前回の記事では、AIに書類の中身を読ませて判断させる仕組みを作った(スキャンした書類の仕分け)。同じAIでも、使い方は正反対だ。件数が多いときは、いかにAIに触らせないかを考えることになる。 AIに任せたのは「グレーの判断」 では何をAIにやってもらったか。3つに分類する作業だ。 分類 中身 A:消してよさそう 一時ファイル、コピーの残骸、「旧」「バックアップ」などが付いたもの C:絶対に消さない 契約・台帳・請求・決算・人事など、保存義務がありそうなもの B:要確認 AとC、どちらとも言い切れないもの そして分類のルールとして、いちばん強く決めたのがこれだ。 迷ったら全部B(要確認)に入れる。 AIに「たぶん消していいと思います」と判断させない、ということだ。確信が持てないものはすべて人間が見る側に回す。 これを徹底すると、Bの山は当然大きくなる。効率だけを見れば損に見える。それでも間違って消したファイルは戻ってこない。判断を間違えたときの被害が大きい作業では、迷いを「安全側」に倒すルールを最初に決めておくのが結局いちばん早いと思う。 それでも、すぐには消さない 分類が終わっても、いきなり削除はしない。手順はこうしている。 ① 一覧を作る(機械) ② 3つに分類する(AI) ③ 目で見て承認する(人) ④ 別の場所へ移して隔離する(自動) ⑤ 数か月置いて、問題が出なければ削除する(人) ポイントは**④の「隔離」**だ。消すのではなく、別の場所に移すだけ。名前に「削除予定」と時期を付けておく。 こうしておけば、「あのファイルどこ?」と言われたときに戻せる。数か月経って誰も困らなければ、そのとき初めて本当に消す。 取り返しがつく状態を挟む——これは前回書いた「完了マーカー」と同じ発想だ。自動化を組むときは、失敗したときにどう戻るかを先に決めておくと安心して進められる。 夜通し流しっぱなしには、できなかった 大量のファイルを動かす作業というと、「夜のうちに流しておけば朝には終わっている」と思うかもしれない。自分も最初はそう考えていた。 ところが、その手が使えなかった。 作業している環境は仮想のパソコンで、これも動いている時間に応じて費用がかかる。加えて、退社時にパソコンを停止するのは社内のルールだし、2時間操作しないと自動でシャットダウンされる設定にもなっている。 つまり、自分がパソコンを使っている時間しか処理が進まない。放っておけば勝手に止まる。 ここで効いたのが、1回あたり5,000件で区切って動かす仕組みだった。すでに移動が終わったものは次回自動で飛ばされるので、何度実行しても二重に動くことはない。途中で止まっても、もう一度実行すれば続きから進む。 止まることを前提に作る。 これができたおかげで、普段の仕事をしている裏でバッチを流しておく、という進め方ができた。自分は別の作業をしていて、その裏でファイルが少しずつ運ばれていく。 移動のログも毎回残していて、どのファイルがどこへ行ったかが全部記録されている。その記録を逆にたどれば元の場所に戻せるようにしてある。 つまずいた細かい罠 ひとつだけ、笑ってしまった罠を紹介したい。 一部のフォルダを処理の対象から外そうとしたのに、指定がまったく効かなかった。何度書き直しても素通りしてしまう。 原因は、フォルダ名に「★」や「●」といった記号が入っていたこと。見た目は同じ記号でも、実際には微妙に違う文字だったり、こちらが入力した記号と一致していなかったりする。 解決策は単純で、フォルダのパスをエクスプローラーから直接コピーして貼り付ける。自分で打ち込まない。 以前にも「Excelの列名に見えない改行文字が入っていた」「データの値にクォートが付いていた」で同じ目に遭った。見た目が同じでも中身が違うという問題は本当に多い。手で打つより、実物からコピーするほうが確実だ。 20日かけて、全部運び終えた 結果として、約20日で46万件すべての移動が完了した。 丸一日流し続けていたわけではない。普段の作業の裏で動かしていただけなので、実際に処理が進んでいたのは仕事をしている時間の一部だけだ。それでも、少しずつでも積み上がれば終わる。 ここでも効いたのは「一度で終わらせようとしない」ことだった。もし「今日中に全部片付ける」という進め方をしていたら、途中で止まるたびにやり直しになって、たぶん完走できなかったと思う。 ...

2026年8月15日 · 1 分