変数名の「混沌」を終わらせる:VBAにおける命名規則の極意
こんにちは。現場で数々のスパゲッティコードを解体し、堅牢なシステムへと作り変えてきたエンジニアです。
VBAの世界に足を踏み入れたばかりの頃、「とりあえず動けばいい」と適当に付けた変数名で、半年後に泣きを見たことはありませんか? `a`, `b`, `data`, `temp`……。これらは、未来の自分に対する「時限爆弾」です。
今日は、チーム開発で「お前のコード、読みやすいな」と信頼されるための、現代的な命名規則の極意を伝授します。
—
1. なぜ「ハンガリアン記法」は議論を呼ぶのか?
かつてVBA界隈では、変数名の頭に型を付ける「ハンガリアン記法(`strName`, `lngCount` など)」が神聖視されていました。しかし、現代の開発環境では、マウスを合わせれば型が表示される「インテリセンス」があります。
今のトレンドは「意味重視」です。
- 昔: `strName`(文字列であることが分かればいい)
- 今: `userName`(中身が何であるかが分かればいい)
型を型名で表現するのではなく、「変数の役割」を名前に込める。これが、混乱を招かないための第一歩です。
—
2. チーム開発で生き残るための「3つの命名ルール」
私が現場で強制的に適用している、シンプルかつ強力なガイドラインを紹介します。
① 役割を具体的に書く(名詞+役割)
「何が入っているか」を想像できる名前にします。
- NG: `data`, `val`, `temp`
- OK: `orderDate`, `customerList`, `maxRetryCount`
② 範囲を示す(接頭辞の活用)
変数の生存範囲(スコープ)を明確にすると、バグが劇的に減ります。
- モジュールレベル変数(Private): `p_` を付ける(例:`p_lastSavedTime`)
- グローバル変数(Public): `g_` を付ける(例:`g_appConfig`)
- 定数: 全部大文字でアンダースコア区切り(例:`MAX_RETRY_COUNT`)
③ 戻り値には「Function名」をそのまま使う
VBA特有のルールですが、関数内での計算結果を格納する変数には、関数名そのものを使うと可読性が爆上がりします。
‘ 良い例:関数の役割と変数が一致している
Public Function CalculateTax(ByVal price As Long) As Long
‘ 変数名を関数名と一致させることで、何のための値か一目瞭然
Dim CalculateTax As Long
CalculateTax = price 0.1
End Function
—
3. 実践!保守性の高いコードの書き方
実際に、これらを意識したコードを見てみましょう。
Option Explicit ‘ これを忘れるのはエンジニア失格です
‘ モジュールレベル変数には p_ を付与
Private p_retryCount As Integer
‘ 定数は大文字で定義
Private Const MAX_RETRY_COUNT As Integer = 3
Public Sub UpdateInventory()
‘ ローカル変数はキャメルケース(小文字始まり)
Dim currentStock As Long
Dim targetItemName As String
targetItemName = “Widget_A”
‘ 処理の途中で出てくる変数も役割を明確に
Dim isStockAvailable As Boolean
isStockAvailable = CheckStock(targetItemName)
If isStockAvailable Then
‘ …更新処理…
End If
End Sub
なぜこれが「極限の知見」なのか
- `Option Explicit` の強制: 変数の宣言漏れによるエラーを撲滅します。
- スコープの可視化: `p_` や `g_` を見るだけで、「この変数はどこまで影響があるか」を脳が即座に理解できます。
- 型推論に頼る: `Integer` か `Long` かは、右辺の代入値から推論するのが現代のエンジニアです。型を名前に込めて変更時に名前まで変える、という不毛な作業から卒業しましょう。
—
最後に:コードは「手紙」である
変数名や定数名は、次にそのコードを読む「未来の自分」や「同僚」への手紙です。
「ここには注文日が入っていて、この定数は最大試行回数だよ」と、コードが自ら語りかけてくる状態を作り出せれば、あなたはもう初心者ではありません。
まずは明日書くマクロから、「`data` という変数名を禁止する」ことから始めてみてください。たったそれだけで、あなたのコードの品質は一段階上のステージへと引き上げられますよ!
ここをクリアすれば、VBAの基本はバッチリです。一緒に、読みやすく美しいコードを書いていきましょう。
