すべての記事

camelCase、snake_case、kebab-case:どの場面でどれを使うか

ひらがな・カタカナ・漢字には、そもそも大文字・小文字の区別が存在しません。この区別はラテン文字・キリル文字・ギリシャ文字など一部の文字体系に固有の性質で、日本語の文章自体には「ケースを変換する」という操作が意味を持ちません。日本のコードでcamelCaseやPascalCaseが問題になるのは、変数名やクラス名としてローマ字表記(ヘボン式など)を使う場面に限られます。

主なスタイル

  • camelCase — 最初の単語は小文字、以降の各単語は大文字で始まり、区切り記号はなし: userName。JavaScript、Java、C#の変数・関数の標準。
  • PascalCase — 同様だが、最初の単語も大文字で始まる: UserName。ほぼどこでもクラスやコンポーネントに使われる。
  • snake_case — 単語をアンダースコアでつなぎ、すべて小文字: user_name。Pythonやデータベースのカラム名の標準。
  • kebab-case — 単語をハイフンでつなぐ: user-name。URLではアンダースコアがあまり使われないため、URL・CSSクラス・HTML属性の標準。

単なる見た目の問題ではない理由

「ユーザー名」のような日本語の単語をそのままidentifierに使うことはほぼなく、多くの現場ではuserNameのように英語やローマ字に置き換えてからcamelCase化します。つまりケース変換は日本語そのものにではなく、日本語の概念を英語やローマ字表記に翻訳した後の識別子に対して行われる作業だという点が、他のラテン文字圏の言語と大きく異なります。

この変換が必要な理由

  • JSON APIのフィールド(通常camelCase)をデータベースのカラム名(通常snake_case)にマッピングする。
  • 異なる規則を持つ言語間でコードを移植する際に変数名をリネームする。
  • ローマ字化したタイトルのテキストからURLやCSSクラスに適した名前を生成する。

略語の曖昧さ

userID や XMLParser のような識別子は、変換ツールに「略語を1つの単語として扱うか、個々の文字に分割するか」という選択を迫ります。ツールによってこの扱いは異なります — このツールは大文字が連続する部分を1つの単語のまとまりとして認識します(XMLParser → XML + Parser)が、その名前がそのままプロダクションコードに使われる場合は、結果を手動で確認することをおすすめします。

ツールを試す