プログラムやファイルを作っていると、download_files、download-files、downloadFilesのように、よく似た名前を目にします。
これらは、複数の単語をどのように区切って名前を付けるかを定めた命名規則です。どの形式が常に正しいというわけではなく、プログラミング言語や対象によって適した形式が異なります。
この記事では、代表的な命名規則の違いと、フォルダ・ファイル・関数・クラスなどでの使い分けを解説します。
代表的な命名規則
代表的な形式を、download filesという2語を例に比較すると次のようになります。
| 形式 | 記述例 | 主な用途 |
|---|---|---|
| snake_case | download_files | Pythonの関数・変数、データベースの列名など |
| kebab-case | download-files | フォルダ名、URL、Web系のファイル名など |
| camelCase | downloadFiles | JavaScriptの関数・変数など |
| PascalCase | DownloadFiles | クラス名、型名、C#のメソッド名など |
| UPPER_SNAKE_CASE | MAX_FILE_SIZE | 定数、環境変数など |
snake_case(スネークケース)
スネークケースは、単語をアンダースコア(_)で区切る形式です。
download_files
user_name
max_file_size
文字列が蛇のようにつながって見えることから、スネークケースと呼ばれます。
Pythonでは、関数名や変数名にスネークケースを使うのが標準的です。
def download_files():
file_count = 10
Pythonファイルの名前にもよく使われます。
download_files.py
file_converter.py
データベースのテーブル名や列名でも、スネークケースは広く使われています。
kebab-case(ケバブケース)
ケバブケースは、単語をハイフン(-)で区切る形式です。
download-files
user-profile
hydraulic-tools
単語が串に刺さったケバブのように見えることが名前の由来です。
視認性が高く、URL、フォルダ名、WebページやMarkdown文書などのファイル名によく使われます。
bat-tools/
download-files.md
pressure-loss-calculation.html
URLのパスにも適しています。
https://example.com/download-files/
ケバブケースを関数名に使えない理由
ケバブケースは、一般的なプログラミング言語の関数名や変数名には使用できません。
たとえば、次の記述を関数名として使うことはできません。
download-files()
多くの言語では、ハイフンが減算演算子として扱われるため、これは「downloadからfiles()の結果を引く式」と解釈されます。
ファイル名やURLでは便利ですが、プログラム内の識別子には向かない点に注意が必要です。
camelCase(キャメルケース)
キャメルケースは、最初の単語を小文字で始め、2語目以降の先頭を大文字にする形式です。
downloadFiles
userName
maxFileSize
大文字部分がラクダのこぶのように見えることから、キャメルケースと呼ばれます。
JavaScriptやTypeScriptでは、関数名や変数名に広く使われています。
function downloadFiles() {
const fileCount = 10;
}
JavaScriptのファイル名については、download-files.jsとdownloadFiles.jsのどちらも見られます。フレームワークや既存プロジェクトの規則に合わせることが重要です。
PascalCase(パスカルケース)
パスカルケースは、すべての単語を大文字で始める形式です。
DownloadFiles
UserProfile
FileDownloader
多くの言語では、クラス名や型名に使われます。
class FileDownloader:
pass
type UserProfile = {
name: string;
};
C#では、クラス名だけでなく、メソッド名やプロパティ名にもパスカルケースが一般的です。
UPPER_SNAKE_CASE(アッパースネークケース)
アッパースネークケースは、すべての文字を大文字にし、単語をアンダースコアで区切る形式です。
MAX_FILE_SIZE
DEFAULT_TIMEOUT
DATABASE_URL
主に定数や環境変数に使われます。
MAX_FILE_SIZE = 10_000_000
通常の変数と見分けやすいため、「原則として途中で変更しない値」であることを名前から伝えられます。
フォルダ・ファイル・関数での使い分け
迷ったときは、次のように使い分けると分かりやすくなります。
| 対象 | 推奨例 | 考え方 |
| フォルダ名 | bat-tools | 見やすく、プロジェクト名やURLにも転用しやすい |
| 一般的な文書ファイル | download-files.md | ケバブケースは文章的な名前を読みやすく表現できる |
| Pythonファイル | download_files.py | Pythonの標準的な慣習に合わせる |
| Python関数 | download_files() | Pythonではスネークケースが基本 |
| JavaScriptファイル | download-files.js | プロジェクトの規則に合わせる |
| JavaScript関数 | downloadFiles() | JavaScriptではキャメルケースが一般的 |
| クラス名 | FileDownloader | 多くの言語でパスカルケースを使う |
| 定数 | MAX_FILE_SIZE | 通常の変数と区別しやすい |
ただし、これは絶対的なルールではありません。使用する言語、フレームワーク、チームのコーディング規約によって異なる場合があります。
ツール置き場の構成例
Windows用のバッチファイルをまとめるツール置き場なら、次のような構成が自然です。
codex/
└── bat-tools/
├── backup-files.bat
├── clean-temp.bat
└── README.md
ここでは、フォルダ名と一般的なバッチファイル名にケバブケースを使っています。
README.mdは、多くの開発環境やGitHubなどが自動的に認識する慣例的なファイル名なので、無理にreadme.mdやread-me.mdへ変更する必要はありません。
命名時に注意したいポイント
1. 同じプロジェクト内で統一する
最も重要なのは、同じ種類の名前に同じ形式を使うことです。
backup-files.bat
clean_temp.bat
DownloadLogs.bat
このように複数の形式が混在すると、ファイルが増えたときに探しにくくなります。新しいプロジェクトでは最初に規則を決め、既存プロジェクトでは既存の規則に合わせましょう。
2. 名前から役割が分かるようにする
短さだけを優先するより、何をするものなのか分かる名前を選ぶ方が保守しやすくなります。
bf.bat
よりも、次の名前の方が用途を判断しやすくなります。
backup-files.bat
3. 空白はなるべく避ける
backup files.batのような空白を含む名前は、コマンドラインやスクリプトで扱う際に引用符が必要になることがあります。
"backup files.bat"
ハイフンやアンダースコアを使えば、こうした扱いにくさを減らせます。
4. 大文字・小文字の違いに注意する
Windowsでは大文字・小文字を区別しないことが多い一方、Linuxでは別の名前として扱われるのが一般的です。
DownloadFiles.py
downloadfiles.py
異なるOSで扱う可能性がある場合は、小文字中心の規則に統一するとトラブルを避けやすくなります。
迷ったときの基本ルール
新しいプロジェクトで特別な指定がない場合は、次のルールから始めると整理しやすくなります。
- フォルダ名:
kebab-case - 一般的なファイル名:
kebab-case - Pythonファイル・関数・変数:
snake_case - JavaScript・TypeScriptの関数・変数:
camelCase - クラス・型:
PascalCase - 定数・環境変数:
UPPER_SNAKE_CASE
既存の規則や公式スタイルガイドがある場合は、上記よりもそちらを優先します。
まとめ
スネークケースやケバブケースは、複数の単語を読みやすく、規則的に表現するための命名方法です。
snake_caseはPythonの関数・変数・ファイル名などに使われるkebab-caseはフォルダ名、URL、一般的なWeb系ファイル名に使いやすいcamelCaseはJavaScriptの関数・変数で一般的PascalCaseはクラス名や型名に使われるUPPER_SNAKE_CASEは定数や環境変数に使われる
用途ごとの慣習を知ることは大切ですが、最優先すべきなのは同じプロジェクト内で表記を統一することです。迷った場合は、使用する言語やフレームワークの公式ルール、既存コードの書き方に合わせれば、大きく外すことはありません。

