キャメルケース
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/CamelCase_new.svg/240px-CamelCase_new.svg.png)
キャメルケース(英: camel case)とは、英語の複合語やフレーズ、文をひと綴りとして、各単語の頭文字を大文字で表現することを言う[1][2]。キャメルケースという命名は、全体を俯瞰すると大文字の部分が「ラクダのこぶ」のように見えることに由来する[3][4][5]。例えば、「camel case」をキャメルケースで表現すると、「camelCase」または「CamelCase」となる。
キャメルケースという語はプログラミングの文脈で最も一般的に使用されている[1]が、この語は他の分野においても広く用いられている。例えば、デジタルメディアやマーケティングにおいては、ウェブサイトのURLやドメイン名の可読性を向上させるためにキャメルケースが使用されることがある[6][7]。また、ドキュメントやガイドラインにおいては、セクション名や章タイトルの視認性を高める目的で採用されることもある[8][9]。さらに、ブランド名や製品名においても、一貫性を保ちつつ視覚的に目立つ名前を作成するためにキャメルケースが用いられる[10][11]。以上のように、キャメルケースはその起源と使用目的から広範な応用が可能であり、多岐に渡る分野でその有用性が認識されている。
ブラッド・エイブラムスは、.NET Frameworkの開発において重要な役割を果たしたマイクロソフトの元エンジニア兼プログラムマネージャーである。彼は著書『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』の中で、.NET Frameworkの初期設計の際、名付けスタイルの議論を円滑に進めるための用語を作成したと述べている。このとき、各単語の頭文字を大文字にするスタイルは「PascalCasing」と命名され、先頭の語のみ頭文字を小文字にするスタイルは「camelCasing」と命名された[12]。「PascalCasing」という命名に関しては、Turbo Pascalの設計者であり、.NET設計チームの主要なメンバーでもあったアンダース・ヘルスバーグが、これはプログラミング言語Pascalによって普及したスタイルであるとして「PascalCasing」という用語を提案した[13][14]。これらの用語の選定にあたって、特に異論は出なかったとされる[15][16]。「PascalCasing」はパスカルケース(英: Pascal case)と表記されることもある。
パスカルケースは別名、バイキャピタライゼーション(英: bicapitalization / bi-capitalization / BiCapitalization)[17][18]、インターキャプス(英: InterCaps / internal capitalization)[19][18]とも呼ばれることがある。頭文字に小文字と大文字を混在させるケースはミックストケース(英: mixed-case)[20]とも呼ばれる。一部、日本語訳してキャメル記法(きほう)[21]、キャメル方式(ほうしき)[22]と表現されることもある。
キャメルケースの種類[編集]
.NETのガイドライン[23][注釈 1]では、先頭の語も含めて各構成語の最初の文字を大文字にするスタイルをパスカルケース、先頭の語のみ最初の文字を小文字にするスタイルをキャメルケースとしており、プログラミングの文脈でキャメルケースと言えば後者のスタイルを指すことが多いが、場合によってはどちらもキャメルケースと呼ばれることがある。これらを厳密に区別するために、「アッパーキャメルケース」や「ローワーキャメルケース[注釈 2]」といった用語が使われることもある[31][32]。厳密には「パスカルケース」および「キャメルケース」は.NETの文脈で使われるものであるため、他のプログラミング言語も含め、より広範な文脈では「アッパーキャメルケース」「ローワーキャメルケース」を使う[33]。それぞれの特徴については「アッパーキャメルケース」「ローワーキャメルケース」を参照されたい。
名称 | 表記例 | 備考 |
---|---|---|
アッパーキャメルケース(英: upper camel case: UCC)、またはパスカルケース | GetInputReader
|
複合語の先頭を、大文字で書き始める。 |
ローワーキャメルケース(英: lower camel case: LCC)、または単にキャメルケース | getInputReader
|
複合語の先頭を、小文字で書き始める。 |
なお、英語で大文字はupper case、小文字はlower caseであるが、これらは活版印刷の名残である[34][35]。
.NET FrameworkのSystem.Xml.Serialization.CodeIdentifier
クラスには、XMLの要素や属性の名前から取得されたメソッド引数などのようなコードの実体から、パスカルケース(アッパーキャメルケース)の文字列を生成するメソッドMakePascal()
[36]と、キャメルケース(ローワーキャメルケース)の文字列を生成するメソッドMakeCamel()
[37]が当初から用意されていた。
用途[編集]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/CamelCase.svg/250px-CamelCase.svg.png)
コンピュータプログラミングにおいて、パスカルケース(アッパーキャメルケース)やキャメルケース(ローワーキャメルケース)が識別子の命名規則として用いられることがある[38][39]。
識別子とは、変数、サブルーチン、およびユーザー定義データ型などの構文要素を区別するために使用される名前を指す[40][41]。多くのプログラミング言語においては、スペースがトークン(字句)の区切りとして機能するため、識別子にスペースを含めることは許されない[42][43]。これにより、識別子には一続きの文字列が必要となる。従って、複数の単語からなる識別子にはパスカルケース(アッパーキャメルケース)、キャメルケース(ローワーキャメルケース)、スネークケース、ケバブケース(チェインケース)といった命名規則が適用され、各単語の区切りを明示する。これらの命名規則は、コードの可読性および保守性を向上させ、プログラムの構造を明確にする役割を果たしている[44][45]。一般的な言語では、英数字のほかにアンダースコア_
を使うことができる[46][47][48]が、古いCOBOLのようにアンダースコアは使えず、代わりにハイフンマイナス-
を使うことができるという言語もある[49][50]。また、初期のコンピュータでは、容量などの制約から大文字・小文字を区別することができず、大文字のみが使える環境が主流だった[51][52][53]。そのため、BASICやPascalといった初期の言語では、大文字・小文字を区別しない仕様となっているものが多かった。C言語の場合、ANSI C(C89)規格では、保証される外部識別子名の長さは6文字まで、内部識別子名の長さは31文字までという互換性制約があった[54][55][注釈 3]。
識別子に使用可能な文字種や文字数に制限のある環境において、複合語をひとつのプログラム要素としたいときには「getinputreader
」や「GETINPUTREADER
」のように直接連結するしかない場合もある。しかし、直接連結してしまうと語の区切り(境界)を認識しにくく、可読性を欠いてしまう。アンダースコア_
やハイフンマイナス-
が使える環境ではそれらの文字を区切り文字に使って「get_input_reader
」や「GET-INPUT-READER
」などとする方法もあるが、文字数が増えてしまい、場合によっては処理系の制限に抵触してしまう。のちに大文字・小文字を区別できる環境が登場し主流となったが、後続の語の頭文字を大文字とし、文字数の増大を抑制しつつ、語の区切りを認識しやすくする記法が考案された[注釈 4]。この記法はのちに「キャメルケース」や「パスカルケース」として用語が再定義されることになるが、そのような用語が定義される前からmixed caseなどの名前で呼ばれていた[58][注釈 5]。
Visual BasicはWindows APIやOLE/COMの影響を[59][60]、また.NET Frameworkや.NET言語(C#、VB.NETなど)はDelphi(Object Pascal)の影響を受けており[61][62]、メソッドの名前を大文字で始めるアッパーキャメルケースとなっているが[12][63]、Javaはメソッドの名前を小文字で始めるローワーキャメルケースとなっている[64]。ただし、いずれもユーザー定義型の名前は大文字で始めるアッパーキャメルケースである。
ファイルシステムにおいて、ファイルやディレクトリ(フォルダー)の命名にキャメルケースが使われることも多い[65][66]。特にコマンドラインシェルでファイルシステムを操作するとき、スペースが含まれている名前は問題を引き起こすことが多いため[67][68]、文字数の増大を抑制しつつ可読性を確保できるキャメルケースはこの点で有利である。ただし、オペレーティングシステムやファイルシステムなどの環境によっては、大文字・小文字が同一視されたり、全て大文字として扱われて区別できなかったりする場合もある[69][70]。
初期のウィキにおいて、キャメルケースを用いた語をリンクとするという方法が用いられていた[71][72]。現在では、例えばMediaWikiが「[[
」と「]]
」を用いてリンクを表しているように、キャメルケースによるリンクを用いない方法が多く用いられている。
元を正せば、キャメルケースは複合語から成る人名に多く使われてきた[要出典]。
キャメルケースとスペルチェック[編集]
キャメルケースの欠点として、綴りミスを自動検出するスペルチェッカーの利用が難しくなる[要出典]、ということが挙げられる。Microsoft Word[75]のような一般的なワードプロセッサソフトウェアでは、広く知られていて辞書データベースに登録されているような固有名詞を除き、キャメルケースのスペルチェックに対応しておらず[要出典]、スペルミスであると判定してしまう。ただし、自然言語の文章中に登場するキャメルケース(特にローワーキャメルケース)は、一般的にスペースやハイフンの不足などによる誤りであることが多いため、この動作は妥当であるとも言える[要出典]。
プログラミング時に用いられるコードエディターはテキストエディターの一種だが、コメント内や文字列リテラル内の文章だけでなく、識別子のスペルチェックにも対応しており[76][77]、また判定の容易なスネークケースやケバブケース(チェインケース)だけでなく、キャメルケースのスペルチェックにも対応しているものがある[78][79]。
命名規則一覧[編集]
![]() | この節には独自研究が含まれているおそれがあります。 |
名称 | 英語表記 | 説明 | 表記例 |
---|---|---|---|
スネークケース | snake case | 単語間をアンダースコア(_ )で繋ぐ形式。
|
example_variable
|
スクリーミングスネークケース | screaming snake case | 単語間をアンダースコア(_ )で繋ぎ、すべて大文字にする形式。「アッパースネークケース」(upper snake case) や「コンスタントケース」(constant case) とも呼ばれる[80]。
|
EXAMPLE_VARIABLE
|
キャメルケース | camel case | 各単語の頭文字を大文字にし、単語を連結する形式(最初の単語のみ頭文字が小文字)。.NETの文脈で使用。 | exampleVariable
|
ローワーキャメルケース | lower camel case | キャメルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | exampleVariable
|
パスカルケース | Pascal case | 各単語の頭文字を大文字にし、単語を連結する形式(キャメルケースと似ているが、最初の単語の頭文字も大文字)。.NETの文脈で使用。 | ExampleVariable
|
アッパーキャメルケース | upper camel case | パスカルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | ExampleVariable
|
ケバブケース | kebab case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を小文字にする形式。「チェインケース/チェーンケース」(chain case) とも呼ばれる[80]。
|
example-variable
|
トレインケース | train case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を大文字にする形式。
|
Example-Variable
|
ドットケース | dot case | 単語間をドット(. )で繋ぐ形式。
|
example.variable
|
ローワーケース[独自研究?] | lower case | すべて小文字で単語を連結する形式。 | examplevariable
|
アッパーケース[独自研究?] | upper case | すべて大文字で単語を連結する形式。 | EXAMPLEVARIABLE
|
脚注[編集]
注釈[編集]
- ^ このガイドラインページは『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition』からの抜粋であるが、Krzysztof CwalinaとBrad abramsはウェブページの直接の著者ではない。
- ^ 「ローワー」という読み仮名表記は、「大辞林第四版[24]」「大辞泉[25]」「日本語シソーラス第2版[26]」「コトバンク[27]」「IT用語辞典[28]」「goo辞書[29]」「シマウマ用語集[30]」など、様々な辞書で採用されている表記である。
- ^ 標準Cライブラリの関数名が暗号のように短く分かりづらいのも、K&R時代から続く初期の資源制約によるものである。
- ^ ただし、キャメルケースも可読性を損うとして嫌う人もいる。例えばC++の設計者ビャーネ・ストロヴストルップは、“I prefer to use underscores to separate words in an identifier (e.g, element_count) rather than alternatives, such as elementCount and ElementCount.”と述べている[56][57]。実際に、標準C++ライブラリには、
std::runtime_error
やstd::vector::push_back()
のように、アンダースコアを使った名前が頻出する。しかし彼は、言語組み込みのデータ型や標準ライブラリのデータ型との名前衝突を避けるため、ユーザー定義のデータ型の名前は先頭を大文字にすることを推奨してもいる。 - ^ このJavaのドキュメントはSunによって1999年に書かれた版であり、.NETが登場する前から「mixed case」という用語が使われていたことを意味している。
- ^ 「Mc」はゲール語で「息子」を意味する語であり、McDonald は「ドナルドの息子」という意味の複合語である。
出典[編集]
- ^ a b “キャメルケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年6月29日閲覧。
- ^ “camel case”. Cambridge Dictionary. 2024年6月29日閲覧。
- ^ “Camel case - MDN Web Docs Glossary: Definitions of Web-related terms | MDN” (英語). developer.mozilla.org (2024年5月7日). 2024年6月29日閲覧。
- ^ “camel case - Binnenmajuskel - New entry for LEO: English ⇔ German Forums - leo.org”. dict.leo.org. 2024年6月29日閲覧。
- ^ “What Is Camel Case? Meaning and Examples Explained” (英語). www.98thpercentile.com. 2024年6月29日閲覧。
- ^ Sams, Chris (2024年2月21日). “What Influence Will Capitalization In URLs Have On SEO In 2024?” (英語). JEMSU. 2024年6月29日閲覧。
- ^ “Editorial style update: Capital letters in websites, email addresses and hashtags” (英語). Brand Updates (2019年8月5日). 2024年6月29日閲覧。
- ^ “Guideline In Document Name Publication Section Is Written In Camelcase”. Nexedi. 2024年6月29日閲覧。
- ^ “Pandoc User’s Guide 日本語版 — 日本Pandocユーザ会”. pandoc-doc-ja.readthedocs.io. 2024年6月29日閲覧。
- ^ “Camel Case Vs Pascal Case Vs Snake Case: What's The Difference And Why Is It Important? - Dataconomy” (英語) (2023年11月3日). 2024年6月29日閲覧。
- ^ “The Art of Naming”. Zinzin. 2024年6月29日閲覧。
- ^ a b Capitalization Conventions - Framework Design Guidelines | Microsoft Learn
- ^ “The Private Life of a Public API”. www.moserware.com. 2024年6月29日閲覧。
- ^ “MICROSOFT ® .NET DEVELOPER”. Pearson Education. 2024年6月29日閲覧。
- ^ Krzysztof Cwalina; Brad Abrams (2008-10-22). Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (Second ed.). Addison-Wesley Professional. p. 38. ISBN 978-0321545619
- ^ クリストフ・ツヴァリナ、ブラッド・エイブラムス『.NETのクラスライブラリ設計』日経BP、2009年12月28日、32頁。ISBN 978-4-89100-676-1。
- ^ “bicapitalizationの意味・使い方・読み方 | Weblio英和辞書”. ejje.weblio.jp. 2024年6月29日閲覧。
- ^ a b Style Guide | Sui Documentation
- ^ “InterCaps - definition of InterCaps - synonyms, pronunciation, spelling from Free Dictionary”. freedictionary.org. 2024年6月29日閲覧。
- ^ “Converting Between Different Naming Conventions - Python Cookbook [Book]” (英語). www.oreilly.com. 2024年6月29日閲覧。
- ^ デジタル大辞泉. “キャメルケースとは? 意味や使い方”. コトバンク. 2024年6月29日閲覧。
- ^ “新人コーダーに知っておいて欲しい命名規則の考え方[画像・ID・class名]”. 株式会社クロノドライブ. 2024年6月29日閲覧。
- ^ “フレームワーク デザインのガイドライン”. learn.microsoft.com (2024年1月27日). 2024年6月29日閲覧。
- ^ “大辞林第四版”. 三省堂. 2024年7月1日閲覧。
- ^ “大辞泉”. 大辞泉. 2024年7月1日閲覧。
- ^ “日本語シソーラス 第2版 類語検索辞典”. 大修館書店. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. コトバンク. 2024年7月1日閲覧。
- ^ “キャメルケース”. IT用語辞典. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. goo辞書. 2024年7月1日閲覧。
- ^ “キャメルケース”. シマウマ用語集. 2024年7月1日閲覧。
- ^ “A Simple Approach to Optimized Text Compression's Performance”. IEEE. 2024年6月29日閲覧。
- ^ “Universal Utility Data Exchange (UUDEX) – Information Exchange Structures – Rev 1”. アメリカ合衆国エネルギー省. 2024年6月29日閲覧。
- ^ McConnell, Steve (1993) (英語). Code Complete: A Practical Handbook of Software Construction. Microsoft Press. ISBN 978-1-55615-484-3
- ^ Griffin, Dori (2021-12-30) (英語). Type Specimens: A Visual History of Typesetting and Printing. Bloomsbury Publishing. ISBN 978-1-350-11661-0
- ^ Wyatt, Christopher Scott; DeVoss, Dànielle Nicole (2017-09-01) (英語). Type Matters: The Rhetoricity of Letterforms. Parlor Press LLC. ISBN 978-1-60235-978-9
- ^ dotnet-bot. “CodeIdentifier.MakePascal(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年7月7日閲覧。
- ^ dotnet-bot. “CodeIdentifier.MakeCamel(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年7月7日閲覧。
- ^ “Programming Naming Conventions – Camel, Snake, Kebab, and Pascal Case Explained” (英語). freeCodeCamp.org (2022年8月22日). 2024年6月29日閲覧。
- ^ “Naming convention”. DNB Bank ASA. 2024年6月29日閲覧。
- ^ “User Defined Data Types in C++” (英語). GeeksforGeeks (2018年10月22日). 2024年6月29日閲覧。
- ^ KathleenDollard (2021年9月15日). “User-Defined Data Type - Visual Basic” (英語). learn.microsoft.com. 2024年6月29日閲覧。
- ^ “String Tokenization in C” (英語). GeeksforGeeks (2023年10月18日). 2024年6月29日閲覧。
- ^ “Tokens” (英語). www.ibm.com. 2024年6月29日閲覧。
- ^ Team, CodiumAI (2024年4月17日). “Mastering Coding Standards and Best Practices for Software Development” (英語). CodiumAI. 2024年6月29日閲覧。
- ^ Herka, Iwo (2022年2月2日). “Naming conventions in programming – a review of scientific literature — Makimo – Consultancy & Software Development Services” (英語). makimo.com. 2024年6月29日閲覧。
- ^ “Alphanumeric Characters: Uses and Examples” (英語). HowStuffWorks (2024年2月8日). 2024年6月29日閲覧。
- ^ “Underscores in Numeric Literals”. docs.oracle.com. 2024年6月29日閲覧。
- ^ “C Identifiers” (英語). GeeksforGeeks (2023年9月6日). 2024年6月29日閲覧。
- ^ “6.10 COBOLアプリケーション使用時の注意事項”. software.fujitsu.com. 2024年6月29日閲覧。
- ^ Wick, Amanda. “Research Guides: Archives and Special Collections on COBOL and the History of Programming Languages: Home” (英語). libguides.umn.edu. 2024年6月29日閲覧。
- ^ “Programming Language Statements Oddities: History and idiosyncrasies (or oddities)”. Gavilan College. 2024年6月29日閲覧。
- ^ “情報学概論Ⅰ 第4回”. www2.nagano.ac.jp. 2024年6月29日閲覧。
- ^ 古いコンピュータやOSで小文字ではなく大文字が使用されていた理由とは? - GIGAZINE
- ^ “Hewlett Packard Company Conformance Statement”. www.opengroup.org. 2024年6月29日閲覧。
- ^ C Identifiers | Microsoft Learn
- ^ Stroustrup: C++ Style and Technique FAQ
- ^ Stroustrup: C++ Style and Technique FAQ 日本語訳
- ^ Code Conventions for the Java Programming Language: 9. Naming Conventions
- ^ Petzold, Charles (2013-01-15) (英語). Programming Windows. Pearson Education. ISBN 978-0-7356-7172-0
- ^ “Inside COM”. Amazon. 2024年6月29日閲覧。
- ^ Hejlsberg, Anders; Torgersen, Mads; Wiltamuth, Scott; Golde, Peter (2008-10-08) (英語). The C# Programming Language. Pearson Education. ISBN 978-0-321-59225-5
- ^ Watkins, Damien; Hammond, Mark J.; Abrams, Brad (2003) (英語). Programming in the .NET Environment. Addison-Wesley Professional. ISBN 978-0-201-77018-6
- ^ “Method Naming · Programming Basics with C# - Free Coding Book with Video Lessons”. csharp-book.softuni.org. 2024年6月29日閲覧。
- ^ “Java Naming Conventions: PascalCase, camelCase, and more - CRS Info Solutions”. www.crsinfosolutions.com. 2024年6月29日閲覧。
- ^ “Naming files, folders and other things — The Turing Way”. book.the-turing-way.org. 2024年6月29日閲覧。
- ^ “File Naming Conventions | Data Management” (英語). datamanagement.hms.harvard.edu. 2024年6月29日閲覧。
- ^ McKay, Dave (2022年12月14日). “How to Deal With Spaces in Filenames on Linux” (英語). How-To Geek. 2024年6月29日閲覧。
- ^ “Dealing with spaces in file names in a shell script” (英語). www.unix.com. 2024年6月29日閲覧。
- ^ craigloewen-msft (2022年4月27日). “Case Sensitivity” (英語). learn.microsoft.com. 2024年6月29日閲覧。
- ^ “Case-sensitivity” (英語). help.hcltechsw.com. 2024年6月29日閲覧。
- ^ “PURR - Wiki: Help: Wiki Page Names”. purr.purdue.edu. 2024年6月29日閲覧。
- ^ “Wikis are good for knowlegde management”. arxiv.org. 2024年6月29日閲覧。
- ^ “SEO: What about spaces in URLs? | Combell” (英語) (2015年9月18日). 2024年6月29日閲覧。
- ^ “Increasing your site’s visibility to search engines” (英語). Squarespace Help Center (2023年7月10日). 2024年6月29日閲覧。
- ^ “Microsoft Word”. Microsoft. 2024年6月29日閲覧。
- ^ anandmeg (2023年5月24日). “スペル チェック機能の詳細 - Visual Studio (Windows)”. learn.microsoft.com. 2024年6月29日閲覧。
- ^ “Spell Checker | CodeRush | DevExpress Documentation”. docs.devexpress.com. 2024年6月29日閲覧。
- ^ Learn about the Spell Checker - Visual Studio (Windows) | Microsoft Learn
- ^ “Spell Checking | IntelliJ Platform Plugin SDK” (英語). IntelliJ Platform Plugin SDK Help. 2024年6月29日閲覧。
- ^ a b スネークケース(アンダースコア記法)とは - 意味をわかりやすく - IT用語辞典 e-Words
関連項目[編集]
- 命名規則
- ケース・センシティブ
- 大文字と小文字
- ハンガリアン記法
- クロノグラム - 特定の年代を表記するため、単語の中のローマ数字を大文字にする。