概要:VBA開発における「AIの品質」を統一する
近年の開発現場において、ChatGPTやClaudeといった生成AIの導入は避けて通れないフェーズとなりました。しかし、多くの現場で散見されるのが「AIに投げる指示(プロンプト)の属人化」です。あるエンジニアは詳細な仕様を伝えるが、別のエンジニアは「VBAでこれ作って」とだけ指示する。これでは、生成されるコードの品質、コメントの記述スタイル、エラーハンドリングの有無がバラバラになり、結果として「AIが書いたコードはメンテナンス性が低い」という烙印が押されることになります。
本稿では、VBA開発における生成AIの出力を標準化し、誰が使っても「シニアエンジニアが書いたような堅牢なコード」を出力させるための「共通プロンプト・フレームワーク」について解説します。この手法を導入することで、属人化を排除し、チーム全体の開発速度と品質を飛躍的に向上させることが可能です。
詳細解説:なぜVBA開発に「標準プロンプト」が必要なのか
生成AIは確率論的に「それらしいコード」を生成しますが、Excel VBAという言語特性上、いくつかの特有の落とし穴があります。例えば、暗黙的な型変換の多用、エラーハンドリングの欠如、Rangeオブジェクトの親階層の指定漏れなどが挙げられます。
これらはAIに「指示」を与える段階で、制約条件として明示的に指定しなければ解決しません。個々のエンジニアが毎回プロンプトを考えるのではなく、組織として「VBA開発標準」をプロンプトに組み込む必要があります。具体的には、以下の要素をプロンプトのテンプレートに含めるべきです。
1. 型定義の強制:Variant型を避け、具体的な型(Long, String等)を指定させる。
2. エラーハンドリングの標準化:On Error GoTo ラベル構文を用いたログ出力の徹底。
3. オブジェクトの明示:ActiveSheetやSelectionに依存せず、Worksheetオブジェクトを変数として定義させる。
4. コメントの言語と粒度:日本語で、かつ処理単位でのドキュメント化を求める。
5. コーディング規約:変数名(ハンガリアン記法の是非など)とインデントのルール。
これらを「システムプロンプト」あるいは「共通定型文」として定着させることで、AIを単なるコード生成ツールから、規約を遵守する「ジュニアエンジニア」へと昇華させることができます。
サンプルコード:標準化を強制するプロンプト設計
以下は、私が推奨する「VBAコード生成用共通プロンプト」の雛形です。これをAIへの最初の指示(システムプロンプト)として登録、あるいはチャットの冒頭に貼り付けて使用してください。
以下の条件を厳守して、Excel VBAのコードを作成してください。
【コーディングルール】
1. Option Explicitを必ず冒頭に記述すること。
2. 全ての変数について、Variant型を避け、適切な型を明示的に宣言すること(例: Dim rowIdx As Long)。
3. オブジェクト操作はActiveSheetに依存せず、Worksheet変数をセットして操作すること。
4. プロシージャ内には必ず「On Error GoTo」によるエラーハンドリングを記述し、エラー発生時はメッセージボックスで内容を表示すること。
5. 処理の要所に、日本語で簡潔なコメントを記述すること。
6. マジックナンバーを避け、定数(Const)を使用すること。
【出力要件】
- コードの後に、そのコードがどのような前提条件(参照設定など)で動作するかを箇条書きで記載すること。
- コードの解説を簡潔にまとめ、メンテナンス性を高める工夫を説明すること。
【今回の依頼内容】
[ここに具体的な業務ロジックや要件を記述してください]
このプロンプトを使用することで、AIは単なるコード出力から「ルールに則ったモジュール開発」へとモードを切り替えます。特に、エラーハンドリングの自動生成は、保守フェーズにおいて絶大な効果を発揮します。
実務アドバイス:AIとの対話プロセスを標準化する
共通プロンプトの導入と並行して、開発プロセスそのものにも「AI活用の標準化」を組み込むべきです。多くの現場が陥る失敗は、一度のプロンプトで完璧なコードを求めようとすることです。VBAはExcelの環境依存が強いため、以下の3ステップでの対話を推奨します。
ステップ1:設計と仕様の確認
「この業務ロジックをVBAで実装したい。まずは変数の設計と、使用するオブジェクトの特定からプランを提示してくれ」とAIに提案させます。ここで構造的な誤りがあれば早期に修正できます。
ステップ2:コードの生成
前述の共通プロンプトを使用してコードを出力させます。
ステップ3:レビューとリファクタリング
AIが生成したコードに対し、「このコードのパフォーマンスを向上させるために、画面更新を停止するコードを追加して、既存のコードをリファクタリングしてくれ」といった具体的な指示でブラッシュアップを行います。
また、作成されたコードは、必ず「チームの共通ライブラリ」に格納してください。AIが生成したコードをそのまま放置するのではなく、人間が一度レビューし、標準ライブラリとして名前を付けて保存する。このサイクルこそが、真の「VBA開発の標準化」です。
まとめ:生成AIを組織の資産にするために
VBAはレガシーな言語と思われがちですが、Excelが業務の基盤である限り、その重要性は変わりません。生成AIを「コードを書いてくれる便利な道具」として扱うレベルから、「組織のコーディング規約を体現する開発パートナー」へと引き上げるためには、今回紹介したような共通プロンプトによる「指示の標準化」が不可欠です。
プロンプトは単なる文字の羅列ではなく、組織の知見を詰め込んだ「定義書」です。誰が作成しても一定品質のコードが担保される環境を構築できれば、エンジニアはより高度な設計や、業務プロセスそのものの改善に時間を割けるようになります。
まずは、明日からチーム内で「共通プロンプトの雛形」を共有することから始めてみてください。AIを使いこなす能力とは、AIに何をさせるかではなく、AIにどのようなルールを守らせるかという「管理能力」に他なりません。本稿が、皆さんの現場におけるVBA開発標準化の一助となれば幸いです。
