はじめに
今日の未明に、こういう記事を公開しました。自作の道具をAIエージェントにして、点数が85点まで来て、そのあと本物のブックを一枚開いたら一発で欠陥が二つ出た、という回です。
締めは「次に開くのは、また別の一枚です」でした。順番でいけば、今日は次の一枚を開いた話になるはずです。
ですが、その前に別のことがありました。Excelの使われ方が変わったという話をAIとしていて、一行、返ってきたのが頭から離れなくなったのです。そこから道具の設計の話になって、最後は二十年前に自分が書いたマクロの話になりました。
今日はそちらを書きます。撃った話ではありません。
TL;DR
- Excelを使う人は、減っていません。むしろ増えています。 簡単に使えるようになったからです
- 一方で、Excelの使い方を教わりに行く人は減りました。 「どうやるか」は、いま聞けば数秒で返ってきます
- この二つは別々の出来事に見えて、同じ一つのことです。そう言ったら、AIがこう返してきました。「関所が、入口から出口に移ったんです」
- 昔は入口に訓練がありました。関数を覚える、参照を理解する。その訓練が関所になっていて、通った人は「なぜそうなるか」も一緒に持っていた
- いまは結果だけが先に出ます。しかも見た目が整っている。整っているぶん、手作業の間違いより見つけにくい
- だから増えるのは使う人だけではありません。誰も検算していない成果物も、同じだけ増えます
- 出口に関所を置くには、AIにループを渡してはいけません。私の道具は関所を五つ持っていますが、そのうち四つはAIを一度も呼びません
- 最後に、自分が二十年ほど前から使っているマクロを読み直しました。いまの関所と同じことが、全部入っていました
Excelの入口から、関所が消えました
まず、私の実感のほうから書きます。
Excelの解説を、もう見に行かなくなりました。 ここ二年くらい、一本も見ていないと思います。昔は関数の書き方を調べるのに動画や記事を探して、二十分見て、真似して、覚えていました。いまは聞けば数秒です。二十分と数秒では、勝負になりません。
同じことは、たぶん多くの人に起きています。「どうやるか」を配ることの値打ちが、急に薄くなりました。
その一方で、Excelを使う人は減っていません。私の周りを見ている限りでは、むしろ増えています。理由もはっきりしていて、簡単に使えるようになったからです。関数を覚えていなくても、集計は出ます。ピボットの作り方を知らなくても、集計表はできます。
この二つを並べて話していたときに、AIがこう返してきました。
解説が要らなくなった理由と、使う人が増えた理由は、同じ一つのことです。関所が、入口から出口に移ったんです。
関所が、入口から出口へ移りました
説明はこうでした。
昔のExcelには、入口に訓練がありました。関数を覚える、参照の仕組みを理解する、絶対参照と相対参照の違いで一度つまずく。それを通らないと、結果が出せなかった。
その訓練が関所になっていました。そして関所の外側に、教える商売が立てられた。解説が仕事になったのは、通らないと先に進めない場所があったからです。
いま、その関所が消えました。だから使う人が増えて、同時に教える側が細くなった。片方が原因で、もう片方が結果、ではありません。同じ一つの変化の、裏と表です。
ただし、関所そのものが無くなったわけではないと思います。入口から出口に移りました。
昔は「Excelができる人」は、必ず訓練を通っています。だから結果と一緒に、「なぜそうなるか」も持っていました。関所が中身を保証していたわけです。手で書いた式なら、間違えたときも自分の手癖の中にある。
いまは、結果だけが先に出ます。しかも見た目が整っている。整っているぶん、手作業の間違いより見つけにくい。 桁がそろっていて、罫線が引いてあって、合計欄まで付いている表が、根拠のところで一行ずれている。この形は、人が手で作った表には出ません。
だから増えるのは使う人だけではありません。誰も検算していない成果物が、同じだけ増えます。
必要とされる人も、入れ替わると思います。前は「作れる人」が要りました。これからは「出てきたものを見られる人」が要る。同じ一人でも、やることが逆です。前は作る側、これからは見る側。
この一行を聞いたときに、自分がここ最近やってきたことの説明が一つ付いた気がしました。マクロを作る道具だったものに、私はずっと検査を足し続けている。作れることより、出てきたものを見られることのほうに時間を使っている。私自身も、入口から出口に移っていたわけです。言われるまで、その言葉を持っていませんでした。
出口に関所を置くには、ループを渡してはいけない
見立てだけで終わらせると気持ちが悪いので、実装の話をします。
出口に関所を置く、というのは、道具の中では具体的な形になります。ただし条件が一つあって、AIにループを渡していると、これができません。
いまの主流は「AIがループを持つ」形だと思います。AIが考えて、道具を呼んで、結果を見て、また考える。作るのが楽なので、自然とそうなります。
私の道具は逆で、Pythonがループを持って、Gemini を一往復ずつ呼びます。AIは判断する部品でしかありません。AIはExcelに一度も触らず、返してよいのは「許された手の名前と引数」を書いたJSONだけです。実際にExcelを動かすのは、全部Python側です。
一往復の中身は、こうです。
- 材料を集める(AIを呼ばない)。シートの中身を要約して取ります。四十行を超える表は、全行ではなく列ごとの性質に畳む。ここで、AIに渡す量が決まります
- 送る。依頼文と規約と材料を一つにして送る。結合セルの帳票のように、文字にすると形が壊れて見えるものだけ、画像を一枚添える
-
APIを叩く。
urllibで生のRESTです。generativelanguage.googleapis.comの:generateContentに投げて、返事の形をJSONに固定します(responseMimeType: "application/json"、temperature: 0.2)。429と5xxは二回まで待って撃ち直します - 返事を分解する。規約に合っていなければ、実行せずに「規約どおりのJSONで返してください」と差し戻す
- 手をPythonが実行する。最初の書き込みの直前に、シートの控えと、ブック全体の控えを取ります
- 結果を短く返す。書いたら、書いた直後の見た目を一枚だけ添える
そして本題は、ここからです。
「完了」と言ってきても、通しません
AIが「終わりました」と返しても、そのままでは通しません。関所が順番に並んでいて、引っかかったら「完了」を取り消して、指摘を次の往復に渡します。
| 関所 | 何を見るか | AIを呼ぶか |
|---|---|---|
| ① やることの一覧 | 分解した項目が「未」のまま完了は受け付けない | 呼ばない |
| ② 仕上げ検査 | 実物を見て、見出しの体裁・罫線・桁区切り・寄せ・列幅の ###・空の見出し |
呼ばない |
| ③ 頼んでいない変化 | 撃つ前のブックの控えと、いまのブックを照らす | 呼ばない |
| ④ 読み残し | 数式のあるセルを数えて、見ていない分が残っていないか | 呼ばない |
| ⑤ 自己採点 | 依頼文と書いたあとの見た目を照らして、満たしていない点を挙げる | 呼ぶ(一往復) |
差し戻しは、それぞれ一回だけです。往復の上限は四回にしてあります。無限には回りません。
五つのうち四つが、AIを一度も呼ばない。 ここがこの形の要点だと思っています。
検査をAIにやらせると、確かめるたびに往復が増えます。機械が検査するなら、そこはゼロです。しかも機械の検査は、気分で結果が変わりません。列幅が足りなくて ### が出ているかどうかは、見れば分かることであって、判断ではないからです。判断が要らないものを、判断できる相手に頼まない。
そして、これはループを持っていないとできません。関所を置けるのはループの持ち主だけだからです。AIがループを持っていると、検査は「お願い」になります。守るかどうかは向こう次第で、しかも守ったふりができてしまう。Pythonが持っていれば、通らなければ次に行かせない、が本当にできます。
同じ理由で、こんなこともできます。
- 回帰試験が書けます。 手順が決まっているので、同じ入力で同じ手順が回る。だから自動の試し撃ちや、二回撃って結果が変わらないかの検査が成立します
- AIを差し替えられます。 Gemini を呼ぶ関数と Claude を呼ぶ関数が同じ形をしていて、切り替えるだけです
- APIを呼ばずに試験できます。 記録に残った返事を再生する仕掛けがあって、鍵も費用もなしでループの側だけ確かめられます
- 測れます。 往復ごとに、字数・秒・トークンの請求書が出ます
費用と往復の関係は、二日前に別の記事に書きました。ここでは繰り返しません。
二十年前に、同じものを書いていました
最後に、この日いちばん自分でも意外だったことを書きます。
AIと設計の話をしている流れで、自分が昔から使っているマクロを一つ出しました。連続換装と呼んでいるものです。リストに並んだブックを順に開いて、ひながた一冊ぶんのマクロを全部入れ替えて、保存して閉じる。自分のブックが何十冊もあって、共通のマクロだけ配りたいときに使います。
作り始めたのは、二十年ほど前です。
中身を並べると、こうなっていました。
- 既存のモジュールを消したあと、本当に消えるまで待つ。消えなければ止める。黙って保存しない
- 入れ直したモジュールの名前が連番の別名になっていたら、実名に戻す。戻せなければ止める
- 別のフォルダにある同名のひながたが開いていたら、取り違えないように中断する
- 前回異常終了したときの一時ファイルが残っていたら、始める前に掃除する
- マクロを持てない形式のファイルは触らない。開いて保存すると、更新日時を汚すだけだから
- リストの非表示行は飛ばす。絞り込みが掛かったまま処理して、数がずれないように
- 進み具合を出すときだけ、画面更新を一瞬だけ戻す。黙って速くするより、見えるほうを採る
- 途中で落ちたら、画面更新もイベントも警告も全部戻してから止める。汚れた状態でExcelを放置しない
こうして並べてみると、いまの道具の関所と同じことばかりでした。
- 作ったあとに数える
- 数が合わなければ完了にしない
- 対象を取り違えない
- 前の状態に引きずられない
- 頼まれていないものを汚さない
- 途中で死んでも、後始末をしてから止まる
AIのために考えた設計だと思っていたものが、二十年前のマクロに全部入っていました。
理由は、たぶん単純です。大量のファイルを機械にまとめて触らせる人は、必ずこの形にたどり着くからです。一冊なら目で見れば済みます。三十冊を機械に触らせると、目で見られない。だから、機械に数えさせて、合わなければ止める、以外にやりようがなくなる。
AIが来て新しく必要になったのではありませんでした。前からあったものが、いま別の名前で呼ばれているだけです。
コードには地層も見えます。消えるまで待つループのところだけ、2026-07-15 という日付のコメントが入っていて、周りはそれよりずっと古い。二十年ぶんの本体に、今年の一段が足された形になっていました。
事実と見立ての仕分け
例によって仕分けます。
事実。 道具の側は、九月六日に実物のコードを読み直した内容です。ループ本体がPython側にあること、Gemini を urllib の生RESTで呼んでいること、返事の形をJSONに固定していること、429と5xxを二回まで撃ち直すこと、関所が五つでうち四つがAIを呼ばないこと、差し戻しが各一回で往復の上限が四回であること、APIを呼ばずに記録を再生できること、往復ごとに請求書が出ること。すべて実装にそう書いてあります。
連続換装のマクロが二十年ほど前からのもので、待ちループのコメントに 2026-07-15 の日付が入っていることも、実物のとおりです。
見立て。 「関所が入口から出口に移った」は、AIが言った一行で、私がそのとおりだと思ったものです。実験で確かめたものではありません。「Excelを使う人が増えている」も、私の周りを見ての実感で、統計を取ったものではありません。「誰も検算していない成果物が増える」も、いま起きていることの予想です。
「大量のファイルを機械に触らせる人は必ずこの形にたどり着く」も、自分の二十年と、いま作っている道具の二つを並べただけの一般化です。標本が二つしかありません。
正直な線引き
- 道具のエージェント部分は、まだ配っていません。 公開しているリポジトリに入っていません
- 中で回しているAIは gemini-3.7-flash です。安くて速い側のもので、賢いモデルに替えれば結果は変わります。道具を作っている相棒は Claude Code のほうです
-
関所は五つありますが、見ているのは体裁と変化です。 見出しの形、罫線、桁、寄せ、
###、頼んでいない変化、読み残し。「その集計が仕事として正しいか」は見ていません。 そこは中身の知識で、道具の中に持ちようがない部分です - 材料は外のAIに送られます。 シートの値も数式も、送らなければ判断できません。鍵や個人情報が載っているシートは触らせないでください。これは道具の問題ではなく、どのシートを対象にするかの問題です
- 消す手は渡していません。 行や列を消す、名前を消す ── 戻せない手は、いまも入れていません
- Windows 版の Excel の話です
おわりに
今日は、次の一枚を開く前に、遠回りをしました。
関所が、入口から出口に移った。 この一行はAIが言ったもので、私が言ったものではありません。ただ、言われてみると、自分がここ二年やってきたことは全部そこにありました。作れることより、出てきたものを見られることのほうに、時間を使っている。
そして、その形を最初に書いたのは、二十年前の自分でした。名前を知らないまま、同じものを書いていたわけです。
次に開くのは、また別の一枚です。


