AI時代におけるVBAシステム開発に関する提言
個別事情はあるので一概には言えませんが、今の時点でVBAでシステム開発するのは、さすがに再検討した方が良いと思います。とくに、AIで分析できないような独自実装は避けた方が無難です。
なお、転記や軽い自動化であれば、今でも、そしてこれからも有効な使い方だと思います。
旧来の開発手法、特に低品質な実装慣習は完全に捨て去るべきです。
高凝集・低結合の原則に反する実装、すなわちAIの解析を妨げる悪しき慣習は、完全に捨て去ってください。
AIが作成・検証しやすいプログラミングを目指すべきです。
基本的に最も推奨されるのは、高凝集・低結合の機能分割がよいです。
さらに「高凝集・低結合」という原則を徹底するだけでなく、「AIが解析しやすい純粋性」を意識してください。
純粋性の追求こそが、AIがコードを書きやすく、さらにAIに頼った保守が可能になるための鍵となります。
これこそが、AIの力を借りて高品質で保守性の高いコードを継続的に生み出す唯一の道筋となります。
この文章をAIに入れて、補足してもらったものが以下になります。
AIによる補足
1. 「純粋性」がAI連携に不可欠な理由
- 参照透過性(Referential Transparency)
同じ入力(引数)を与えれば、何度実行しても必ず同じ出力(戻り値)を返す。 - 副作用の排除
関数の実行が外部状態(グローバル変数、シートのセル値、ファイルなど)を一切変更しない。
これにより、AIは関数の引数と戻り値のパターンを大量に学習し、最適なテストケース(単体テスト)を自動生成できます。結果として、コード生成・検証・デバッグの精度と効率が大幅に向上します。
2. 関心事の分離(Separation of Concerns)
という設計原則です。
- 入出力(I/O)
例:シート読み書き、ファイル操作、UI、MsgBox - ビジネスロジック(計算・判断・変換)
純粋関数として外部依存を排除 - アプリケーション制御(フロー制御)
どの関数をいつ呼ぶかを管理
3. VBAにおける悪しき慣習の具体例
- グローバル変数への依存
関数内部で Public 変数を読み書きする。参照透過性を損ない、関数の出力が入力以外に依存してしまう。 - シート・セルへの直接アクセス
Range("A1").Value = data や Cells(1,1).Value など。
意図せず外部状態を変更し、副作用を生む。 - イベントドリブン処理の巨大化
Worksheet_Change やユーザーフォームのボタンクリックイベントに複雑なロジックを詰め込む。
高凝集・低結合に反し、AIによる部分的な検証を困難にする。
4. エクセル数式とVBA純粋関数の関係
- エクセル数式(ワークシート関数)は純粋関数のモデル
- 入力(セル値)に応じて常に同じ結果を返す(参照透過性)。
- 外部状態を変更せず副作用がない。
AI時代のVBA開発では、VBAコード内にこの品質と特性を持つ関数を増やすことが理想です。
こうすることで、Office製品との親和性を保ちつつ、AIによる保守や解析が容易になります。
5. 技術的負債の回避と継続可能性
AIが解析できないコードは、この負債を増加させる原因です。
結果として、将来の技術的負債を防ぎ、AIを活用して高品質かつ保守性の高いVBAコードを継続的に生成できる、最も費用対効果の高い戦略となります。
※本記事の作成にあたっては、一部の文章作成に生成AI(Gemini)を使用しています。最終的な内容は人間による確認・編集を経て掲載しています。
新着記事NEW ・・・新着記事一覧を見る
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)
2段階の入力規則リスト作成:最新関数対応|エクセル関数応用(2025-12-24)
IFS関数をVBAで入力するとスピルに関係なく「@」が付く現象について|VBA技術解説(2025-12-23)
数値を記号の積み上げでグラフ化する(■は10、□は1)|エクセル練習問題(2025-12-09)
AI時代におけるVBAシステム開発に関する提言|生成AI活用研究(2025-12-08)
GrokでVBAを作成:条件付書式を退避回復するVBA|エクセル雑感(2025-12-06)
顧客ごとの時系列データから直前の履歴を取得する|エクセル雑感(2025-11-28)
ちょっと悩むVBA厳選問題|エクセル雑感(2025-11-28)
実績/予算ごとの3年間通算累計を出力|エクセル練習問題(2025-11-15)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.条件分岐(Select Case)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
