命名規則・記法・変換いろいろ

2019年12月19日

先日配信されていたQuizKnockさんの動画内に、

英単語で・・・YouTubeやQuizKnockのように単語の間のスペースをつめる代わりに大文字で表記する手法を何ケースという?

というクイズがあり、わたしにしては珍しく「あ、アッパーキャメルケース(upper camel case)だ(動画内の選択肢としては、らくだでOK)」と即答できたので、ちょっと嬉しくなりました。

ちなみに動画はこちらです。

プログラム書く方であれば、キャメルケース (camel case) は有名な記法の一つなので、わかる方も多いのではないかと思いますが、はてさて、他にもどんな記法があるのだろう?というのをまとめておこうと思いました。

キャメルケース(camel case)

複合語の各要素の先頭の文字を大文字にしたものをキャメルケース(camel case)と呼びます。(例:camelCase、CamelCase)

その中でもさらに、

一文字目が大文字のものをアッパーキャメルケース(upper camel case)もしくはパスカルケース(Pascal case)と呼び、

一文字目が小文字のものをローワーキャメルケース(lower camel case)と呼びます。

クラス名でアッパーキャメルケース(upper camel case)が使われることが多いですよね。

関数名・メソッド名もアッパーキャメルケース(upper camel case)もしくはローワーキャメルケース(lower camel case)がよく使われています。

とにかくよく見る便利な記法ですね。

スネークケース(snake case)、アンダースコア記法

複合語の各要素をアンダースコアでつないだものをスネークケース(snake case)と呼びます。(例:snake_case)

データベースのテーブル名でよく使われていますね。

また、関数名・メソッド名と見分けるために変数名・プロパティ名はスネークケース(snake case)で、というのもよくあるパターンですね。

とにかくよく見る便利な記法ですね。(2回目)

ケバブケース(kebab case)、チェーンケース(chain case)

複合語の各要素をハイフンでつないだものをケバブケース(kebab case)と呼びます。(例:kebab-case)

HTML,CSS界隈でよく使われていますね。

プログラム言語内ではハイフンは計算記号のマイナス扱いになってしまったりするので、このケバブケース(kebab case)はお目にかかることがほぼ無いのですが、

HTMLのclass名や、URLではよく見ます。
URLではスネークケース(snake case)よりケバブケース(kebab case)が推奨されていますね。

PHPでの各種変換

例えばモデルクラス名をアッパーキャメルケース(upper camel case)で、対応するテーブル名がスネークケース(snake case)というルールの場合に、クラス名から自動的にテーブル名を取り出したいと言うようなことがあります。

そんなとき用のメモです。

キャメルケースからスネークケースに変換

function camel2Snake($str)
{
	return ltrim(strtolower(preg_replace('/[A-Z]/', '_\0', $str)), '_');
}

スネークケースからキャメルケースに変換

function snake2Camel($str)
{
	return lcfirst(strtr(ucwords(strtr($str, array('_' => ' '))), array(' ' => '')));
}

キャメルケースからケバブケースに変換

function camel2Kebab($str)
{
    $str = ltrim(strtolower(preg_replace('/[A-Z]/', '-\0', $str)), '-');
    return $str;
}

バブケースからキャメルケースに変換

function kebab2Camel($str)
{
    return lcfirst(strtr(ucwords(strtr($str, array('-' => ' '))), array(' ' => '')));
}