ローワーキャメルケース(英: lower camel case)[注釈 1]は、ソフトウェア開発において広く利用される命名規則の一つである。
最初の単語の頭文字を小文字で表記し、続く各単語の頭文字を大文字で表記し、単語間にスペース
やアンダースコア_
を用いずに連結する形式を指す(例:lowerCamelCase)。この命名規則は、可読性と一貫性を向上させる目的で用いられることが多い[8][9][10]。キャメルケース(英: camel case)と呼ばれることも多い。.NETのガイドライン[11]では、先頭の語も含めて各単語の頭文字を大文字にするスタイルをパスカルケース(アッパーキャメルケース)、先頭の語のみ頭文字を小文字にするスタイルをキャメルケース(ローワーキャメルケース)としており、プログラミングの文脈でキャメルケースといえば後者のスタイルを指すことが多いが、場合によってはどちらもキャメルケースと呼ばれることがある。これらを厳密に区別するために「ローワーキャメルケース」という語が用いられる[注釈 2]。先述のように「キャメルケース」は厳密には.NETの文脈で使用されるものであるため、より広範な文脈では、同じスタイルでも「ローワーキャメルケース」を使用する。
ローワーキャメルケースは、特にオブジェクト指向プログラミング言語においてメソッド名やプロパティ名(変数名)などに用いられることが一般的である[9][10][20][21]。例えば、「customerAccount」や「employeeRecord」のように、最初の単語の頭文字を小文字で始め、続く各単語の頭文字を大文字で始めることで、識別子の構造を直感的に理解しやすくなる。
この命名規則の利用は、コードの可読性やメンテナンス性を高めるための重要な手法の一つであり、特に大規模なシステム開発において、その効果が顕著である[22][23]。さらに、ローワーキャメルケースは、他の命名規則(例:スネークケース、ケバブケース)と組み合わせて使用されることもあるが、その際には一貫性を保つことが重要である。
ローワーキャメルケースは、英語圏を中心に広く普及しているが、非英語圏においても、その利便性から多くのプログラマーに支持されている[9][24][25]。本ページでは、ローワーキャメルケースの歴史、利点、適用例について詳細に解説する。
歴史
歴史については、「アッパーキャメルケース」の「歴史」項目で説明されている。
ローワーキャメルケースについて、歴史という点でアッパーキャメルケースの歴史と比較して特筆すべき点はないため、このページでは省略する。
利点
以下の点について以外は「アッパーキャメルケース」の「利点」項目で説明されている。
ローワーキャメルケースについて、利点という点でアッパーキャメルケースの利点と比較して以下の点について以外に特筆すべき点はないため、このページでは省略する。
言語間の互換性
ローワーキャメルケースは、複数のプログラミング言語で広く採用されている[9][26][27][28]ため、異なる言語間でのコードの移植性が向上する。
例えば、Java、JavaScript、Pythonなど、様々な言語でローワーキャメルケースが標準的に用いられているが、具体的には、JavaScriptではメソッド名やプロパティ名にローワーキャメルケースが多用される一方、Javaではメソッド名に主に使用されている。異なる言語での開発プロジェクト間でも命名規則の違いによる混乱を避けることができる。特に、マルチプラットフォーム開発やマイクロサービスアーキテクチャにおいて、その利点は顕著である。
適用例
オブジェクト指向プログラミングにおけるメソッド名とプロパティ名
ローワーキャメルケースは、オブジェクト指向プログラミング(OOP)においてメソッド名やプロパティ名の命名に広く利用されている。例えば、JavaやJavaScriptといった言語では、メソッド名やプロパティ名をローワーキャメルケースで命名することが標準となっている。
以下に具体的な例(JavaScript)を示す。
let customerAccount = {};
function getEmployeeDetails() {
// 実装
}
この例では、「customerAccount
」や「getEmployeeDetails
」という識別子がローワーキャメルケースで命名されており、最初の単語の頭文字が小文字で、続く単語の頭文字が大文字で表記されている。これにより、識別子の名前が一目で理解しやすくなり、他の識別子との区別が明確になる。
メソッド名やプロパティ名
ローワーキャメルケースは、メソッド名やプロパティ名にも適用されることが多い。
特に、JavaScriptやPythonなどの言語では、プロパティ名をローワーキャメルケースで命名することが推奨されている。
以下にその例(Python)を示す。
class Person:
def __init__(self, first_name, last_name, employee_id):
self.firstName = first_name
self.lastName = last_name
self.employeeId = employee_id
def display_employee_info(self):
print(f"{self.firstName} {self.lastName}")
person = Person("John", "Doe", 1234)
person.display_employee_info()
この例では、「firstName
」「lastName
」「employeeId
」というプロパティ名がローワーキャメルケースで命名されており、視覚的に識別しやすくなっている。
デザインパターンの実装
デザインパターンの実装においても、ローワーキャメルケースが利用されることが一般的である。
例えば、シングルトンパターンやファクトリーパターンなどのメソッド名やプロパティ名にローワーキャメルケースが適用される。
以下にシングルトンパターンの実装例(Python)を示す。
class Singleton:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super(Singleton, cls).__new__(cls)
return cls._instance
def showInstanceDetails(self):
print(f"Singleton instance: {id(self)}")
singleton = Singleton()
singleton.showInstanceDetails()
この例では、「showInstanceDetails
」というメソッド名がローワーキャメルケースで命名されており、役割が明確に示されている。
Web開発における命名規則
Web開発においても、ローワーキャメルケースが広く利用されている。
特に、JavaScriptやTypeScriptでは、メソッド名やプロパティ名にローワーキャメルケースが適用されることが多い。
以下にJavaScriptのクラス定義の例を示す。
class UserProfile {
constructor(userName, userEmail) {
this.userName = userName;
this.userEmail = userEmail;
}
getUserInfo() {
return `${this.userName} (${this.userEmail})`;
}
}
この例では、「getUserInfo
」や「userName
」というメソッド名およびプロパティ名がローワーキャメルケースで命名されており、コードの可読性と一貫性が保たれている。
フレームワークやライブラリの命名規則
ローワーキャメルケースは、様々なフレームワークやライブラリの命名規則にも取り入れられている。
例えば、AngularやReactなどのフロントエンドフレームワークでは、メソッド名やプロパティ名にローワーキャメルケースが使用される。
以下にAngularを用いたTypeScriptの例を示す。
class UserService {
private userName: string;
private userEmail: string;
constructor(userName: string, userEmail: string) {
this.userName = userName;
this.userEmail = userEmail;
}
getUserInfo(): string {
return `${this.userName} (${this.userEmail})`;
}
}
この例では、「getUserInfo
」や「userName
」というメソッド名およびプロパティ名がローワーキャメルケースで命名されている。Angularの命名規則に従うことで、コードの一貫性と理解のしやすさが保たれる。
API設計における命名規則
API設計においても、ローワーキャメルケースは重要な役割を果たす。
RESTful APIのエンドポイントやGraphQLのスキーマ定義において、ローワーキャメルケースを使用することで、エンドユーザーにとって理解しやすいインターフェースを提供することができる。
以下にGraphQLスキーマの例を示す。
type Query {
getUserInfo(userId: ID!): User
}
type User {
userId: ID!
userName: String!
userEmail: String!
}
この例では、「getUserInfo
」や「userName
」というフィールド名がローワーキャメルケースで命名されており、スキーマの構造が直感的に理解できる。
教育・学習資料における使用例
教育や学習資料においても、ローワーキャメルケースの使用は推奨されている。
特に、プログラミング入門書やオンライン教材では、ローワーキャメルケースを使用することで、初心者に対して一貫した命名規則を教えることができる。
以下にJavaScriptの入門書の例を示す。
class Student {
constructor(studentName, studentId) {
this.studentName = studentName;
this.studentId = studentId;
}
displayStudentInfo() {
console.log(`Name: ${this.studentName}, ID: ${this.studentId}`);
}
}
この例では、「displayStudentInfo
」や「studentName
」というメソッド名およびプロパティ名がローワーキャメルケースで命名されている。これにより、学習者は命名規則の重要性を理解しやすくなる。
商標など
商品名や商標としてもローワーキャメルケースが採用されることがある。
iPhone[29]、bitFlyer[30]など。このように、ローワーキャメルケースは特別にプログラミングにおいてのみ使用されるというものでもないが、この用語を強いて使うのはプログラミングの分野であることが多い[31][32]。
命名規則一覧
名称 | 英語表記 | 説明 | 表記例 |
---|---|---|---|
スネークケース | snake case | 単語間をアンダースコア(_ )で繋ぐ形式。
|
example_variable
|
スクリーミングスネークケース | screaming snake case | 単語間をアンダースコア(_ )で繋ぎ、全て大文字にする形式。「アッパースネークケース」(upper snake case) や「コンスタントケース」(constant case) とも呼ばれる[33]。
|
EXAMPLE_VARIABLE
|
キャメルケース | camel case | 各単語の頭文字を大文字にし、単語を連結する形式(最初の単語のみ頭文字が小文字)。.NETの文脈で使用。 | exampleVariable
|
ローワーキャメルケース | lower camel case | キャメルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | exampleVariable
|
パスカルケース | Pascal case | 各単語の頭文字を大文字にし、単語を連結する形式(キャメルケースと似ているが、最初の単語の頭文字も大文字)。.NETの文脈で使用。 | ExampleVariable
|
アッパーキャメルケース | upper camel case | パスカルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | ExampleVariable
|
ケバブケース | kebab case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を小文字にする形式。
「チェインケース/チェーンケース」(chain case) とも呼ばれる[33]。 |
example-variable
|
トレインケース | train case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を大文字にする形式。
|
Example-Variable
|
ドットケース | dot case | 単語間をドット(. )で繋ぐ形式。
|
example.variable
|
ローワーケース[独自研究?] | lower case | 全て小文字で単語を連結する形式。 | examplevariable
|
アッパーケース[独自研究?] | upper case | 全て大文字で単語を連結する形式。 | EXAMPLEVARIABLE
|
脚注
注釈
出典
- ^ “大辞林第四版”. 三省堂. 2024年7月1日閲覧。
- ^ “大辞泉”. 大辞泉. 2024年7月1日閲覧。
- ^ “日本語シソーラス 第2版 類語検索辞典”. 大修館書店. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. コトバンク. 2024年7月1日閲覧。
- ^ “キャメルケース”. IT用語辞典. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. goo辞書. 2024年7月1日閲覧。
- ^ “キャメルケース”. シマウマ用語集. 2024年7月1日閲覧。
- ^ “Programming Naming Conventions – Camel, Snake, Kebab, and Pascal Case Explained” (英語). freeCodeCamp.org (2022年8月22日). 2024年6月28日閲覧。
- ^ a b c d TW-Redaktion (2023年9月8日). “Was ist CamelCase? Die Unterschiede zwischen camelCase und PascalCase Test 2024 [Juni] • Techwatch.de” (ドイツ語). 2024年6月28日閲覧。
- ^ a b “Camel Case vs. Snake Case vs. Pascal Case — Naming Conventions | Khalil Stemmler” (英語). khalilstemmler.com. 2024年6月28日閲覧。
- ^ KrzysztofCwalina (2022年10月4日). “Naming Guidelines - Framework Design Guidelines” (英語). learn.microsoft.com. 2024年6月28日閲覧。
- ^ “NamingConventions.UpperCamelCase (DataStax Enterprise Java Driver - Binary distribution 1.9.0 API)”. docs.datastax.com. 2024年7月10日閲覧。
- ^ “XML Standards and Conventions”. docs.oracle.com. 2024年7月10日閲覧。
- ^ “Style Guide | SoftConst2x | edX”. courses.edx.org. 2024年7月10日閲覧。
- ^ “Google Java Style Guide”. google.github.io. 2024年7月10日閲覧。
- ^ “clang-tidy - objc-property-declaration — Extra Clang Tools 7 documentation”. releases.llvm.org. 2024年7月10日閲覧。
- ^ “clang-r450784e/include/clang-tidy/objc/PropertyDeclarationCheck.h - platform//prebuilts/clang/host/linux-x86 - Git at Google”. android.googlesource.com. 2024年7月10日閲覧。
- ^ “Common Definition-Wallet Server Callback Notification APIs-REST-Wallet Kit | HUAWEI Developers”. HUAWEI. 2024年7月10日閲覧。
- ^ “Rheinwerk Computing :: Apps programmieren für iPhone und iPad - 2 Die Reise nach iOS”. openbook.rheinwerk-verlag.de. 2024年7月10日閲覧。
- ^ Wang, Shangwen; Wen, Ming; Lin, Bo; Liu, Yepang; Bissyandé, Tegawendé F.; Mao, Xiaoguang (2023-09-29). “Pre-implementation Method Name Prediction for Object-oriented Programming”. ACM Trans. Softw. Eng. Methodol. 32 (6): 157:1–157:35. doi:10.1145/3597203. ISSN 1049-331X .
- ^ “CS 1110: Notes on Style”. www.cs.cornell.edu. 2024年6月28日閲覧。
- ^ “Python Naming Conventions: Pythonic Style Guide - Linux Dedicated Server Blog” (英語). ioflood.com (2023年9月13日). 2024年6月28日閲覧。
- ^ “Strategies for Successful Collaborative Coding Projects” (英語). moldstud.com. moldstud.com (2024年2月8日). 2024年6月28日閲覧。
- ^ “Programming Practice Python 2023”. Kyoto University. 2024年6月28日閲覧。
- ^ Pandey, Maulishree; Oney, Steve; Begel, Andrew (2024-05-11). “Towards Inclusive Source Code Readability Based on the Preferences of Programmers with Visual Impairments”. Proceedings of the CHI Conference on Human Factors in Computing Systems (New York, NY, USA: Association for Computing Machinery): 1–18. doi:10.1145/3613904.3642512. ISBN 979-8-4007-0330-0 .
- ^ “What is CamelCase?”. www.lenovo.com. 2024年6月28日閲覧。
- ^ “Snake Case VS Camel Case VS Pascal Case VS Kebab Case – What's the Difference Between Casings?” (英語). freeCodeCamp.org (2022年11月29日). 2024年6月28日閲覧。
- ^ “Camel case - MDN Web Docs Glossary: Definitions of Web-related terms | MDN” (英語). developer.mozilla.org (2024年5月7日). 2024年6月28日閲覧。
- ^ “iPhone”. Apple(日本). 2024年6月29日閲覧。
- ^ “bitFlyer”. bitFlyer. 2024年6月30日閲覧。
- ^ “キャメルケースとは 意味/解説 - シマウマ用語集”. makitani.net (2022年3月4日). 2024年6月29日閲覧。
- ^ “ローワーキャメルケース(LCC)とは?プログラミングで使われる命名規則の基本概念をわかりやすく解説 | THE SIMPLE”. the-simple.jp (2023年5月15日). 2024年6月29日閲覧。
- ^ a b “スネークケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年7月7日閲覧。