0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「fn命名規約」から始まるVBA構造化設計 ── 名前だけで意味を記述する構文思想と展開

Posted at

今回の趣旨

AI時代にはAiと人間が同時に読める可読性をもつと、AIの力を活かせるとともに、人間も可読性が高くなる。

すでにコメント欄にAI向けのコメントを入れる技術は以前述べたとおりであるが、今回なんとなくやってきたテクニックがAIにも有用であるとわかったため、今回VBAのノウハウとしてまとめておこうと思う。

✅ VBAの関数にfn の接頭辞を導入する利点

観点 効果
視認性 fn を見ただけで「Function」であると即断可能
IDE補完 fn 系でソート・フィルタがしやすい(特に関数のみ使いたい時)
保守性 sub と fn の命名が分かれることで、呼び出し側の誤解を防ぐ
移植性 他の環境(VBA→VB.NET など)でも命名規則が活きる

✅ AIとの相性の良さ(技術的観点)

効果 説明
構文分類が容易になる Sub と Function を明示的に分離できるため、出力側も誤解しにくくなる(例:戻り値のない関数を書き出すバグを防げる)
補完時に関数が並ぶ構文になる fn で始まるものを 関数として並列出力 すれば、補完UIで自動的に「関数群」がまとまる。
プロンプト駆動の構造化が容易 「fnで始まる命名を使って」「SubとFunctionを明確に分けて出力して」などの指定が非常に通りやすくなる。
テンプレート再利用が効く fnSanitizeFileName() や fnFormatDate8() のような処理を再利用する際、見つけやすく・コピペもしやすい
自動変換や整形がやりやすい AST(構文木)を使った自動整形でも、接頭辞があれば関数群を自動抽出できる(スクリプト生成や検証時に便利)

# 🤖 AI向けのプロンプト例(VBAコード出力)

以下のルールに従ってVBAコードを出力してください:

- 関数名には `fn` を先頭に付けてください(例:fnSanitizeFileName)
- 複数の関数が1つのメイン処理に従属する場合は、fnMainExport_FormatTitle のように命名してください
- Sub は処理単位で命名し、関数との接頭辞差で役割を明確化してください

🧠 命名による擬似スコープ・擬似モジュール化

  • VBAはモジュールや名前空間が弱い

  • しかし fnMainProcess_Step2Clean のように書けば、
    「この関数はどの処理の中核に属するか」が即わかる

  • これは Python や C++ における MainProcess::Step2Clean() に近い思想

'  関数(戻り値あり)にはすべて `fn` を接頭辞として付ける
Function fnGetTitle(...) As String

' ✅ 機能単位の親子関係は `fnMainFunc_~` のように擬似名前空間で表現
Function fnMainExport_CleanupTitle(...) As String

Accessマクロ用中継Function規約

この命名規則はAccessでも有用である。

  • Accessボタン・フォームイベントには Function しか関連付けられない。
  • したがって、イベントトリガーとしての関数はすべて fn_Macro_~ で命名する。
  • 実際の処理は Sub または Function として分離して定義し、ロジックとUIを構造分離する。

例:

' Macro Button用
Function fn_Macro_ExportCustomerList()
Call ExportCustomerList
End Function

Sub ExportCustomerList()
' ... CSV出力処理 ...
End Sub

「fn規約」をさらに活かすガイド

応用として、以下のものが考えられる。

🔹 1. プロジェクト分類テンプレートの導入例

用途 推奨命名
Access マクロ起点 fn_Macro_◯◯
Excel メイン処理 fnMain_Excel_Export
外部ファイル処理 fnFile_ImportCSV
API連携処理 fnAPI_FetchData

🔹 2. モジュール設計テンプレートの雛形

' モジュール: ExportModule.bas
Function fn_Macro_ExportCustomerList()
    Call fnExport_CustomerList
End Function

Function fnExport_CustomerList() As Boolean
    ' 実処理:テーブル→CSV
    On Error GoTo ErrHandler
    ...
    fnExport_CustomerList = True
    Exit Function
ErrHandler:
    fnExport_CustomerList = False
End Function

✅ VBA構造化設計テンプレート(fn命名規約 × AI出力制御)

このテンプレートは、fn接頭辞に基づいたVBA関数命名規約と、ChatGPTなどのAIからの構造化出力を制御するためのプロンプト設計を目的とする。特にAccess VBAExcel VBAにおいて、命名で意味・構文・所属を明示するために有効。

🔹 命名規約テンプレート

✅ 基本ルール

' 関数(戻り値あり)は必ず fn を接頭辞として付ける
Function fnGetTitle(...) As String

' Sub との構文的区別を明示する
Sub ExportTitle()

' メイン処理に従属する関数は fnMain_ でスコープ関係を明示する
Function fnMain_ExportData()
Function fnMain_FormatTitle()

' 中間ステップを接続して階層的に分ける
Function fnMain_Cleanup_RemoveSymbols()

✅ Access マクロ向け命名(イベント用中継)

' マクロボタンから実行する中継Functionは fn_Macro_ を接頭にする
Function fn_Macro_ExportCustomerList()
    Call ExportCustomerList
End Function

Sub ExportCustomerList()
    ' ... 実処理 ...
End Sub

🔹 AI 出力制御プロンプトテンプレート

以下の指示を ChatGPT に与えることで、fn命名規約に基づいた構造的出力が得られる。

以下のルールに従ってVBAコードを出力してください:

- 関数名には `fn` を先頭に付けてください(例:fnSanitizeFileName)
- 複数の関数が1つのメイン処理に従属する場合は、fnMainExport_FormatTitle のように命名してください
- Sub は処理単位で命名し、関数との接頭辞差で役割を明確化してください
- Access のマクロ用にイベントと結びつける場合は、fn_Macro_ExportX のように書き、中で Sub を呼び出す構造にしてください

🔹 関数群の意味階層例(擬似名前空間)

関数名 意図・階層
fnSanitizeFileName 一般的な文字列整形関数
fnMain_CleanupTitle メイン処理内の1ステップ
fnMain_Cleanup_RemoveSymbols 上記の下位階層(サブステップ)
fn_Macro_ExportToCSV Accessマクロイベント用中継関数
ExportToCSV 実際の業務ロジック本体(Subで定義)

✅ 利用上のポイント

  • VBAは名前空間やクラス構造が弱いため、命名だけで構文構造を擬似的に表現する必要がある
  • fn接頭辞は人間とAIの両方に可読性と意味構造を伝えるための記号である
  • 本テンプレートは、AI生成コード・自動整形・ドキュメント化すべてに有効な命名構造である。加えて、他言語に移植する際のコード解読の手がかりにもなる。関数名に構造的意味が込められていれば、移植先でも機能の関連性や役割を即座に把握できる

✅ 推奨出力形式

  • Markdown(Notion展開向け)
  • YAML形式のプロンプトテンプレート
  • VBAコード断片(vbnetシンタックス)

✅ AI時代のさらなる視点の展開

この命名規約は単にVBAに有効なだけでなく、他の言語においても有効性を持っており、特に、AIがコードを生成する時代において構造認識を助ける命名インターフェースとして機能する。

📐 複数関数・複数ファイル時代の命名構造の意義

  • AIが複数の関数・処理ブロックを一度に出力できるようになったとき、関数間の関連性を命名で伝えることが重要になる
  • fnMain_Export, fnMain_Export_FormatDate などの命名は、構造と従属関係を即座に理解可能にする

🤖 AIにとっての利点

構文的課題 fn命名の利点
関数の関連性が不明 fnMain_X_Y により構文的階層が明示される
モデル間の処理連携が困難 命名で意味が伝わりやすくなり、再利用が促進される
コードの入口が不明 fnMain_ や fn_Macro_ によりUI起点やロジック起点が明確

🌐 他言語・他分野への応用例

言語/分野 命名例 効果
Python fnPipeline_CleanData() 関数パイプライン構造の可視化
JavaScript fnUI_HandleSubmit() DOM操作・UI関数の構造化
PowerShell fnDeploy_ValidateEnvironment() 部署系スクリプトの意味区分
Shell Script fnBackup_ExportSQL() 関連スクリプトの構造理解に有効

このように fn を「構文型 × 意味階層」のトークンとして活用することで、AI時代の構造的コード生成を支える“読解言語”としての命名構造が成立する。

以上が、fn命名規約 を核とした構造化命名テンプレートと、AI出力との連携について視点を展開した。なにかのヒントになれば幸いである。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?