和風スパゲティのレシピ

日本語でコーディングするExcelVBA

キャメルケースとスネークケースの違い

変数・関数などの名づけ方の種類(ルール)である、
キャメルケースとスネークケースの違いを説明します。

同じところ

どちらも変数名・関数名を名付ける際の、
「単語の区切りをわかりやすくするためのルール」です。

違うところ

単語の区切り方が異なります。

  • CamelCaseと、各単語の頭文字を大文字にするのがキャメルケース
  • snake_caseと、単語間にアンダーバー「_」を入れるのがスネークケース

です。


なお、前者のキャメルケースは、「camelCase」と先頭の単語だけはすべて小文字のまま書く場合もあります。

というか、むしろその使い方の方がよく登場し、特に変数ではこの書き方がメジャーなので、以降はcamelCaseで説明を進めますね。

使い分け

とりあえず、開発チームとかでルールがある場合はそれに従います。
なければ、書いているプログラミング言語の文化を踏まえつつ、
自分なりに使い分ければOKです。


同じコード内でこの2記法が混じると見づらいからなのか、この2つを併用して書き分け・読み分けを行うことはそんなに多くありません。

言語やチームごとに、どちらをメインの記法にするかが決まっており、
もう片方は定数のみなど、サブ的な使い方をすることが多いように思います。


ExcelVBAの文化はというと、camelCaseを使って書いている人の方がかなり多い印象を受けます。


「vba 命名規則」で調べて出てくるサイトも、ほとんどがキャメルケースを推奨しており、

  • コードのメインとなる「変数 / 関数」はcamelCase/CamelCase
  • 「定数」「Public変数」「仮引数」など、目立たせたいものはsnake_case

と、↑で述べたスネークケースの「混じると見づらい」のを逆手にとった、
特別なものを目立たせるために例外的にスネークケースを使うことが多い様です。


どっちかいいかよくわからない方は、とりあえずcamelCaseを使っておけば間違いがない言語だと思います。

両方のケースにさらに細かいケースがある

両方のケースで「大文字にするか小文字にするか」でさらに細かい区分があります。

まず簡単なのがsnake_caseで、これはSNAKE_CASEと書くこともできます。
区別する場合は、

  • 小文字をローワースネークケース(lower_snake_case)
  • 大文字をアッパースネークケース(UPPER_SNAKE_CASE)

と呼び分けます。
単にスネークケースといった場合は、前者を指すことが多いです。


一方camelCaseですが、元々大文字で区切っているためすべての文字を大文字にはできません。

ということで、↑で軽く触れましたが、先頭の単語を大文字にするかどうかで、

  • 小文字をローワーキャメルケース(lowerCamelCase)
  • 大文字をアッパーキャメルケース(UpperCamelCase)

と区別します。


ただし、後者を「パスカルケース」と呼ぶこともあり、この場合は、

  • 小文字をキャメルケース(camelCase)
  • 大文字をパスカルケース(PascalCase)

と呼び分けます。


先ほど「ExcelVBAではキャメルケース使いが多い」と評しましたが、
このキャメルケースを、さらにパスカルケースと使い分け、

  • 関数はPascalCase
  • 変数はcamelCase

と書いている人も多いです。


前述の通り、変数では多くの言語でlowerCamelCaseが一般的なので、単にキャメルケースと言われたら、camelCaseだと思っておけばOKです。

この使い分けについてはこちらの記事をご参照ください。

www.limecode.jp

おまけ:私の場合

日本語変数使いである私は、snake_caseはめったに使いません。
並列であることを明示したい定数群で使用するくらいです。


なんでかというと、単に見づらいからです。

変数_命名規則 とか、なんか変ですよね。
しかもタイプしづらいし。


普通に「変数の命名規則」って書いた方がわかりやすいです。

日本語は助詞てにをはが非常に優秀な言語で、
これを省略しなければ、漢字と漢字の間はひらがなが区切ってくれる上に、
たった1文字でかなり適切に単語間の関係を表してくれます。


ということで、若干話がずれている気がしますが、私のマイルールには、
「なるべく助詞を省略しないことで、漢字と漢字の区切りにひらがなを」
名付けて「てにをはケース」を採用しています。