
キャメルケース(自称でcamelCaseまたはCamelCaseと表記されることもあり、キャメルキャップス、より正式にはメディアルキャピタルとも呼ばれる)は、単語を大文字で表記し、スペースや句読点を用いない文体です。この表記法には様々な名称と慣例があります。このスタイルを表す用語「InterCaps 」が最初に確認されたのは、1990年4月のUsenetでのことです。
日常的な文章の綴りにおいて、語中大文字を慣例として用いることは稀ですが、2つの単語またはセグメントが結合されたときに生じる特定の問題への解決策として、一部の言語で用いられています。他の文字体系で書かれた言語の学術的な翻字においても、同様の状況で語中大文字が用いられます。語中大文字は、略語において、単語を完全に書き出したときの大文字化を反映するために伝統的に用いられることがあり、現在ではPh.D.やB.Sc.に代わるPhDやBScなどの学術称号の句読点のない略語にも用いられるようになっています。
技術的な目的で中大文字が体系的かつ広く使用された最初の例は、1813年にスウェーデンの化学者ヤコブ・ベルセリウスが考案した化学式の表記法である。20世紀初頭から、中大文字は企業名や製品の商標に時折使用されてきた。1970年代と1980年代には、中大文字はいくつかのコンピュータプログラミング言語で複数語の識別子の標準または代替命名規則として採用された。多くの組織やソフトウェアプロジェクトのコーディングスタイルガイドラインでは、複合識別子に中大文字を使用することが推奨されている。キャメルケースは、大文字が散りばめられた長い複合語を作成するため、可読性を損なうと批判されている。
キャメルケースという表記形式は、スペースや句読点を使わずに、単語を大文字で表記する慣習です。最初の単語はどちらのケースでも始まり、その後の単語は最初の文字が大文字になります。一般的な例としては、YouTube [ 1 ] PowerPoint、HarperCollins、FedEx、iPhone、eBay [ 2 ]、LaGuardia [ 3 ]などがあります。キャメルケースは、コンピュータプログラミングにおける命名規則としてよく使われます。また、 JohnSmithのようなオンラインユーザー名や、 EasyWidgetCompany.com の宣伝など、複数の単語からなるドメイン名を読みやすくするためにも使われることがあります。
パスカルケースとアッパーキャメルケースというより具体的な用語は、各単語の最初の文字が大文字になる連結されたフレーズを指し、最初の単語の最初の文字も含まれます。同様に、ローワーキャメルケース(ドロメダリーケースとも呼ばれる)では、最初の文字を小文字にする必要があります。Microsoft など一部の個人や組織は、ローワーキャメルケースのみをキャメルケースと呼び、アッパーキャメルケースをパスカルケースとして別々に指定しています。[ 4 ]プログラミングスタイルによっては、最初の文字を大文字にするキャメルケースを好むものもあれば、そうでないものもあります。[ 5 ] [ 4 ] [ 6 ]明確にするために、この記事では最初の単語の大文字化に関してキャメルケースの定義を曖昧にし、必要に応じてより具体的な用語を使用します。
キャメルケースは、他のいくつかのスタイルとは異なります。タイトルケースはすべての単語を大文字にしますが、単語間のスペースはそのままにします。トールマンレタリングは、 predniSONEとpredniSOLONEのように似たような製品名の違いを強調するために大文字を使用します。スネークケースは、小文字の間にアンダースコアを挟みます(最初の文字を大文字にする場合もあります)。Ada 95スタイルガイドでは、スネークケースとキャメルケースの組み合わせ(識別子Written_Like_This)が推奨されています。[ 7 ]
この慣習には、以下のような様々な名称がある。
Usenet でInterCapsという用語が最初に登場したのは、1990 年 4 月にalt.folklore.computersAvi Rappoport がグループに投稿した時である。 [ 22 ]「Camel Case」という名前が最初に使われたのは 1995 年、Newton Love の投稿である。[ 23 ] Love はその後、「このような構造を持つプログラミング言語の出現に伴い、そのスタイルのこぶから最初は HumpyCase と呼んでいましたが、最終的に CamelCase に落ち着きました。私は何年も CamelCase と呼んでいました。... 上記の引用は、私が USENET でその名前を初めて使ったものです。」と述べている。[ 24 ] 「Pascal Case」という用語は、2002 年に初めてリリースされた.NET Frameworkの設計に関する議論の中で造語された。[ 25 ]
日常的な文章の綴りにおいて、語中を大文字で表記する慣習は稀であるが、一部の言語では、2つの単語や音節が結合する際に生じる特定の問題への解決策として用いられている。
イタリア語では、代名詞を動詞に接尾辞として付けることができ、二人称代名詞の敬称形は頭文字が大文字になるため、non ho trovato il tempo di risponderLe(「あなたに答える時間がありませんでした」―Leは「あなたに」という意味)のような文を作ることができます。
ドイツ語では、人を表す名詞の多くに性別中立形がないため、特に口語では、名詞の男性形が性別に関係なくすべての人を指す一般的な表現として使われることがよくあります(これはドイツ語でgenerisches Maskulinumと呼ばれます)。別の、より最近のアプローチは、 StudentInnen (「学生」)のような単語の書き言葉で、Studenten(「男子学生」)とStudentinnen(「女子学生」)の両方を同時に指していることを示すために、単語の途中に大文字のI(Binnen-I)を使用することです。しかし、単語の途中に大文字を使用することは、McDonaldのような固有名詞を除いて、Rat für deutsche Rechtschreibung(ドイツ語正書法評議会)が規定するドイツ語の正書法には準拠していません。正書法に準拠するためには、冒頭の「students」の例を括弧を使ってStudent(inn)enに修正することができます。これは英語で「congress(wo)men」と書くのと同様です。[ 26 ]
アイルランド語では、固有名詞に屈折接頭辞が付けられる場合にキャメルケースが使用されます。たとえば、 Gaillimh (「ゴールウェイ」) のi nGaillimh ( 「ゴールウェイで」)。tAlbanach(「スコットランド人」)、Albanach(「スコットランド人」)由来。Éire (「アイルランド」) から、 hÉirinn (「アイルランドへ」)と進みます。最近のスコットランド ゲール語の正書法では、ハイフン(t-Albannach)が挿入されています。
この屈折接頭辞の規則は、いくつかの書き言葉のバンツー語(例: isiZulu、「ズールー語」) およびメキシコのいくつかの先住民族言語(例:ナワトル語、トトナカ語、ミクセ・ゾク語、および一部のオト・マンガン語) でも使用されています。
中国語のピンインでは、地名にキャメルケースが使われることがあり、読者が地名の各部分をより簡単に区別できるようにするためです。例えば、北京(Beijing)、秦皇島(Qinhuangdao)、大興安嶺(Daxing'anling)は、それぞれBeiJing、QinHuangDao、 DaXingAnLingと表記され、大文字の数は漢字の数と同じです。また、複合語を各文字の頭文字だけで表記することも許容される場合があり、北京はBJ、秦皇島はQHD、大興安嶺は DXAL と表記されます。
英語では、語中大文字は通常、スコットランド語またはアイルランド語の「Mac-」または「Mc-」で始まる父称名にのみ見られます。例えば、MacDonald、McDonald、 Macdonaldは、 MacDonald (Dòmhnallの息子)の一般的な綴りの異形です。また、アングロ・ノルマン語の「Fitz-」で始まる名前にも見られます。例えば、FitzGeraldとFitzgerald(Geraldの息子)の両方が見られます。
1906年に初版が発行された英語スタイルガイド『The King's English』の中で、HWとFGファウラーは、ハイフンを使うと曖昧になる三重複合語では語頭を大文字にすることを提案した。例として、KingMark-like ( King Mark-likeと対比)とAnglo-SouthAmerican ( Anglo-South Americanと対比)を挙げている。しかし、彼らはこのシステムを「現状ではあまりにも非現実的で使いづらい」と評した。[ 27 ]
フランス語の名前の中には、 LeBeau(姓)、LaRue、DeMordaunt、イタリア語の名前のDeRose / DeRosaのように、キャメルケースを使用するものもあります。
他の文字体系で書かれた言語の学術的な音訳では、同様の状況で中間大文字が使用されます。たとえば、音訳されたヘブライ語では、haIvri は「ヘブライ人」または「ユダヤ人」を意味し、b'Yerushalayim は「エルサレムで」を意味します。チベット語の固有名詞rLobsangでは、「r」は通常の文字ではなく、元の文字体系で声調マーカーとして機能する接頭辞グリフを表しています。別の例として、チェチェンとイングーシの特徴的な中世の防御塔の頂石を表すチェチェン語のラテン語転写であるts I urkuがあります。文字「I」(palochka)は実際には大文字ではなく、「i」と転写された音素とは異なる音素を示しています。
略語では、伝統的に、PhD やBSc などの学術称号のように、単語を完全に書き出したときの大文字表記を反映するために、中間大文字が使用されます。最近の例としては、National Novel Writing Month の略語であるNaNoWriMoがあり、これは毎年開催されるイベントとそれを運営する非営利団体の両方の名称です。ドイツ語では、法令名は埋め込み大文字を使用して略記されます。たとえば、 Strafgesetzbuch (刑法) は StGB、Patentgesetz (特許法) は PatG、Bundesverfassungsgericht (連邦憲法裁判所) は BVerfG、Gesellschaft mit beschränkter Haftung (有限会社) は非常に一般的です。この文脈では、 Teilzeit- und Befristungsgesetz (パートタイムおよび有期雇用に関する法律)のように、3 つ以上のキャメルケースの大文字が使用されることもあります。フランス語では、OuLiPo(1960年)のようなキャメルケースの頭字語が、頭字語の代替として一時的に好まれた。
キャメルケースは、頭字語をアルファベットに音訳する際によく使用されます。この場合、元のアルファベットの 1 文字を表すのに 2 文字が必要になることがあります。たとえば、キリル文字の ДШКからDShK に変換します。
技術的な目的で中大文字を体系的に広く使用した最初の例は、1813 年にスウェーデンの化学者ヤコブ・ベルセリウスが考案した化学式の表記法である。それまで化学者が使用していた多数の命名規則や記号規則に代わるものとして、彼は各化学元素を 1 文字または 2 文字の記号で表し、最初の文字を大文字にすることを提案した。大文字化により、「NaCl」のような式をスペースなしで書いても、曖昧さなく解析できるようになった。[ 28 ] [ 29 ]
ベルセリウスの命名法は現在も使用されており、未確認または未知の元素を表す「 Uue 」などの3文字記号や、一般的な置換基(特に有機化学の分野では、「エチル-」を表す「 Et 」など)の略語が追加されている。この命名法はさらに拡張され、タンパク質やその他の類似ドメインのアミノ酸配列の記述にも用いられている。
20世紀初頭以来、中字大文字は企業名や製品商標などに時折使用されてきた。
1970年代と1980年代には、いくつかのプログラミング言語において、複数語の識別子の標準または代替命名規則として、中間大文字が採用されました。コンピュータプログラミングにおけるこの規則の正確な起源はまだ確定していません。1954年の会議議事録[ 33 ]では、 IBMのSpeedcodingシステムを非公式に「SpeedCo」と呼ぶことがありました。Christopher StracheyのGPMに関する論文(1965) [ 34 ]には、「 」や「 」などの中間大文字の識別子を含むプログラムが示されています(これは、Stracheyが設計者の1人であったCPL言語の影響である可能性が最も高いです)。NextChWriteSymbol
end of fileや のように、スペースが埋め込まれた複数の単語からなる記述識別子は、char tableほとんどのプログラミング言語では使用できません。なぜなら、単語間のスペースがトークン間の区切り文字として解析されてしまうからです。やのように単語を連結して記述する方法もありますが、理解しにくく、誤解を招く可能性があります。たとえば、は英語の単語(チャート化可能)ですが、は の表を意味します。endoffilechartablechartablecharTablechars
Lisp(1958年)やCOBOL(1959年)などの初期のプログラミング言語では、複合識別子の単語間にハイフン("-"))を使用することでこの問題を解決しました。例えば、「END-OF-FILE」のようにです。Lispでは接頭辞表記との相性が良かったため(Lispのパーサーは記号の中央にあるハイフンを減算演算子として扱わなかったため)、COBOLでは演算子が個々の英単語であったためです。この慣習はこれらの言語で現在も使われており、 Unixのようにコマンドラインで入力されるプログラム名でもよく見られます。
しかし、この解決策は、ハイフンを中置減算演算子として使用するFORTRAN(1955年)やALGOL(1958年)のような数学指向の言語には適していませんでした。FORTRANは空白を完全に無視するため、プログラマは変数名に埋め込みスペースを使用することができました。しかし、言語の初期バージョンでは識別子が6文字以下に制限されていたため、この機能はあまり役に立ちませんでした。
さらに問題を悪化させたのは、当時の一般的なパンチカードの文字セットが大文字のみで、その他の特殊文字が欠けていたことである。ASCII文字セットが広く普及し、小文字とアンダースコア文字_が普遍的に使えるようになったのは、1960年代後半になってからのことだった。C言語をはじめとする一部の言語は、単語区切り文字としてアンダースコアをすぐに採用し、といった識別子は、 C言語のプログラムやライブラリ( PerlやPythonend_of_fileなど、C言語の影響を受けた後の言語も同様)で今でも広く使われている。しかし、アンダースコアの使用を避け、代わりにキャメルケースを採用した言語やプログラマーもいた。
1970年代にゼロックスPARCで働き、後にマイクロソフトのOfficeスイートアプリケーションの作成を監督したチャールズ・シモニは、ハンガリアン記法を発明し、その使用法を教えた。ハンガリアン記法の1つのバージョンでは、(大文字で始まる)変数名の先頭の小文字を使用してその型を示す。キャメルケーススタイルが最初にゼロックスPARCで普及したのは1978年頃で、ゼロックスAltoコンピュータ用に開発されたMesaプログラミング言語がきっかけだったという説がある。このマシンにはアンダースコアキーがなく(その代わりに左矢印「←」が使われていた)、識別子にハイフンとスペース文字は許可されていなかったため、読みやすい複数単語の名前にはキャメルケースが唯一の有効な方式となった。PARC Mesa言語マニュアル(1979)には、大文字と小文字のキャメルケースに関する具体的な規則を含むコーディング標準が含まれており、MesaライブラリとAltoオペレーティングシステムはこれを厳密に遵守した。Pascalの発明者であるニクラウス・ヴィルトは、PARCでのサバティカル中にキャメルケースの良さを理解し、次のプログラミング言語であるModulaでそれを使用しました。[ 35 ]
Alto上で開発されたSmalltalk言語も、アンダースコアの代わりにキャメルケースを使用している。この言語は1980年代初頭に非常に人気を博し、PARC以外にもこのスタイルを広める上で重要な役割を果たした可能性がある。
コンピュータ代数システムMathematicaのWolfram言語では、定義済み識別子には大文字のキャメルケース(または「パスカルケース」)が使用されます。ユーザー定義の識別子は小文字で始める必要があります。これにより、現在および将来のすべてのバージョンにおいて、定義済み識別子とユーザー定義識別子の間の競合を回避できます。
C# の変数名は、小文字のキャメルケースの規則に従うことが推奨されます。[ 36 ]
コンピューター分野における起源が何であれ、この慣習は1970年代後半からコンピューター会社とその商標名に用いられており、その傾向は今日まで続いている。
1980年代から1990年代にかけて、パーソナルコンピュータの登場によってハッカー文化が世界に知られるようになると、コンピュータ以外の分野の企業ブランド名にもキャメルケースが流行するようになった。1990年までには、その主流での使用は定着していた。
1990年代後半のドットコムバブル期には、小文字の接頭辞「e」(「 electronic」の略)と「i」(「Internet」、「information」、「intelligent 」などの略)が非常に一般的になり、 AppleのiMacやeBoxソフトウェアプラットフォームのような名前が生まれました。
1998年、デイブ・ヨストは、長い化学名の読みやすさを向上させるために、化学者は中間大文字を使用することを提案した。例えば、amidophosphoribosyltransferaseの代わりに AmidoPhosphoRibosylTransferase と書くように。[ 38 ]この用法は広く採用されなかった。
キャメルケースは、特定の地区の略称に使われることがあります。例えば、ニューヨーク市のソーホー( SoHo、サウス・オブ・ヒューストン・ストリート)やトライベッカ(TriBeCa 、トライアングル・ビロウ・キャナル・ストリート)、サンフランシスコのソーマ( SoMa、サウス・オブ・マーケット)などです。しかし、こうした表記はすぐに廃れてしまい、現在ではソーホー、トライベッカ、ソーマと表記されるのが一般的です。
内部大文字化は、 HeLa (1983)のような他の技術コードにも使用されています。
複合識別子の中央部分を大文字にすることは、多くの組織やソフトウェアプロジェクトのコーディングスタイルガイドラインで推奨されています。Mesa、Pascal、Modula、Java、Microsoftの.NETなどの一部の言語では、この慣習は言語開発者や公式マニュアルで推奨されており、そのため言語の「文化」の一部となっています。
スタイルガイドラインでは、大文字と小文字のキャメルケースを区別することが多く、通常は変数、レコードフィールド、メソッド、プロシージャ、関数、サブルーチン、型など、特定の種類のエンティティにどちらの形式を使用すべきかを指定します。これらのルールは、ソースコードがルールに準拠しているかどうかをチェックする静的解析ツールによってサポートされる場合もあります。
例えば、プログラミングにおけるハンガリー語の本来の表記法では、「使用タイプ」(データ型ではない)を表す小文字の略語をすべての変数名の前に付け、残りの部分はキャメルケースの大文字で表記するように規定されています。そのため、これは一種のキャメルケースの小文字表記と言えます。
プログラミング識別子には、 「old HTML file」のように既に大文字になっている頭字語や頭字語が含まれることがよくあります。タイトルケースの規則に倣うと、自然なキャメルケース表記では、略語はすべて大文字で「oldHTMLFile」となります。しかし、この方法は、2つの頭字語が連続して出現する場合(例:「parse DBM XML」が「parseDBMXML」になる)、または標準で小文字のキャメルケースが義務付けられているにもかかわらず、名前が略語で始まる場合(例:「SQL server」が「sQLServer」になる)に問題が生じます。このため、一部のプログラマーは略語を単語のように扱い、「oldHtmlFile」、「parseDbmXml」、または「sqlServer」と記述することを好みます。[ 39 ]ただし、この方法では、特定の単語が頭字語として意図されていることを認識するのが難しくなる場合があります。[ 40 ]
識別子の意味が大文字・小文字だけで異なる場合、例えば数式や商標などで問題が生じることがあります。このような場合、識別子の大文字・小文字を変更することは選択肢にならない可能性があり、代替名を選択する必要が生じます。
キャメルケースは、他のウィキページに自動的にリンクされるべき用語に、一部のウィキマークアップ言語で使用されます。この規則は元々、Ward Cunningham のオリジナルのウィキ ソフトウェアである WikiWikiWeb [ 41 ]で使用され、他のほとんどのウィキで有効にすることができます。TiddlyWiki 、Trac、PmWikiなどの一部のウィキ エンジンはデフォルト設定でこれを使用していますが、通常はこれを無効にするための構成メカニズムまたはプラグインも提供しています。Wikipedia も以前はキャメルケース リンクを使用していましたが、角括弧を使用した明示的なリンク マークアップに切り替えました[ 42 ]、他の多くのウィキ サイトも同様です。たとえば、MediaWiki はリンクにキャメルケースをサポートしていません。キャメルケース リンクを使用しないウィキの中には、 AboutUsのように、命名規則としてキャメルケースを使用しているものもあります。
NIEMレジストリでは、XMLデータ要素には大文字のキャメルケースを、XML属性には小文字のキャメルケースを使用することが義務付けられています。
ほとんどの一般的なコマンドラインインターフェースやスクリプト言語は、ファイル名にスペースが含まれている場合、それを簡単に処理することができません(通常はファイル名を引用符で囲む必要があります)。そのため、これらのシステムのユーザーは、 MyJobResume.pdfのような複合ファイル名には、キャメルケース(またはアンダースコア、ハイフンなどの「安全な」文字)を使用することがよくあります。
メッセージの文字数を制限するマイクロブログやソーシャルネットワーキングサービスは、メディア大文字の潜在的な発信源です。単語間にキャメルケースを使用すると、メッセージ内のスペースの数、ひいては文字数が減り、限られたスペースにより多くのコンテンツを収めることができます。ハッシュタグ、特に長いハッシュタグは、可読性を維持するためにキャメルケースまたはパスカルケースを使用することがよくあります(例:#collegeStudentProblems は #collegestudentproblems よりも読みやすい)。[ 43 ]この慣習は、スクリーンリーダーが複合ハッシュタグを解析する際にキャメルケースとパスカルケースを認識するため、アクセシビリティを向上させます。[ 44 ]
ウェブサイトのURLでは、スペースはパーセントエンコードされて「%20」となるため、アドレスが長くなり、人間にとって読みにくくなります。スペースを省略するキャメルケースでは、この問題は発生しません。
キャメルケースは、スペースを削除し、すべての単語を大文字にするため、可読性に悪影響を与えるとして批判されている。[ 45 ]
2009年に135人の被験者を対象に行われた、スネークケース(アンダースコア付き識別子)とキャメルケースを比較した研究では、キャメルケースの識別子が全被験者においてより高い精度で認識されたことがわかった。被験者はキャメルケースの識別子よりもスネークケースの識別子をより速く認識した。キャメルケースでのトレーニングはキャメルケースの認識を速くし、スネークケースの認識を遅くしたが、この効果には高いp値の係数が関係していた。この研究では主観的な調査も実施され、プログラマー以外の人はアンダースコアを好むか、どちらにも好みがないことがわかった。また、キャメルケースでトレーニングを受けたプログラマーの38%がアンダースコアを好むと回答した。しかし、他の変数をコントロールした場合、これらの好みは精度や速度と統計的に相関していなかった。[ 46 ]
2010年の追跡調査では、主にスネークケースで訓練された熟練プログラマー15名を対象とした同様の調査設計が用いられた。この調査では、アニメーションではなく静止画の刺激が用いられ、キャメルケースでの1件の誤答を除いて、両方のスタイルで完全な正答率が得られた。被験者は、キャメルケースよりもスネークケースの識別子を速く認識した。この調査ではアイトラッキング装置が使用され、被験者の速度の差は、3部構成の識別子の場合、キャメルケースの平均注視時間がスネークケースよりも有意に長かったことが主な原因であることが判明した。調査では、好みの識別子スタイルが混在していたが、やはり好みのスタイルと正答率や速度との相関関係は見られなかった。[ 47 ]
{{cite book}}ISBN /日付の不一致(ヘルプ)キャメルケースの識別子に関しては、これは短い単語、特に頭字語を含む識別子に大きな影響を与えます。たとえば、識別子 kIOuterIIDPath に含まれる頭字語 ID を考えてみましょう。大文字が連続しているため、kIOuterIIDPath の読み取り、特に ID という単語の識別はより困難になります。
この実験は、自然言語の読者がそのようなタスクを実行する方法を研究している他の研究者の過去の研究に基づいています。結果は、トレーニングに関係なく、すべての被験者でキャメルケースの方が精度が高く、キャメルケースでトレーニングを受けた人は、アンダースコア スタイルの識別子よりもキャメルケース スタイルの識別子を速く認識できることを示しています。
命名規則 (キャメルケースとアンダースコア) がコード理解に影響を与えるかどうかを判断するための実証研究が提示されています。実験中、人間の被験者から定量的データを取得するためにアイトラッカーが使用されています。この研究の目的は、時間応答テスト法を使用してデータを取得した ICPC 2009 で発表された以前の研究 (Binkley ら) を再現することです。アイトラッキング装置を使用することで、追加の洞察が得られ、従来のデータ収集技術のいくつかの制限を克服できます。2 つの研究の類似点と相違点について議論します。主な相違点の 1 つは、被験者が主にアンダースコア スタイルでトレーニングされ、全員がプログラマーであったことです。結果は、2 つのスタイル間で精度に違いがないことを示していますが、被験者はアンダースコア スタイルの識別子をより速く認識します。