スネークケース

スネークケース(snake_case)とは、単語間の区切りをスペースの代わりにアンダースコア(_)を使い、全て小文字で記述する命名規則である。変数名やサブルーチン名、ファイル名など、コンピュータ業界で一般的に使用される。ある研究によると「読者はキャメルケースよりもスネークケースの値(value)をより早く認識できることがわかった」としている。しかし、その読者は主にアンダースコアスタイルで訓練されていたため、どちらが優れているかは実際の所は定かではない。

 歴史 
単語の区切り文字としてアンダースコアが使用されるようになったのは、1960年代後半にまで遡る。これは特にC言語に関連しており、『The C Programming Language』(1978)にも見られるスタイルで、「パスカルケース」(キャメルケースの一種) と対比されている。ただし、このスタイルには従来、特定の名前は付いていなかった。2001年にリリースされたPythonコーディング規約の決定版「PEP8」では、単に「lower_case_with_underscores」と呼ばれていた。

「snake_case」という用語の初出は、2004年のUsenet内のRubyコミュニティで、Gavin Kistner が以下のようなコメントにおいて使用した。

しかし、元IntelエンジニアのJack Dahlgrenによると、2002 年にIntel社内で (そしておそらくはMicrosoftエンジニアとの会話の中で)この用語を使用していたとのこと。ひょっとすると、この用語は複数のコミュニティにおいて独自に生み出されたのかもしれない。

、複数の単語からなる識別子を区切り文字で区切るような命名規則の名前は標準化されていないが、リスプケース（lisp-case）、ケバブケース（kebab-case）、スクリーミングスネークケース（SCREAMING_SNAKE_CASE）など、一部の用語に関しては使用される機会は増えている。

 用例 
以前よりスネークケースを使用しているプログラミング言語のリスト

 ABAP
Ada - なお頭文字は大文字
C++ - Boost C++ライブラリ
C - 標準ライブラリの一部の型名には使用されるが、関数名には使用されない。
Eiffel - クラスと特性（フィーチャー）名
Elixir - アトム、変数、関数名
Erlang - 関数名
GDScript - 変数名と関数名
Java - static final定数と列挙型に SCREAMING_SNAKE_CASE を使用する
Kotlin - 定数に SCREAMING_SNAKE_CASE を使用 
Magik
OCaml - 値、型、モジュール名
Perl - レキシカル変数とサブルーチン
Oracle SQL and PL/SQL -  for all unquoted identifiers (tables, columns, indexes, constraints, PL/SQL variables, constants, procedures/functions, triggers,...), although not official by Oracle itself, still recommended by the majority of known "influencers" and used throughout the official Oracle documentation
All unquoted snake_case identifiers are actually internally represented as SCREAMING_SNAKE_CASE identifiers.
Prolog - for both atoms (predicate names, function names, and constants) and variables
Python - for variable names, function names, method names, and module or package (i.e. file) names
PHP - uses SCREAMING_SNAKE_CASE for class constants
R - for variable names, function names, and argument names, especially in the tidyverse style
Ruby - for variable and method names
Rust - for variable names, function names, method names, module names, and macros
Tcl
Terraform - for resources and variables

 関連項目 
 キャメルケース - JavaとC#で一般的な命名規則
 ケバブケース - LISPで一般的な命名規則
 命名規則

 参照 

 外部リンク 
 Snake case converter

Category:キャピタライゼーション
Category:命名規則
Category:タイポグラフィ