「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でも変わらなかった。
そして——誰も見ていない
ここまで書いておいて、いちばん大事なことを書く。
この仕組みが検出した不備を、今のところ誰も見ていない。
結果は共有フォルダにファイルとして出力される。それだけだ。誰が見るのか、いつ見るのか、見たあと何をするのかが決まっていない。 だから、不備が見つかっても何も起きない。
これは仕組みの出来とは関係がない。動作は完璧で、毎日きちんと走っている。それでも何も変わっていない。
以前に作った記入漏れの自動通知は、うまくいった。何が違ったのかを並べると、はっきりする。
| 記入漏れの通知(うまくいった) | 今回 | |
|---|---|---|
| 結果の届け先 | チャットに投稿 | 共有フォルダにファイル |
| 誰が見るか | 担当者(決まっている) | 決まっていない |
| いつ見るか | 朝礼の前 | 決まっていない |
| 見たあと何が起きるか | その場で記入される | 何も起きない |
あちらが機能したのは、仕組みが優れていたからではなかった。「朝礼」という、もともと人が集まる場があったからだ。出口が先にあって、そこに流し込んだだけだった。
今回はそこが空白のまま作ってしまった。技術の問題ではなく、出口の問題だ。
自動化は「作る」だけでは半分
今回いちばん学んだのはこれだった。
自動化というと、どうしても「仕組みを作ること」に意識が向く。動いた時点で達成感もある。でも実際には、
誰が・いつ・どこで結果を見て、そのあと何をするのか
まで決めて、はじめて仕事が変わる。そこを設計しないと、正確に動く仕組みが、誰にも見られないまま毎日走り続けることになる。
次にやるべきことは、たぶんチェックの精度を上げることではない。結果を、人がすでに見ている場所に届けることだと思っている。
まとめ
- AIの検査は「分からない」と言える設計にすると信用できる。 正確さより、言わないことを決められるかどうか
- 誤検出が出たら、まず自分の指示を疑う。 たいてい伝えていないルールがある
- 仕組みより先に、出口を決める。 見る人と見る場がないと、動いていても何も変わらない
3つ目は、自分がまさに今つまずいているところだ。書きながら、次にやることが決まった気がする。