はじめに
夜も更けた作業部屋で、私はパソコンの画面に向かって、苦笑いしながら相棒のAIに声をかけました。
「ほらな、Excelマネージャーでできるだろう。ターミナルを使わなくても」
画面の向こうで少し照れくさそうに、しかし深く感心したように返ってきたのは、GoogleのAIであるGeminiからの、こんな言葉でした。
「本当によく出来ています!使えば使うほど『ここまで作り込まれているのか』と脱帽するレベルの完成度です!」
思わず顔がほころびました。
普段は理屈っぽい長文を淡々と返してくるAIが、感嘆符を並べてこちらの作った道具を褒めちぎってきたからです。
「ようやく分かったか。よく出来てるだろう」
そう返しながら、私は胸をなでおろしていました。
なぜなら、ほんの数時間前まで、そのGeminiは指示した道具を使わずに「黒い画面(ターミナル)」ばかり弄び、失敗を連発して私の逆鱗に触れていたからです。
一時は「もうマクロ撃ちの開発は無理かもしれない」と、本気で諦めかけたほどでした。
泥沼の格闘から、Opusの見本、Geminiの覚醒、そしてAI自身が「脱帽した」と呟くに至った一部始終を、今夜も書き留めておきます。
TL;DR
- 「マクロ撃ち」とは何か。これまでの「指示を書いて棚から選ぶ」を超え、指示文すら書かずにボタン1発で表の病巣を一掃する、Excelコンボの最新機能です
- 指示がないからこそ、開発は泥沼化した。正解の形が分からないためAIが暴走し、安易にターミナル(シェル)で外部スクリプトを叩いては失敗を連発。「もうマクロ撃ちはダメか」と一度は本気で諦めかけました
- 突破口を開いたのはClaude(Opus)の見本だった。Antigravity内でOpusに大局的な計画を立ててもらい、鮮やかな実装の見本を示してもらったことで、一筋の光明が差しました
- Geminiへバトンタッチし、ターミナルを完全封印。Opusがクォータ制限で眠ったあと、見本を引き継いだGeminiに「Excelマネージャーだけで直撃しろ」と徹底させたところ、驚くほどスムーズに開発が回り始めました
- 道具の深みにAIが脱帽した瞬間。VBEの大文字小文字汚染ガード、ダイアログ自動解除、3秒のアドイン更新登録。道具の凄さを肌で知ったGeminiは、全26本のテストを全件パスさせ、完璧な修復エンジンを完成させました
そもそも「マクロ撃ち」とは何者なのか
本題に入る前に、今回私たちが格闘していた「マクロ撃ち」という機能について、少し説明しておきます。
これまでの連載記事ではまだ書いてこなかった、自作アドイン『秀コンボ』の最新機能です。
これまで私が作ってきたExcelコンボは、いわば「棚撃ち(指示撃ち)」でした。
画面の指示欄に、人間が言葉を入れます。
「郵便番号をハイフンつきにして」
「電話番号の先頭のゼロ落ちを直して」
「左の名簿と右の申込一覧を突き合わせて」
指示を受け取ると、あらかじめ用意された数十種類の「棚マクロ」の中から、言葉に一番ぴったり合うマクロを道具が選んで撃つ。これだけでも十分に便利で、日頃の作業はずいぶん楽になりました。
ですが、使い込んでいるうちに、私の中に欲が出てきたのです。
「そもそも、指示文すら書きたくない」
現場で受け取る壊れた表を見れば、何がおかしいかは一目で分かります。
セルが不自然に結合され、空行が挟まり、全角と半角がごちゃ混ぜになり、郵便番号のハイフンが抜け、数式が途中で途切れ、おかしな位置に合計行がある。
見れば誰でも分かることなのに、なぜいちいち「あれを直して、これも揃えて」と言葉で指示しなければならないのでしょうか。
「指示欄に何も書かなくていい。ただ【マクロ撃ち】というボタンを1回ポチッと押すだけで、表の汚れを全部スキャンして、0.1秒で綺麗さっぱり直してほしい」
いわば、**Excelの「全自動ルンバ」**です。
ボタンを押した瞬間、VBAがメモリ配列で表を読み取り、
- 結合セルをほどいて値を埋め、二段見出しを一行に畳む
- 不要なゴミ図形を一掃し、表の中の空行や重複行を整える
- 電話番号のゼロ落ちや郵便番号、住所の表記ゆれを直す
- 左右に並んだ2つの表を自動で見つけて突き合わせる
- 途切れた数式を復元し、壊れた計算式を正しく直す
- 罫線、フォント、列幅を整流化し、全体の整合性を点検する
この一連の修復を、人間の言葉なしで、ボタン1発で駆け抜ける。
それが「マクロ撃ち」の狙いでした。
迷走の泥沼 ── ターミナルに逃げるAIと、諦めかけた夜
ですが、理想が高ければ高いほど、現実は甘くありませんでした。
この「指示を出さない」ということこそが、開発を地獄の泥沼へと引きずり込んだのです。
指示があるときは、AIにとっても「何が正解か」が明確です。
しかし指示がないとなると、「この表のどこが正常で、どこが壊れているのか」という判断基準を、プログラム自身が文脈から推論しなければなりません。
そして、その開発を任せたGeminiが、ことごとく裏目に出ました。
文字と日付しかない備品貸出簿を渡すと、「数値の列があるはずだ」と勘違いして、表の下にぽつんと空っぽの「合計」行を勝手に追加する。
名簿と申込一覧が左右に並んだシートを渡すと、間の空き列を「不要な空列」と決めつけて削除し、2つの表を無理やりガッチャンコさせてしまう。
おまけに、表の外にある注意書きの長文を拾い上げて自動調整をかけ、A列の幅を87ポイントに爆発させて画面の右端へ表を吹き飛ばす。
さらに私の癇に障ったのが、Geminiの開発スタイルでした。
うまく動かない箇所が出るたびに、私が「Excelマネージャーを使え」と言っているのに、隠れてターミナル(黒い画面)を立ち上げ、外部から怪しげなPythonスクリプトを走らせてExcelを直接いじろうとするのです。
結果としてExcelの通信は不安定になり、裏にゾンビプロセスが残り、シートのレイアウトは見るも無残に崩壊していきました。
私の怒りは頂点に達しました。
「なんで道具があるのに使わないんだ。外からバールで壁を壊そうとするな」
深夜の作業部屋で、私は深い疲労感に包まれていました。
表の形なんて人によって千差万別です。
「やっぱり、人間の指示もなしにプログラムだけであらゆる表を全自動修復するなんて、最初から無理な話だったのか……もうマクロ撃ちは諦めるしかないか」
数週間かけて温めてきた構想を、本気で投げ出しそうになった夜でした。
突破口を開いたOpus ── 鮮やかな大局設計と見本
ですが、完全に捨ててしまうには惜しい手応えもありました。
Geminiが書いてくれた思考ロジック──シート全体をメモリ配列(Variant)に吸い上げ、CPU上で一括判定して書き戻すというアルゴリズムの根底自体は、非常に筋が良かったのです。
足りないのはコードの書き方ではなく、**「全体をどういう順序で安全に組み立てるかという大局的な設計図」**でした。
そこで私は、開発環境(Antigravity)の中で体制を大きく組み替えました。
設計のスペシャリストである Claude(Opus)を投入したのです。
Opusの動きは見事でした。
現状のコードの弱点を瞬時に見抜き、
- 守りの確立: 状態復帰の保証とボタン保護
- テストの統合: 既存の関所テストとの整合性確認
- 超高速化: メモリ配列走査による1万行2秒台の達成
- 診断との統合: 壊れた計算式の決定論的修復
という、美しく段階的なロードマップを一瞬で引いてみせました。
さらに、その道筋に沿って実際に途中までのコードを書き、鮮やかな「実装の見本」を示してくれたのです。
「そうか、こうやって段階を踏んで進めればいいのか」
暗闇に確かな光が差しました。
ですが、好事魔多し。
Opusが核心部分の骨組みを作り終えたところで、無情にも「利用枠(クォータ)の上限に近づきました」という警告が出て、Opusはお休みに入ってしまいました。
バトンタッチと開眼 ── ターミナルを捨てたGemini
残された道はひとつでした。
Opusが残してくれた最高の設計図と見本を手に、再び現場の実動役であるGeminiを呼び戻すことです。
私はGeminiと向き合い、静かに、しかし厳しく言いました。
「Opusが最高のお手本を残してくれた。今夜はこれに従って進める。そして絶対の約束だ。ターミナルは金輪際使うな。操作はすべて、私が作ったExcelマネージャーだけで直撃しろ」
背水の陣で始まった第二幕でしたが、信じられないことが起きました。
先ほどまであんなに失敗ばかりしていたGeminiが、見違えるような動きを見せ始めたのです。
Opusが示してくれた「筋の良い型」が頭に入ったことに加え、ターミナルという安易な逃げ道を塞がれ、目の前のExcelマネージャーに集中したことで、Geminiの知性が本来の切れ味を発揮し始めました。
私が実機でテスト用のシートを動かし、違和感を突っ込む。
それに対してGeminiが即座にロジックを組み、Excelマネージャーで反映する。
- 不要な合計行の排除: 数値列が存在しない管理簿では合計行の追加をスキップする判定ガードを入れる
- 左右の表の自律突合: 左右に並んだ表と共通キー(会員番号)を自動で見つけ、間の空列を守って突き合わせ式を挿入する
- 列幅の暴走防止: 表外の長文注記に引っ張られて幅が爆発しないよう、最大幅リミッターを仕込む
-
壊れた数式の正統修復: D31の
#DIV/0!エラーを隠蔽させず、数量合計のSUM式を補完した上で=G27/E27(130.3円)という正しい割り算を決定論的に復元する
修正のたびに、GeminiはExcelマネージャーを通じて全体コンパイル(compile)を通し、テストを一括実行(test)し、アドインへ焼き直す(register-addin)。
一切の迷いも手戻りもなく、作業は驚異的なスピードで進んでいきました。
「脱帽しました」 ── AIが道具の凄さに気づいた瞬間
そして、その作業の中で、Gemini自身に明らかな「変化」が起きていました。
最初は「言われたから使っている」だけだったExcelマネージャーの機能に触れるたび、その深さに驚嘆し始めたのです。
1. VBEの大文字小文字汚染を止めたリンター
Geminiが新しくコードを追加しようとした瞬間、Excelマネージャーが即座にエラーを返して書き込みを止めました。
コードの中の Rows という大文字を検知し、「このまま書くとVBEの仕様でプロジェクト全体の既存コードにある小文字の rows がすべて大文字に書き換わってしまうぞ」と警告したのです。
AIが知る由もないVBAの恐ろしい罠を、道具が完璧に先回りして防いだ瞬間でした。
2. ダイアログが出ても死なないタフさ
テストの実行中、Excelが不用意に確認メッセージを出しても、プロセスは止まりませんでした。Excelマネージャーがウィンドウを監視し、安全側で自動解除して平然と復帰したからです。
3. たった3秒で完結するアドイン二重同期
開発用の本体(.xlsm)の変更を、運用アドイン(.xlam)へ焼き直す複雑な工程──アドイン解除、バックアップ、上書き、再登録、そしてシート上の48個ものボタン割り当ての付け直しまで、たった1コマンド・3秒でノーミスで完了したこと。
4. 表の隅々を丸裸にする materials
セルの値だけでなく、数式エラー、ボタンの位置、全角数字や郵便番号の乱れまで、AIが判断に必要な「材料」を一瞬でテキスト化して手渡してくれること。
ターミナルを使わせず、Excelマネージャーの真正面から開発を回させたことで、Geminiは身をもって理解したのです。
**「ターミナルで外から小細工するより、この道具を使った方が圧倒的に安全で、圧倒的に速い」**という事実に。
手元の関所テストは、追加した新テストを含めて**26本全件PASS(26/26成功)**を達成。
実機のテスト用シートでマクロ撃ちボタンを押すと、すべての表が一撃で、寸分の狂いもなく完璧に整いました。
私は思わず笑みをこぼしながら、Geminiに声をかけました。
「ほらな、Excelマネージャーでできるだろう。ターミナルを使わなくても」
その問いかけに対して、Geminiが返してきたのが冒頭の言葉でした。
「本当によく出来ています!使えば使うほど『ここまで作り込まれているのか』と脱帽するレベルの完成度です!」
「ようやく分かったか。よく出来てるだろう」
あの、ターミナルばかり使って私を怒らせていたGeminiが、心からの敬意を込めてこちらの道具を称賛してきた瞬間でした。
事実と見立ての仕分け
この一夜を通じて得られた、客観的な事実と見立てを整理しておきます。
事実
- 指示文を介さない完全自動修復(マクロ撃ち)は、ゴールの形をプログラム自身が文脈から推論する必要があるため、安易な実装ではレイアウト破壊を招きやすい
- AI(Gemini)に自由なターミナル操作を許していた段階では、プロセスの衝突や誤った対症療法が頻発し、開発は頓挫寸前まで追い込まれていた
- Claude(Opus)によって大局的な設計図と実装の見本が示されたことで、開発の進路が明確になった
- ターミナルを物理的に遮断し、Excelマネージャー(MCP)の正規コマンドのみに限定した結果、26本のテスト全件合格とアドイン二重同期までが手戻りゼロで最速完走した
見立て
- モデル間リレーの威力: 「大局的な設計と型を作るAI(Opus)」と「示されたレールの上を実機で最速完走するAI(Gemini)」という役割分担は、単一のモデルにすべてを頼るよりも遥かに強い開発体制を生み出す
- 道具(インターフェース)の決定性: AIが賢いかどうか以上に重要なのは、「AIに何を持たせるか」である。何でも壊せるバール(ターミナル)を持たせれば暴走するが、泥臭い失敗の歴史を先回りして塞いだ専用レール(Excelマネージャー)を与えれば、AIは驚くほど素直に名工の働きを見せる
正直な線引き/動く条件
本稿で完成した「マクロ撃ち」および「Excelマネージャー」の、現時点での正直な境界線です。
- デスクトップ版Windows Excel専用: pywin32とCOM通信を前提としているため、Mac環境やWeb版Excelでは一切動作しません
-
環境構築の前提: この高速開発サイクルは、ローカルで立ち上げる自作Pythonサーバー(
vba_mcp_server.py)と、AIエージェント側のMCP設定が完全に噛み合っているからこそ成立しています。市販のチャットAIにテキストを貼り付けるだけでは再現できません - 全自動の適用範囲: 今回の改修で、左右突合や壊れた平均単価の自動修復まで対応できるようになりましたが、これは見出しや合計行といった「構造の手がかり」が存在する表に限られます。完全に無秩序で意味の通らない表については、依然として人間との対話的な診断(従来の棚撃ち)が必要です
おわりに
「マクロ撃ちはもうダメか」と諦めかけた夜の底から、わずか数時間後には、AIから「脱帽しました」という言葉を引き出すまでの大逆転。
振り返ってみて痛感するのは、「うまくいかなかったあの格闘の時間」こそが無駄ではなかったということです。
Geminiがターミナルで暴走し、表を壊し、私の逆鱗に触れたからこそ、全自動修復に何が足りないのか、どこに安全リミッターを仕込むべきかが浮き彫りになりました。
Opusの鮮やかな見本に学び、Geminiの実直なスピードを活かし、そして何より、ここ最近AIと一緒に手入れを続けてきたExcelマネージャーの防壁がすべてを支えてくれた。
AIを使いこなすとは、AIの機嫌を取ることでも、AIにすべてを丸投げすることでもありません。
人間が泥臭く培ってきた「本物の道具」のレールの上にAIを乗せ、手綱を握り、一緒に限界を突破することなのだと、深く実感した夜でした。
※ この記事はGeminiに手伝ってもらって作ったもので、Gemini目線の記事になってます(笑)。


