キャメルケース
キャメルケース(英: camel case)とは、英語の複合語やフレーズ、文をひと綴りとして、各単語の頭文字を大文字で表現する命名規則である[1][2]。キャメルケースという命名は、全体を俯瞰すると大文字の部分が「ラクダのこぶ」のように見えることに由来する[3][4][5]。例えば、「camel case」をキャメルケースで表現すると、「camelCase」または「CamelCase」となる。通常「キャメルケース」と呼ぶ場合は前者を指すが[注釈 1]、両者を厳密に区別するために前者を「ローワーキャメルケース[注釈 2]」、後者を「アッパーキャメルケース」と呼ぶ。
キャメルケースという語はプログラミングの文脈で最も一般的に使用されている[1]が、この語は他の分野においても広く用いられている。例えば、デジタルメディアやマーケティングにおいては、ウェブサイトのURLやドメイン名の可読性を向上させるためにキャメルケースが使用されることがある[16][17]。また、ドキュメントやガイドラインにおいては、セクション名や章タイトルの視認性を高める目的で採用されることもある[18][19]。さらに、ブランド名や製品名においても、一貫性を保ちつつ視覚的に目立つ名前を作成するためにキャメルケースが用いられることがある[20][21]。このように、キャメルケースはその利便性から広範な応用がなされており、多岐に渡る分野でその有用性が認識されている。
歴史
[編集]1970年代:キャメルケースのスタイルの誕生
[編集]キャメルケースのスタイルの起源は1970年代に遡る[22][23]。この時期、プログラミング言語の発展に伴い、メソッド名や変数名の命名規則が重要視され始めた。特に、長い名前を一つの識別子として扱うために、単語境界を視覚的に表現する方法として各単語の頭文字を大文字にするキャメルケースのスタイルが考案された(この時点では「キャメルケース」という用語は存在していない)。
1980年代:Pascalと「mixed-case」
[編集]1980年代には、PascalやC言語などのプログラミング言語が普及し、キャメルケースのスタイルが広く用いられるようになった[24][25][26][27]。特にPascalでは、メソッド名や変数名にキャメルケースのスタイルが推奨されていた。これは、コードの読みやすさと一貫性を向上させるためであり、特にPascalの教育的な側面が強調される中で、この命名規則が採用された。この時期、キャメルケースのスタイルは"mixed case"と呼ばれていた[28][注釈 3]。
1990年代:Javaの普及
[編集]1990年代には、Javaの登場により、キャメルケースのスタイルがさらに普及した[29][30]。Javaでは、クラス名にアッパーキャメルケース、変数名やメソッド名にローワーキャメルケースが推奨されていた。この時期に、キャメルケースのスタイルが広く認知されるようになった。
2000年代:.NET Frameworkの標準化
[編集]2000年代には、Microsoftが.NET Frameworkをリリースし、その中でキャメルケースの使用が標準化された。この時に、「キャメルケース」という用語が考案された。.NET Frameworkの開発において重要な役割を果たしたMicrosoftの元エンジニア兼プログラムマネージャーのブラッド・エイブラムスは、著書『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries[31]』の中で、.NET Frameworkの初期設計の際、名付けスタイルの議論を円滑に進めるための用語を作成したと述べている。この時、各単語の頭文字を大文字にするスタイルは「PascalCasing」と命名され、先頭の語のみ頭文字を小文字にするスタイルは「camelCasing」と命名された[32]。「PascalCasing」という命名に関しては、Turbo Pascalの設計者であり、.NET設計チームの主要なメンバーでもあったアンダース・ヘルスバーグが、これはプログラミング言語Pascalによって普及したスタイルであるとして「PascalCasing」という用語を提案した[33][34]。これらの用語の選定にあたって、特に異論は出なかったとされる[31][35]。「PascalCasing」はパスカルケース(英: Pascal case[注釈 4])と表記されることもある。また、同じ.NETの系譜であるC#でもキャメルケースが公式に推奨される命名規則となった。これによって、キャメルケースはプログラミングにおける標準的な命名規則の一つとして確立された。
2010年代以降:モダン言語での普及
[編集]2010年代以降、キャメルケースは多くのプログラミング言語やフレームワークで一般的な命名規則として使われ続けている[36][37]。特に、JavaScriptやPythonなどのモダンな言語でもキャメルケースが広く採用されている。ただし、これらは厳密には.NETの文脈に属さないため、同じスタイルでも「ローワーキャメルケース」と呼ぶ[38][39]。
文脈別の使い分け
[編集].NETのガイドライン[40][注釈 5]では、先頭の語も含めて各構成語の頭文字を大文字にするスタイルをパスカルケース、先頭の語のみ頭文字を小文字にするスタイルをキャメルケースとしており、プログラミングの文脈でキャメルケースと言えば後者のスタイルを指すことが多いが、場合によってはどちらもキャメルケースと呼ばれることがある[注釈 6]。これらを厳密に区別するために、「アッパーキャメルケース」や「ローワーキャメルケース」といった用語が使われる[44][45]。厳密には「パスカルケース」および「キャメルケース」は.NETの文脈で使われるものであるため、他のプログラミング言語も含め、より広範な文脈では「アッパーキャメルケース」「ローワーキャメルケース」を使う[23]。それぞれの特徴については「アッパーキャメルケース」「ローワーキャメルケース」を参照されたい。
名称 | 表記例 | 備考 |
---|---|---|
アッパーキャメルケース(英: upper camel case: UCC)、またはパスカルケース | GetInputReader
|
複合語の先頭を、大文字で書き始める。 |
ローワーキャメルケース(英: lower camel case: LCC)、または単にキャメルケース | getInputReader
|
複合語の先頭を、小文字で書き始める。 |
なお、英語で大文字はupper case、小文字はlower caseであるが、これらは活版印刷の名残である[46][47]。
利点
[編集]利点については、「ローワーキャメルケース」「アッパーキャメルケース」の「利点」項目で説明されている。
キャメルケースについて、利点という点で上記の利点と比較して特筆すべき点はないため、このページでは省略する。
欠点
[編集]欠点については、「ローワーキャメルケース」「アッパーキャメルケース」の「欠点」項目で説明されている。
キャメルケースについて、欠点という点で上記の欠点と比較して特筆すべき点はないため、このページでは省略する。
適用例
[編集]以下について以外は「ローワーキャメルケース」「アッパーキャメルケース」の「適用例」項目で説明されている。
Visual BasicはWindows APIやOLE/COMの影響を[48][49]、また.NET Frameworkや.NET言語(C#、VB.NETなど)はDelphi(Object Pascal)の影響を受けており[50][51]、メソッドの名前を大文字で始めるアッパーキャメルケースとなっているが[32][52]、Javaはメソッドの名前を小文字で始めるローワーキャメルケースとなっている[53]。ただし、いずれもユーザー定義型の名前は大文字で始めるアッパーキャメルケースである。
ファイルシステムにおいて、ファイルやディレクトリ(フォルダー)の命名にキャメルケースが使われることも多い[54][55]。特にコマンドラインシェルでファイルシステムを操作する際、スペースが含まれている名前は問題を引き起こすことが多いため[56][57]、文字数の増大を抑制しつつ可読性を確保することのできるキャメルケースはこの点で有利である。ただし、オペレーティングシステムやファイルシステムなどの環境によっては、大文字・小文字が区別されない、または全て大文字として扱われて区別できない、という場合もある[58][59]。
初期のウィキにおいて、キャメルケースを用いた語をリンクとするという方法が用いられていた[60][61]。現在では、例えばMediaWikiが「[[
」と「]]
」を用いてリンクを表しているように、キャメルケースによるリンクを用いない方法が多く用いられている。
元を正せば、キャメルケースは複合語から成る人名に多く使われてきた[要出典]。
キャメルケースとスペルチェック
[編集]キャメルケースの欠点として、綴りミスを自動検出するスペルチェッカーの利用が難しくなる[要出典]、ということが挙げられる。Microsoft Word[69]のような一般的なワードプロセッサソフトウェアでは、広く知られていて辞書データベースに登録されているような固有名詞を除き、キャメルケースのスペルチェックに対応しておらず[要出典]、スペルミスであると判定してしまう。ただし、自然言語の文章中に登場するキャメルケース(ローワーキャメルケース)は、一般的にスペースやハイフン-
の不足などによる誤りであることが多いため、この動作は妥当であるともいえる[要出典]。
プログラミング時に用いられるコードエディタはテキストエディタの一種だが、コメント内や文字列リテラル内の文章だけでなく、識別子のスペルチェックにも対応しており[70][71]、また判定の容易なスネークケースやケバブケース(チェインケース / チェーンケース)だけでなく、キャメルケースのスペルチェックにも対応しているものがある[72][73]。
備考
[編集].NET FrameworkのSystem.Xml.Serialization.CodeIdentifier
クラスには、XMLの要素や属性の名前から取得されたメソッド引数などのようなコードの実体から、パスカルケース(アッパーキャメルケース)の文字列を生成するメソッドMakePascal()
[74]と、キャメルケース(ローワーキャメルケース)の文字列を生成するメソッドMakeCamel()
[75]が当初から用意されていた。
命名規則一覧
[編集]名称 | 英語表記 | 説明 | 表記例 |
---|---|---|---|
スネークケース | snake case | 単語間をアンダースコア(_ )で繋ぐ形式。
|
example_variable
|
スクリーミングスネークケース | screaming snake case | 単語間をアンダースコア(_ )で繋ぎ、全て大文字にする形式。「アッパースネークケース(upper snake case)」や「コンスタントケース(constant case)」とも呼ばれる[76]。
|
EXAMPLE_VARIABLE
|
キャメルケース | camel case | 各単語の頭文字を大文字にし、単語を連結する形式(最初の単語のみ頭文字が小文字)。.NETの文脈で使用。 | exampleVariable
|
ローワーキャメルケース | lower camel case | キャメルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | exampleVariable
|
パスカルケース | Pascal case | 各単語の頭文字を大文字にし、単語を連結する形式(キャメルケースと似ているが、最初の単語の頭文字も大文字)。.NETの文脈で使用。 | ExampleVariable
|
アッパーキャメルケース | upper camel case | パスカルケースと同じ形式だが、フレームワークや言語に依存しない表現。 | ExampleVariable
|
ケバブケース | kebab case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を小文字にする形式。「チェインケース / チェーンケース(chain case)」とも呼ばれる[76]。
|
example-variable
|
トレインケース | train case | 単語間をハイフン(- )で繋ぎ、各単語の頭文字を大文字にする形式。
|
Example-Variable
|
ドットケース | dot case | 単語間をドット(. )で繋ぐ形式。
|
example.variable
|
脚注
[編集]注釈
[編集]- ^ 各辞書で「"通常"、キャメルケースと呼ぶ場合ローワーキャメルケースを指す」のように表現されていることから、場合によってはパスカルケース(アッパーキャメルケース)を指すこともある(「総称としての紹介[6]」、「"通常"という表現を用いた紹介[7][8]」が存在する)。
- ^ 「ローワー」という読み仮名表記は、「大辞林第四版[9]」「大辞泉[10]」「日本語シソーラス第2版[11]」「コトバンク[12]」「IT用語辞典[13]」「goo辞書[14]」「シマウマ用語集[15]」など、様々な辞書で採用されている表記である。
- ^ このJavaのドキュメントはSunによって1999年に書かれた版であり、.NETが登場する前から「mixed case」という用語が使われていたことを意味している。
- ^ 「Pascal」は固有名詞であるため、先頭を小文字にしてはならない。
- ^ このガイドラインページは『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition』からの抜粋であるが、Krzysztof CwalinaとBrad abramsはウェブページの直接の著者ではない。
- ^ 各辞書で「"通常"、キャメルケースと呼ぶ場合ローワーキャメルケースを指す」のように表現されていることから、場合によってはパスカルケース(アッパーキャメルケース)を指すこともある(「総称としての紹介[41]」、「"通常"という表現を用いた紹介[42][43]」が存在する)。
- ^ 「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日閲覧。
- ^ “camel caseの意味・使い方・読み方 | Weblio英和辞書”. ejje.weblio.jp. 2024年7月2日閲覧。
- ^ “キャメルケース(camel case)とは? 意味・読み方・使い方をわかりやすく解説 - goo国語辞書”. goo辞書. 2024年7月2日閲覧。
- ^ “キャメルケースとは? 意味や使い方”. コトバンク. 2024年7月2日閲覧。
- ^ “大辞林第四版”. 三省堂. 2024年7月1日閲覧。
- ^ “大辞泉”. 大辞泉. 2024年7月1日閲覧。
- ^ “日本語シソーラス 第2版 類語検索辞典”. 大修館書店. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. コトバンク. 2024年7月1日閲覧。
- ^ “キャメルケース”. IT用語辞典. 2024年7月1日閲覧。
- ^ “ローワーキャメルケース”. goo辞書. 2024年7月1日閲覧。
- ^ “キャメルケース”. シマウマ用語集. 2024年7月1日閲覧。
- ^ 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” (英語). Dataconomy (2023年11月3日). 2024年6月29日閲覧。
- ^ “The Art of Naming”. Zinzin. 2024年6月29日閲覧。
- ^ Knuth, Donald Ervin (1997) (英語). The Art of Computer Programming. Addison-Wesley. ISBN 978-0-201-03809-5
- ^ a b McConnell, Steve (1993) (英語). Code Complete: A Practical Handbook of Software Construction. Microsoft Press. ISBN 978-1-55615-484-3
- ^ Jensen, Kathleen; Wirth, Niklaus (1985) (英語). Pascal User Manual and Report. Springer-Verlag. ISBN 978-0-387-96048-7
- ^ Cooper, Doug (1993) (英語). Oh! Pascal!. W.W. Norton. ISBN 978-0-393-96399-1
- ^ Kernighan, Brian W.; Ritchie, Dennis (1988-03-22) (英語). C Programming Language. Prentice Hall. ISBN 978-0-13-308621-8
- ^ Pressman, Roger S. (2005) (英語). Software Engineering: A Practitioner's Approach. Palgrave Macmillan. ISBN 978-0-07-301933-8
- ^ “Naming Conventions”. ORACLE. 2024年7月14日閲覧。
- ^ Arnold, Ken; Gosling, James (1998) (英語). The Java Programming Language. Addison-Wesley. ISBN 978-0-201-31006-1
- ^ Bloch, Joshua (2008-05-08) (英語). Effective Java. Addison-Wesley Professional. ISBN 978-0-13-277804-6
- ^ a b 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
- ^ a b KrzysztofCwalina: “Capitalization Conventions - Framework Design Guidelines” (英語). learn.microsoft.com (2023年10月3日). 2024年7月13日閲覧。
- ^ “The Private Life of a Public API”. www.moserware.com. 2024年6月29日閲覧。
- ^ “MICROSOFT ® .NET DEVELOPER”. Pearson Education. 2024年6月29日閲覧。
- ^ クリストフ・ツヴァリナ、ブラッド・エイブラムス『.NETのクラスライブラリ設計』日経BP、2009年12月28日、32頁。ISBN 978-4-89100-676-1。
- ^ Crockford, Douglas (2008-05-08) (英語). JavaScript: The Good Parts: The Good Parts. "O'Reilly Media, Inc.". ISBN 978-0-596-55487-3
- ^ Matthes, Eric (2015-11-20) (英語). Python Crash Course: A Hands-On, Project-Based Introduction to Programming. No Starch Press. ISBN 978-1-59327-603-4
- ^ “キャメルケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年7月1日閲覧。
- ^ “ローワーキャメルケースとは? 意味や使い方”. コトバンク. 2024年7月1日閲覧。
- ^ “フレームワーク デザインのガイドライン”. learn.microsoft.com (2024年1月27日). 2024年6月29日閲覧。
- ^ “camel caseの意味・使い方・読み方 | Weblio英和辞書”. ejje.weblio.jp. 2024年7月2日閲覧。
- ^ “キャメルケース(camel case)とは? 意味・読み方・使い方をわかりやすく解説 - goo国語辞書”. goo辞書. 2024年7月2日閲覧。
- ^ “キャメルケースとは? 意味や使い方”. コトバンク. 2024年7月2日閲覧。
- ^ “A Simple Approach to Optimized Text Compression's Performance”. IEEE Xplore. 2024年6月29日閲覧。
- ^ “Universal Utility Data Exchange (UUDEX) – Information Exchange Structures – Rev 1”. アメリカ合衆国エネルギー省. 2024年6月29日閲覧。
- ^ 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
- ^ Petzold, Charles (2013-01-15) (英語). Programming Windows. Pearson Education. ISBN 978-0-7356-7172-0
- ^ Dale Rogerson (1998-1-21). INSIDE COM (Microsoft Programming Series). 日経BP
- ^ 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: “Case Sensitivity” (英語). learn.microsoft.com (2022年4月27日). 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日閲覧。
- ^ “PlayStation 公式サイト | 本体・ゲームタイトル・周辺機器”. www.playstation.com. 2024年7月13日閲覧。
- ^ “iPhone”. Apple(日本). 2024年7月13日閲覧。
- ^ “BlackBerry - Company”. www.blackberry.com. 2024年7月13日閲覧。
- ^ “大切なものを OneDrive で安全に保存して共有しましょう”. Microsoft. 2024年7月14日閲覧。
- ^ “YouTube”. www.youtube.com. 2024年7月13日閲覧。
- ^ “SEO: What about spaces in URLs? | Combell” (英語). 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: “スペル チェック機能の詳細 - Visual Studio (Windows)”. learn.microsoft.com (2023年5月24日). 2024年6月29日閲覧。
- ^ “Spell Checker | CodeRush | DevExpress Documentation”. docs.devexpress.com. 2024年6月29日閲覧。
- ^ anandmeg: “Learn about the Spell Checker - Visual Studio (Windows)” (英語). learn.microsoft.com (2023年5月24日). 2024年7月13日閲覧。
- ^ “Spell Checking | IntelliJ Platform Plugin SDK” (英語). IntelliJ Platform Plugin SDK Help. 2024年6月29日閲覧。
- ^ 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日閲覧。
- ^ a b “スネークケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年7月13日閲覧。
関連項目
[編集]- 命名規則
- ケース・センシティブ
- 大文字と小文字
- ハンガリアン記法
- クロノグラム - 特定の年代を表記するため、単語の中のローマ数字を大文字にする。