ChatGPTが指示書を書き、Claude Codeが形にする。複数AI連携でExcelフォームとマクロを自動化した話
生成AIが出現する前、システムを作ろうとしたときには頭の中で仕様やフローをざっくり考え、紙に書き込んだり、テスト版を作ったりして泥臭く作り上げたものだ。
それがAIの登場とともに、ざっくりの内容をAIに投げてあーだこーだとチャットをし、出力されたプログラムをコピペするスタイルに移行した。今でも大半のエンジニアはこんな感じかもしれない。
しかし、「AIエージェント」の出現で、私の考え方はガラッと変わった。
最近は「どーやってClaude Codeに仕事をさせようか」と、そればかり考えている。実を言うと、最初はいきなりClaudeに指示を出して何度も大変な目に遭っていた。別のツールを試してみても結果は同じだった。
ところが、今回の相棒は違った。
仕様を投げた瞬間、彼はこう言ったのだ。
「内容を把握しました。これより実装します」
なんとも頼もしい発言ではないか。
今回はユーザーが作ったExcelブックから必要なデータを別ブックにコピーするという、比較的シンプルな要件だったこともあるが、それでも「AI、ここまで来たか」と心底震えた。
エージェントと相性抜群の「Excelテキスト化」
私はAccessの時もそうだが、Excelのフォームや標準モジュールもすべてテキスト化してGitで管理している。自作のマクロを使い、アクティブなワークブックの内容をサクッとテキスト化してMarkdownなどで保存しているのだ。
これが、Claude CodeのようなCUIのエージェントと抜群に相性が良い。
テキスト化の逆(インポート)の仕組みさえ用意しておけば、エージェントが修正・出力したテキストを取り込むだけで、あっという間にマクロが組み上がる寸法だ。
今回、私が試して大成功した「AI連携ワークフロー」は以下の通り。
爆速で開発を終わらせる12のステップ
- 仕様の壁打ち:まずChatGPTといつもの通り「あーだこーだ」とチャットして要件を詰める。
- 器の用意:Excelのマクロ有効ブック(.xlsm)を作成し、フォームを新規追加(ここは手動)。
- 環境の可視化:現在のフォルダ構成やファイルの定義をテキスト化(Markdown形式)。
- 【今回の肝】指示書の自動生成:ChatGPTに「後はClaudeにやってもらうから、プロンプト用の指示書書いて!」とお願いする。
- 指示書の保存:出力された指示内容を
instructions.mdのような形で保存。 - 環境の起動:WSL(Windows Subsystem for Linux)環境でClaude Codeを立ち上げる(Git管理がUTF-8なのでWSLが丁度いい)。
- 丸投げ指示:Claude Codeに「このMarkdownの指示を見て作業して」とだけ伝える。
- 応援:「Claude、頑張って!」と心の中で応援する。
- 感動の瞬間:冒頭の「これより実装します」のログを見て感動する。
- コードの取り込み:出来上がったテキストファイルをExcelにインポート。
- 動作確認:ボタンの配置やマクロの挙動をチェック。
- 微調整:見た目のデザインを人間(自分)の手で少しだけ整えて、完了!
Excelのユーザーフォーム作成は、難しくはないものの、GUIでの配置やプロパティ設定が地味に面倒でストレスが溜まる作業だ。ここをエージェントに丸投げできるだけで、開発の心理的ハードルは劇的に下がる。
結論:「AIのことは、AIに聞け」
今回うまくプログラミングが回った最大の勝因は、「Claudeへの指示書を、人間ではなくChatGPTに書かせたこと」にある。
AIが解釈しやすい厳密な前提条件や、関数・テーブルの仕様は、同じAIに出力してもらうのが一番ブレがない。「AIのことはAIに聞け」――これが、これからのAI懐柔の作法になりそうだ。
参考までに、今回ChatGPTが吐き出し、Claude Codeを一発で仕留めさせた「作業依頼書(Markdown)」を以下に共有しておく。
(共著: ChatGPT)
【参考】ChatGPTが出力した「Claude Codeへの指示書」
# 作業依頼
Excel VBA にて、出荷転記ブックの出荷取込機能を作成してください。
## 前提
* AGENTS.md のルールに従うこと
* コメント・メッセージ・プロンプトは日本語
* UTF-8 を維持
* ControlName を変更しない
* 大規模なレイアウト変更をしない
---
# ブック構成
## シート
* 設定
* 出荷取込一覧
* 出荷追加一覧
* 製品キャッシュ
---
# テーブル
## 設定
* テーブル名:tblImportSettings
* 列:設定項目名 / 値
* 設定内容例:対象ブック、ファイルパス、対象シート名、コード列、出荷日列、数量列、開始行、除外コード1~3、製品マスタブック名、テーブル名
## 製品キャッシュ
* テーブル名:tblProductCache
* 列:入力用コード / 製品名
## 出荷取込一覧
* テーブル名:設定シートから取得すること。
* 売上ブックから取り込む一時ワーク。再取込時は内容を削除して再生成してよい。
## 出荷追加一覧
* 手入力用。再取込時に削除しないこと。
---
# 作成してほしい機能
### 1. 設定取得関数
設定シート tblImportSettings から、設定項目名をキーとして値を取得する関数を作成すること(Accessの DLookup 的な使い方)。
* 例:GetSettingValue("コード列")
### 2. 製品キャッシュ取得
設定シートの「製品マスタブック名」を使用し、同一フォルダ内の製品マスタブックを開く。
* 必要項目:入力用コード、製品名 を tblProductCache へコピー。既存データは削除後再生成。
### 3. 売上ブック選択
ファイルオープンダイアログで売上ブックを選択する。
* 選択した内容を設定へ保存:対象ブック、ファイルパス
### 4. シート一覧取得
選択した売上ブックのシート名一覧を取得し、コンボボックスへ設定する。選択したシート名を「対象シート名」へ保存する。
### 5. 出荷データコピー
設定値(コード列、出荷日列、数量列、開始行)を使用し、対象シートからデータを読み込む。
* コピー先:設定シートの「テーブル名」で指定されたテーブルへコピーする。
* 除外コード:除外コード1~3に一致するコードは取込しないこと。
---
# 注意事項
* 列指定は F や J のような列記号で扱うこと。
* セル番地固定(Range("B2") 等)は使用しないこと。
* 設定値は必ず GetSettingValue 経由で取得すること。
* テーブル(ListObject)を使用すること。
* 出荷取込一覧は再生成可能な設計にすること。出荷追加一覧は消さないこと。
## 本日のAIコーディングログ
使用モデル: Claude Code (Claude 3.7 Sonnet) & ChatGPT-4o
本日のモットー: 「AIのことは、AIに聞け」
ミッション: Excelユーザーフォームとマクロ自動生成用の指示書連携プロトタイプ作成
本日の戦果:
- 完璧な意思疎通:ChatGPTが生成した指示書(MD)をClaude Codeへ引き継ぎ、一発で仕様通りのVBAテキストを出力 。
- 開発ストレスの駆逐:配置やプロパティ設定が最高に面倒なExcelフォームの組み立てをAIエージェントに丸投げ成功。
- 資産のテキスト化が真価を発揮:ExcelモジュールをGit管理(UTF-8)しているからこそ、WSL上のClaude Codeが最高の相棒になった。
本日の気づき:
- AI同士のプロトコル:人間が言葉で説明するより、AIに「別のAI向けの指示書」を書かせた方が打率が圧倒的に高い。
- 頼もしすぎるエージェント:CUIで「これより実装します」と宣言して動き出すClaude Codeの職人気質に惚れる。
- クリエイティブへの回帰:泥臭いコンポーネント配置から解放され、全体のフロー設計という「仕組み創り」に集中できる喜び。

0 件のコメント :
コメントを投稿