プログラミングで変数や関数、ファイルに名前を付けるとき、「単語の区切りをどう表すか」で悩んだことはないでしょうか。userNameなのか、user_nameなのか、user-nameなのか。どれも同じ意味なのに書き方が違い、しかも言語やファイルの種類によって「正解」が変わります。
私自身、複数の言語を触っていると、つい別の言語の書き方を持ち込んでしまうことがあります。そこでこの記事では、代表的な命名規則であるキャメルケース・スネークケース・ケバブケースの違いと、「どんな場面でどれを使うのか」という使い分けを整理しておきます。
命名規則とは?
命名規則とは、変数名や関数名、クラス名などを付けるときの一貫したルールのことです。ルールを統一しておくと、コードの可読性や保守性が上がり、他の人がコードを読んだときも意図が伝わりやすくなります。
区切り文字の付け方で分類すると、よく使う命名規則は次の3つ(+派生形)です。
- キャメルケース(camelCase) … 区切りを大文字で表す
- スネークケース(snake_case) … 区切りをアンダースコア(_)で表す
- ケバブケース(kebab-case) … 区切りをハイフン(-)で表す
1. キャメルケース(camelCase)
キャメルケースは、単語の区切りを大文字で表現する命名規則です。文字列の途中に大文字が出っ張る様子が、ラクダ(camel)のコブに見えることが名前の由来です。
let userName = "John";
function getUserData() { return userName; }
userNameやgetUserDataのように、2つ目以降の単語の先頭を大文字にして区切りを表します。キャメルケースには、先頭を小文字にするか大文字にするかで2つのスタイルがあります。
ローワーキャメルケース(lowerCamelCase)
1つ目の単語の先頭は小文字、2つ目以降の単語の先頭を大文字にするスタイルです。単に「キャメルケース」と言った場合は、こちらを指すことが多いです。主に変数名や関数名に使います。
let userAge = 25;
function calculateAge() { return userAge + 1; }
アッパーキャメルケース(パスカルケース / PascalCase)
すべての単語の先頭を大文字にするスタイルで、パスカルケースとも呼ばれます。クラス名やコンストラクタ、Reactのコンポーネント名など、「型」や「部品」を表す名前によく使われます。
class UserProfile {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
使用例と用途
キャメルケースは、JavaScriptやJava、C#などの変数名・関数名で標準的に使われます。ざっくり言うと、変数や関数はローワーキャメルケース、クラスやコンポーネントはパスカルケース、と覚えておくと迷いにくいです。
2. スネークケース(snake_case)
スネークケースは、単語の区切りをアンダースコア(_)でつなぐ命名規則です。低い位置を這うヘビ(snake)のように見えることが名前の由来で、すべて小文字で書くのが基本です。
let user_name = "John";
def get_user_data():
return user_name
スクリーミングスネークケース(SCREAMING_SNAKE_CASE)
スネークケースをすべて大文字にしたスタイルは、スクリーミングスネークケース(コンスタントケース)と呼ばれます。多くの言語で定数を表すときの定番です。
const MAX_RETRY_COUNT = 3;
API_BASE_URL = "https://example.com"
使用例と用途
スネークケースは、PythonやRubyの変数名・関数名で標準的に使われます。また、データベースのテーブル名やカラム名でも広く使われる書き方です。大文字にすれば定数、と使い分けられるのも扱いやすいポイントです。
3. ケバブケース(kebab-case)
ケバブケースは、単語の区切りをハイフン(-)でつなぐ命名規則です。串に刺した具材が並ぶケバブに見えることが名前の由来で、こちらもすべて小文字で書きます。
let user-name = "John"; // JavaScriptでは変数名に使えません
JavaScriptをはじめ多くの言語では、ハイフンが引き算の演算子と解釈されるため、変数名や関数名には使えません。その代わり、ハイフンがそのまま書ける場所で活躍します。
使用例と用途
ケバブケースの主な出番は、HTMLの属性値・CSSのクラス名やID名、そしてURLやファイル名です。CSSは大文字小文字を区別しないうえ、単語がハイフンで区切られていると視覚的にも読みやすいため、クラス名の定番になっています。
<div class="user-profile">John</div>
<div id="user-info">25歳</div>
URLでも、単語の区切りにハイフンを使うのが一般的です(アンダースコアより検索エンジンに単語の区切りとして認識されやすい、と言われています)。このページのURLにcamel-snake-kebabと入っているのも、まさにケバブケースです。
結局どう使い分ける?(早見表)
最後に、どの場面でどの命名規則を選ぶかを表にまとめておきます。
- camelCase:JavaScript・Java・C#などの変数名・関数名
- PascalCase:クラス名・コンストラクタ・Reactコンポーネントなど「型・部品」の名前
- snake_case:Python・Rubyの変数名・関数名、データベースのテーブル名・カラム名
- SCREAMING_SNAKE_CASE:定数
- kebab-case:HTML属性値・CSSクラス名/ID名、URL、ファイル名
命名規則そのものに絶対の正解はなく、大切なのは使っている言語やチームの慣習に合わせて統一することです。まずは「今書いているのは何の名前か(変数か、クラスか、CSSか、URLか)」を意識して、その場に合った書き方を選んでみてください。それだけでコードはぐっと読みやすくなります。