変数名、定数名、関数名、プロパティ名、メソッド名など、プログラミングをする上で必要になる命名規則についてまとめてみました。
目次
スネークケース
スネークケースでは、文字は全て小文字にします。複合語の単語と単語の間はアンダースコア (アンダーバー) 「 _ 」で結合します。
(例)
snake_case
mb_substr
is_numeric
mst_customer
tbl_order
PHP や Python では変数名、関数名としてスネークケースが採用されています。
データベースのオブジェクト名などにも使用されます。
名前の由来は、蛇のように見えるところからきているそうです。
コンスタントケース
コンスタントケースでは、文字は全て大文字にします。スネークケースと同様に、複合語の単語と単語の間はアンダースコア「 _ 」で結合します。
(例)
CONSTANT_CASE
CONST_VALUE
POSITIVE_INFINITY
TBL_ORDER
MST_PRODUCT
定数、グローバル変数などの特殊な変数や、データベースのオブジェクト名などに使用されます。
アッパースネークケース、アッパーケース等の呼び方もされるそうです。
キャメルケース
キャメルケースは、複合語の最初の単語は小文字から始めて、それに続く単語は大文字から始めます。
(例)
camelCase
variableName
ignoreCase
comparisonType
startIndex
C#の変数名、パラメーター名、Javaのメソッド名、JavaScriptの関数名などに使用されます。
名前の由来は、単語の先頭が大文字になることで、ラクダのこぶのように見えることからきているそうです。
パスカルケース
キャメルケースでは最初の単語を小文字から始めますが、パスカルケースでは大文字で始めます。複合語の続く単語を大文字から始めるところは、キャメルケースと同じです。
(例)
PascalCase
TextBox
WriteLine
ProductCategory
SalesOrderDetail
C#、Java等のクラス名として使われています。
C#ではプロパティ名やメソッド名もパスカルケースが採用されています。
また、データベースのオブジェクト名などにも使用されます。
以前は定数といえばコンスタントケースを使用されることが多かったですが、最近では定数にパスカルケースが使用されることも多くなってきているようです。
名前の由来は、プログラミング言語のPascalで使用されていたことからきているそうです。
パスカルケースは、アッパーキャメルケースと呼ばれることもあります。
アッパーキャメルケースが使用される場合は、通常のキャメルケースを、ローワーキャメルケースと呼ばれることもあります。
チェインケース
チェインケースは、複合語の単語と単語の間をハイフン「 – 」で結合します。
(例)
chain-case
text-align
kebab-case
Get-Item
Train-Case
プログラミング言語で使われることは少なく、HTML や CSS のプロパティ名で主に使用されます。
HTML の id や、CSS の クラス名などに使われることが多いです。
Vue.js の prop 名を属性として使用するときにも使用されます。
名前の由来は、単語をチェーン (鎖) でつないでいるように見えることからきているそうです。
チェインケースは、ケバブケースとも呼ばれます。ハイフンで結合した状態が、串刺し料理のケバブのように見えることに由来しているそうです。
複合語の各単語の先頭の文字が大文字の場合は、特にトレインケースと呼ばれることもあります。
命名規則一覧表
名前 | 記載例 | 結合 | 別名 |
---|---|---|---|
スネークケース | snake_case | アンダースコア | |
コンスタントケース | CONSTANT_CASE | アンダースコア | アッパースネークケース |
キャメルケース | camelCase | 大文字 |
ローワーキャメルケース バイキャピタライゼーション インターキャプス ミックストケース |
パスカルケース | PascalCase | 大文字 | アッパーキャメルケース |
チェインケース | chain-case | ハイフン |
ケバブケース トレインケース スパイナルケース リスプケース |
プログラムでの変換サンプルコード
以下では、比較的使われることが多い、キャメルケースとスネークケース間での変換のプログラムを中心に、C# と JavaScript で記述した場合のサンプルを記載しています。
C# での変換サンプル
C# では System.Text.RegularExpressions.Regex クラスを使用して正規表現で変換を行っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
/// <summary> /// スネークケースからキャメルケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <param name="upper">単語の先頭を大文字にするかどうか</param> /// <returns>キャメルケース</returns> public string SnakeToCamelCase(string str, bool upper = false) { str = System.Text.RegularExpressions.Regex.Replace( str.ToLower(), @"_\w", match => match.Value.ToUpper().Replace("_", string.Empty)); if (upper) { str = System.Text.RegularExpressions.Regex.Replace( str, @"^\w", match => match.Value.ToUpper()); } return str; } /// <summary> /// スネークケースからパスカルケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <returns>パスカルケース</returns> public string SnakeToToPascalCase(string str) { // アッパーキャメルケースを返す。 return SnakeToCamelCase(str, true); } /// <summary> /// キャメルケースからスネークケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <param name="upper">大文字にするかどうか</param> /// <returns>スネークケース</returns> public string CamelToSnakeCase(string str, bool upper = false) { str = System.Text.RegularExpressions.Regex.Replace( str, @"[a-z][A-Z]", "$1_$2") .ToLower(); if (upper) { str = str.ToUpper(); } return str; } /// <summary> /// キャメルケースからコンスタントケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <returns>コンスタントケース</returns> public string CamelToConstantCase(string str) { // アッパースネークケースを返す。 return CamelToSnakeCase(str, true); } /// <summary> /// キャメルケースからチェインケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <param name="upper">単語の先頭を大文字にするかどうか</param> /// <returns>チェインケース</returns> public string CamelToChainCase(string str, bool upper) { return System.Text.RegularExpressions.Regex.Replace( str, @"[a-z][A-Z]", "$1-$2") .ToLower(); if (upper) { str = System.Text.RegularExpressions.Regex.Replace( str, @"(^\w|_\w)", match => match.Value.ToUpper()); } return str; } /// <summary> /// キャメルケースからケバブケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <returns>ケバブケース</returns> public string CamelToKebabCase(string str) { return CamelToChainCase(str, false); } /// <summary> /// キャメルケースからトレインケースに変換する。 /// </summary> /// <param name="str">変換する文字列</param> /// <returns>トレインケース</returns> public string CamelToTrainCase(string str) { return CamelToChainCase(str, true); } |
JavaScript での変換サンプル
JavaScript でも C# と同様に正規表現で変換を行っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
/** * スネークケースからキャメルケースに変換する。 * @param {String} str 変換する文字列 * @param {Boolean} upper 単語の先頭を大文字にするかどうか * @returns {String} キャメルケース */ function snakeToCamelCase(str, upper) { str = str.toLowerCase(); str = str.replace(/_\w/g, function (match) { return match.toUpperCase().replace('_', ''); }); if (upper) { str = str.replace(/^\w/, function (match) { return match.toUpperCase(); }); } return str; } /** * スネークケースからパスカルケースに変換する。 * @param {String} str 変換する文字列 * @returns {String} パスカルケース */ function snakeToPascalCase(str) { return snakeToCamelCase(str, true); } /** * キャメルケースからスネークケースに変換する。 * @param {String} str 変換する文字列 * @param {Boolean} upper 大文字にするかどうか * @returns {String} スネークケース */ function camelToSnakeCase(str, upper) { str = str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase(); if (upper) { str = str.toUpperCase(); } return str; } /** * キャメルケースからコンスタントケースに変換する。 * @param {String} str 変換する文字列 * @returns {String} コンスタントケース */ function camelToConstantCase(str) { return camelToSnakeCase(str, true); } /** * キャメルケースからチェインケースに変換する。 * @param {String} str 変換する文字列 * @param {Boolean} upper 単語の先頭を大文字にするかどうか * @returns {String} チェインケース */ function camelToChainCase(str, upper) { str = str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); if (upper) { str = str.replace(/(^\w|\-\w)/g, function (match) { return match.toUpperCase(); }); } return str; } /** * キャメルケースからケバブケースに変換する。 * @param {String} str 変換する文字列 * @returns {String} ケバブケース */ function camelToKebabCase(str) { return camelToChainCase(str, false); } /** * キャメルケースからトレインケースに変換する。 * @param {String} str 変換する文字列 * @returns {String} トレインケース */ function camelToTrainCase(str) { return camelToChainCase(str, true); } |