スネークケース

スネークケース(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

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