キャメルケース(英: camel case)は、英語の複合語やフレーズ、文をひと綴りとして、各構成語(要素語)の最初を大文字で書き表すことをいう。キャメルケースとは、大文字が「らくだのこぶ」のように見えることからの命名である。例えば、「camel case」をキャメルケースで書き表すと、「camelCase」または「CamelCase」となる。

ブラッド・エイブラムスによれば、.NET Frameworkの初期設計の際、名前付けスタイルの議論を円滑に進めるために作った用語だと言う。先頭の語も含めて各構成語の最初の文字を大文字にするスタイルは「PascalCasing」と命名され、先頭の語のみ最初の文字を小文字にするスタイルは「camelCasing」と命名された。なおこのとき、プログラミング言語Pascalによって普及したスタイルであるとして、「PascalCasing」という用語を提案したのは、Turbo Pascalの設計者であり、.NET設計チームの主要なメンバーでもあったアンダース・ヘルスバーグであったが、用語の選定にあたって特に異論は出なかった。「PascalCasing」はパスカルケース(英: Pascal case)と表記されることもある。

別名、バイキャピタライゼーション、インターキャプス、ミックストケースともいう。一部、日本語訳してキャメル記法、キャメル方式と表現されることもある。

## キャメルケースの種類

.NETのガイドラインでは、先頭の語も含めて各構成語の最初の文字を大文字にするスタイルをパスカルケース、先頭の語のみ最初の文字を小文字にするスタイルをキャメルケースとしており、プログラミングの文脈でキャメルケースと言えば後者のスタイルを指すことが多いが、場合によってはどちらもキャメルケースと呼ばれることがある。厳密に区別するために、「アッパーキャメルケース」や「ローワーキャメルケース」といった用語が使われることもある。

| 名称 | 表記例 | 備考 |
| --- | --- | --- |
| アッパーキャメルケース(UCC)、またはパスカルケース | `GetInputReader` | 複合語の先頭を、大文字で書き始める。 |
| ローワーキャメルケース(LCC)、または単にキャメルケース | `getInputReader` | 複合語の先頭を、小文字で書き始める。 |

なお、英語で大文字はupper case、小文字はlower caseであるが、これらは活版印刷の名残である。

## 用途

コンピュータープログラミングにおいて、キャメルケースが識別子の命名規則として用いられることがある。

識別子とは、変数、サブルーチン、ユーザー定義のデータ型といった構文要素を区別する名前のことを指すが、プログラミング言語の多くでは、スペースがトークン(字句)の区切りに使われ、ひとつづりをひとつの識別子として扱うため、ひとつの識別子がスペースを含むことはできない。一般的な言語では、英数字のほかにアンダースコア`_`を使うことができるが、古いCOBOLのようにアンダースコアは使えず、代わりにハイフンマイナス`-`を使うことができるという言語もある。また、初期のコンピュータでは、容量などの制約から大文字・小文字を区別することができず、大文字のみが使える環境が主流だった。C言語の場合、ANSI C (C89) 規格では、保証される外部識別子名の長さは6文字まで、内部識別子名の長さは31文字までという互換性制約があった。

識別子に使用可能な文字種や文字数に制限のある環境において、複合語をひとつのプログラム要素としたいときには「`getinputreader`」や「`GETINPUTREADER`」のように直接連結するしかない場合もある。しかし、直接連結してしまうと語の区切り(境界)を認識しにくく、可読性を欠いてしまう。アンダースコアやハイフンマイナスが使える環境ではそのような文字を区切り文字に使って「`get_input_reader`」や「`GET-INPUT-READER`」などとする方法もあるが、文字数が増えてしまい、場合によっては処理系の制限に引っかかってしまう。大文字・小文字が区別できる環境では、後続の語の最初を大文字とすることで、文字数を節約しつつ、語の区切りを認識しやすくする記法が考案された。この記法はのちに「キャメルケース」や「パスカルケース」として用語が再定義されることになるが、そのような用語が定義される前からmixed caseなどの名前で呼ばれていた。

パスカルケースという用語はプログラミング言語のPascalにちなんで命名されたものだが、Pascalはもともと大文字・小文字を区別しない言語であり、またISO規格準拠の標準Pascalでは識別子にアンダースコア`_`は使えない仕様になっているという関係もあり、語境界を認識しやすくするために単語先頭を大文字にする慣習があった。規格の文書では標準手続き(required procedure)は`writeln`のようにすべて小文字で記載されているが、一部のPascal処理系の文書では`WriteLn`のようにアッパーキャメルが採用されているものもある。

Visual BasicはWindows APIやOLE/COMの影響を、また.NET Frameworkや.NET言語(C#/VB.NETなど)はDelphi(Object Pascal)の影響を受けており、メソッドの名前を大文字で始めるアッパーキャメルとなっているが、Javaはメソッドの名前を小文字で始めるローワーキャメルとなっている。ただし、いずれもユーザー定義型の名前は大文字で始めるアッパーキャメルである。

ファイルシステムにおいて、ファイルやディレクトリの命名にキャメル形式が使われることも多い。特にコマンドラインシェルでファイルシステムを操作するとき、スペースが含まれている名前は問題を引き起こすことが多いため、文字数を節約しつつ可読性を確保できるキャメル形式は利点がある。ただし、オペレーティングシステムやファイルシステムによっては、大文字・小文字が同一視されたり、すべて大文字として扱われ区別できなかったりする環境もある。

初期のウィキにおいて、キャメルケースを用いた語をリンクとするという方法が用いられていた。現在では、たとえば MediaWiki が「`[[`」と「`]]`」を用いてリンクを表しているように、キャメルケースによるリンクを用いない方法が多く用いられている。

元を正せば、キャメルケースは複合語から成る人名に多く使われてきた。McDonald(マクドナルド)などは日本語話者にもなじみ深くなった名前のうちのひとつである。近年のキャメルケースで、日本語話者が日常生活の中で目にするものには、商品名やサービス名が多い。PlayStation、iPhone、BlackBerry、OneDriveやYouTubeなどがその例である。これらはスペースで単語を区切らず、連続した1語の固有名詞とすることによって、Web検索エンジンに区別されやすいという利点がある。

## その他の綴り方

| 名称 | 表記例 | 備考 |
| --- | --- | --- |
| スネークケース | `quoted_printable_encode`  `priority_queue` | アンダースコア(`_`)を区切記号として単語をつなげる。 |
| ケバブケース | `Get-Process`  `call-with-current-continuation` | ハイフン(`-`)を区切記号として単語をつなげる。 |

## キャメルケースとスペルチェック

キャメルケースの欠点として、綴りミスを自動検出するスペルチェッカーの利用が難しくなる、ということが挙げられる。Microsoft Wordのような一般的なワードプロセッサソフトウェアでは、広く知られていて辞書データベースに登録されているような固有名詞を除いて、キャメルケースのスペルチェックに対応しておらず、スペルミスであると判定してしまう。ただし、自然言語の文章の中で登場するキャメルケースは通例スペースやハイフンの不足などによる誤りであることが多いため、この動作は妥当であるとも言える。

プログラミングに使用されるコードエディターはテキストエディターの一種だが、コメント内や文字列リテラル内の文章だけでなく識別子のスペルチェックにも対応しており、また判定の容易なスネークケースやチェインケースだけでなく、キャメルケースのスペルチェックにも対応しているものがある。