キャメルケース
キャメルケース(英: Camel Case)とは、英語の複合語やフレーズ、文をひと綴りとして、各単語の頭文字を大文字で表現することを言う[1][2]。キャメルケースとは、全体を俯瞰すると大文字の部分が「ラクダのこぶ」のように見えることからの命名である[3][4][5]。例えば、「camel case」をキャメルケースで表現すると、「camelCase」または「CamelCase」となる。
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/CamelCase_new.svg/240px-CamelCase_new.svg.png)
キャメルケースという語はプログラミングの文脈で最も一般的に使用されている[1]が、この語は他の分野においても広く用いられている。例えば、デジタルメディアやマーケティングにおいては、ウェブサイトのURLやドメイン名の可読性を向上させるためにキャメルケースが使用されることがある[6][7]。また、ドキュメントやガイドラインにおいては、セクション名や章タイトルの視認性を高める目的で採用されることもある[8][9]。さらに、ブランド名や製品名においても、一貫性を保ちつつ視覚的に目立つ名前を作成するためにキャメルケースが用いられる[10][11]。以上のように、キャメルケースはその起源と使用目的から広範な応用が可能であり、多岐に渡る分野でその有用性が認識されている。
ブラッド・エイブラムスは、.NETフレームワークの開発において重要な役割を果たしたマイクロソフトの元エンジニア兼プログラムマネージャーである。彼によれば、.NETフレームワークの初期設計の際、名付けスタイルの議論を円滑に進めるための用語を作成したという[12][13][14]。このとき、各単語の頭文字を大文字にするスタイルは「PascalCasing」と命名され、先頭の語のみ頭文字を小文字にするスタイルは「camelCasing」と命名された[12][13][14]。「PascalCasing」という命名に関しては、Turbo Pascalの設計者であり、.NET設計チームの主要なメンバーでもあったアンダース・ヘルスバーグが、これはプログラミング言語Pascalによって普及したスタイルであるとして「PascalCasing」という用語を提案した[15][16]。これらの用語の選定にあたって、特に異論は出なかったとされる[17][18]。「PascalCasing」はパスカルケース(英: Pascal Case)と表記されることもある。
パスカルケースは別名、バイキャピタライゼーション(英: Bi-Capitalization)[19]、インターキャプス(英: Intercaps)[20]とも呼ばれることがある。頭文字に小文字と大文字を混在させるケースはミックストケース(英: Mixed-Case)[21]とも呼ばれる。一部、日本語訳してキャメル記法(きゃめるきほう)[22]、キャメル方式(きゃめるほうしき)[23]と表現されることもある。
キャメルケースの種類
編集.NETのガイドライン[24]では、先頭の語も含めて各構成語の最初の文字を大文字にするスタイルをパスカルケース、先頭の語のみ最初の文字を小文字にするスタイルをキャメルケースとしており、プログラミングの文脈でキャメルケースと言えば後者のスタイルを指すことが多いが、場合によってはどちらもキャメルケースと呼ばれることがある。これらを厳密に区別するために、「アッパーキャメルケース」や「ローワーキャメルケース」といった用語が使われることもある[25][26]。厳密には「パスカルケース」及び「キャメルケース」は.NETの文脈で使われるものであるため、他のプログラミング言語も含め、より広範な文脈では「アッパーキャメルケース」「ローワーキャメルケース」を使う。それぞれの特徴については「アッパーキャメルケース」「ローワーキャメルケース」を参照されたい。
名称 | 表記例 | 備考 |
---|---|---|
アッパーキャメルケース(UCC[27])、またはパスカルケース | GetInputReader
|
複合語の先頭を、大文字で書き始める。 |
ローワーキャメルケース(LCC[28])、または単にキャメルケース | getInputReader
|
複合語の先頭を、小文字で書き始める。 |
なお、英語で大文字はupper case、小文字はlower caseであるが、これらは活版印刷の名残である[29][30]。
用途
編集コンピュータープログラミングにおいて、パスカルケース(アッパーキャメルケース)、キャメルケース(ローワーキャメルケース)が識別子の命名規則として用いられることがある[31][32]。
識別子とは、変数、サブルーチン、及びユーザー定義データ型等の構文要素を区別するために使用される名前を指す[33][34]。多くのプログラミング言語においては、スペースがトークン(字句)の区切りとして機能するため、識別子にスペースを含めることは許されない[35][36]。これにより、識別子には一続きの文字列が必要となる。従って、識別子にはパスカルケース(アッパーキャメルケース)、キャメルケース(ローワーキャメルケース)、スネークケース、ケバブケースといった命名規則が適用され、各単語の区切りを明示する。これらの命名規則は、コードの可読性および保守性を向上させ、プログラムの構造を明確にする役割を果たしている[37][38]。一般的な言語では、英数字の他にアンダースコア_
を使うことができる[39][40][41]が、古いCOBOLのようにアンダースコアは使えず、代わりにハイフンマイナス-
を使うことができるという言語もある[42][43]。また、初期のコンピュータでは、容量等の制約から大文字・小文字を区別することができず、大文字のみが使える環境が主流だった[44][45]。C言語の場合、ANSI C(C89)規格では、保証される外部識別子名の長さは6文字まで、内部識別子名の長さは31文字までという互換性制約があった[46][47][注釈 1]。
識別子に使用可能な文字種や文字数に制限のある環境において、複合語を一つのプログラム要素としたいときには「getinputreader
」や「GETINPUTREADER
」のように直接連結するしかない場合もある。しかし、直接連結してしまうと語の区切り(境界)を認識しにくく、可読性を欠いてしまう。アンダースコア_
やハイフンマイナス-
が使える環境ではそれらの文字を区切り文字に使って「get_input_reader
」や「GET-INPUT-READER
」等とする方法もあるが、文字数が増えてしまい、場合によっては処理系の制限に抵触してしまう。大文字・小文字を区別できるようになったことで、後続の語の頭文字を大文字とし、文字数を抑制しつつ、語の区切りを認識しやすくする記法が考案された[注釈 2]。このような記法は後に「パスカルケース」や「キャメルケース」と、.NETの用語として再定義されることになるが、これらの用語が定義される前からミックストケース(英: Mixed-Case)等の名前で呼ばれていた[要出典]。
Visual BasicはWindows APIやOLE/COMの影響を[50][51]、また.NETフレームワークや.NET言語(C#、VB.NET等)はDelphi(Object Pascal)の影響を受けており[52][53]、メソッドの名前を大文字で始めるアッパーキャメルケースとなっているが[12][54]、Javaはメソッドの名前を小文字で始めるローワーキャメルケースとなっている[55]。ただし、いずれもユーザー定義型の名前は大文字で始めるアッパーキャメルケースである。
ファイルシステムにおいて、ファイルやディレクトリ(フォルダー)の命名にキャメルケース(ローワーキャメルケース)が使われることも多い[56][57]。特にコマンドラインシェルでファイルシステムを操作するとき、スペースが含まれている名前は問題を引き起こすことが多いため[58][59]、文字数を抑制しつつ可読性を確保できるキャメルケース(ローワーキャメルケース)はこの点で有利である。ただし、オペレーティングシステムやファイルシステムによっては、大文字・小文字が同一視されたり、全て大文字として扱われて区別できなかったりする場合もある[60][61]。
初期のウィキにおいて、キャメルケース(ローワーキャメルケース)を用いた語をリンクとするという方法が用いられていた[62][63]。現在では、例えばMediaWikiが「[[
」と「]]
」を用いてリンクを表しているように、キャメルケース(ローワーキャメルケース)によるリンクを用いない方法が多く用いられている。
元を正せば、キャメルケース(ロウワーキャメルケース)は複合語から成る人名に多く使われてきた[要出典]。
その他の綴り方
編集名称 | 表記例 | 備考 |
---|---|---|
スネークケース | quoted_printable_encode [66]
|
アンダースコア(_ )を区切り記号として単語を繋げる。
|
ケバブケース(チェインケースとも) | Get-Process [68]
|
ハイフン(- )を区切り記号として単語を繋げる。
|
キャメルケースとスペルチェック
編集キャメルケース(ロウワーキャメルケース)の欠点として、綴りミスを自動検出するスペルチェッカーの利用が難しくなる[要出典]、ということが挙げられる。Microsoft Word[70]のような一般的なワードプロセッサソフトウェアでは、広く知られていて辞書データベースに登録されているような固有名詞を除き、キャメルケース(ロウワーキャメルケース)のスペルチェックに対応しておらず[要出典]、スペルミスであると判定してしまう。ただし、自然言語の文章中に登場するキャメルケース(ロウワーキャメルケース)は、慣習上のスペースやハイフンの不足等による誤りであることが多いため、この動作は妥当であるとも言える[要出典]。
プログラミング時に用いられるコードエディターはテキストエディターの一種だが、コメント内や文字列リテラル内の文章だけでなく、識別子のスペルチェックにも対応しており[71][72]、また判定の容易なスネークケースやケバブケース(チェインケース)だけでなく、キャメルケース(ローワーキャメルケース)のスペルチェックにも対応しているものがある[73][74]。
注釈
編集- ^ 標準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.”と述べている[48][49]。実際に、標準C++ライブラリには、
std::runtime_error
やstd::vector::push_back()
のように、アンダースコアを使った名前が頻出する。しかし彼は、言語組み込みのデータ型や標準ライブラリのデータ型との名前衝突を避けるため、ユーザー定義のデータ型の名前は先頭を大文字にすることを推奨してもいる。 - ^ 「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 c Capitalization Conventions - Framework Design Guidelines | Microsoft Learn
- ^ a b dotnet-bot. “CodeIdentifier.MakePascal(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年6月29日閲覧。
- ^ a b dotnet-bot. “CodeIdentifier.MakeCamel(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年6月29日閲覧。
- ^ “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日閲覧。
- ^ “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日閲覧。
- ^ KrzysztofCwalina (2024年1月27日). “フレームワーク デザインのガイドライン”. learn.microsoft.com. 2024年6月29日閲覧。
- ^ “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日閲覧。
- ^ 英: upper camel case
- ^ 英: lower camel case
- ^ 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
- ^ “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日閲覧。
- ^ “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 日本語訳
- ^ 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日閲覧。
- ^ PHP言語の関数。
- ^ 標準C++ライブラリに含まれるクラステンプレート。
- ^ Windows PowerShellのコマンド。
- ^ Scheme言語の組み込み関数。
- ^ “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日閲覧。
関連項目
編集- 大文字と小文字
- ケース・センシティブ
- 命名規則 (プログラミング)
- ハンガリアン記法
- クロノグラム - 特定の年代を表記するため、単語の中のローマ数字を大文字にする。