コンテンツにスキップ

パスカルケース

出典: フリー百科事典『ウィキペディア(Wikipedia)』

パスカルケース: Pascal case)は、プログラミングおよびコンピュータサイエンスの分野において、複数の単語を連結する際に使用される命名規則の一種である[1][2][3][4]。この記法は、各単語の頭文字を大文字で表記し、それ以外の文字を小文字で表記するという特徴を持つ。パスカルケースは、しばしば関数[5][6][7][8]変数[1][5][9][10]、およびクラス[5][11][12][13]の命名規則として使用される。この命名規則はPascal言語に由来しており、名称考案時にこのスタイルが普及していたことから「パスカルケース」と命名された[14][15][16][17]

パスカルケースは広く普及している[2][5][10][18]呼称だが、厳密には.NETの文脈で使用されるものであり[14][15][19][20][21][22][注釈 1]、同じく並び称されるものとして「キャメルケース: camel case)」が存在する[11]。パスカルケースとキャメルケースは、共に複数の単語を連結する命名規則であるが、両者には明確な違いがある。キャメルケースでは最初の単語の頭文字は小文字とし、次の単語から頭文字を大文字にする(例:camelCase)。一方、パスカルケースでは全ての単語の頭文字を大文字にする(例:PascalCase)[31][32][33]。この違いにより、パスカルケースはキャメルケースとは異なる命名規則として認識される。

パスカルケースは、複数の単語が連結された場合でも、各単語の頭文字が大文字で示されるため、どの部分が新しい単語であるかを容易に判別することができる。これにより、プログラムコード可読性が向上し、保守・点検を行いやすくなる[10][34]

歴史[編集]

1970年代:Pascal言語の登場[編集]

パスカルケースの起源は、1970年代に登場したプログラミング言語「Pascal」に遡ることができる[35][36]。Pascal言語は、教育目的で開発され、その簡潔構造化された文法により、プログラミングの学習および実践において広く使用された[37][38]。Pascal言語の命名規則として採用されたのがパスカルケース(この時点ではまだこの呼称の定着はしていない)であり、その後、他の多くのプログラミング言語やフレームワークに影響を与えることとなった[39][40][41]

1980年代~1990年代:オブジェクト指向プログラミングの普及[編集]

1980年代から1990年代にかけて、オブジェクト指向プログラミング(OOP)の普及に伴い、パスカルケース(のスタイル)はクラス名やオブジェクト名の命名規則として広く採用されるようになった。特に、Delphi[42][43]C++[44][45]などの言語において、パスカルケース(のスタイル)はコードの可読性を高めるための重要なスタイルガイドラインとして位置付けられた。

2000年代初頭:.NET Frameworkの登場と「パスカルケース」の名称採用[編集]

Microsoft.NET Frameworkが登場した2000年代初頭[15][46]には、Turbo Pascal設計者であり、.NET設計チームの主要なメンバーでもあったアンダース・ヘルスバーグが、これはPascal言語によって普及したスタイルであると提言したことにより、「パスカルケース」という名称が.NET公式の命名規則の一部として採用され、以降、多くの開発者がこれを標準的なスタイルとして受け入れるようになった[17][47]

現代:Java、C#、JavaScriptなどの主要プログラミング言語での広範な使用[編集]

さらに、パスカルケース(のスタイル)はJavaC#JavaScriptなど、現代の主要なプログラミング言語においても広く使用されている。これらの言語では、特にクラス名や構造体名に対してパスカルケース(のスタイル)を使用することが推奨されており、統一された命名規則がコードの整合性と可読性を維持する上で重要な役割を果たしている。ただし、「パスカルケース」という名称は厳密には.NETの文脈で使用されるものであるため[48][49][50]、より広範な文脈では、同じスタイルでも「アッパーキャメルケース: upper camel case)」という名称を使用する[51][52][53]

パスカルケースの普及と共に、その明確な命名規則は、多言語環境や国際的なソフトウェア開発プロジェクトにおいても、開発者間のコミュニケーションを円滑にする一助となっている[41][48]。統一された命名規則の採用により、コードレビューや保守作業が効率化され、バグの発見や修正も容易になるといった利点も生じている[41][48]

文脈別の使い分け[編集]

先述のように、「パスカルケース」という名称は、厳密にはMicrosoftの.NET Frameworkにおける命名規則として使用される用語である。2000年代初頭に登場した.NET Frameworkは、Windowsプラットフォーム向けのアプリケーション開発を簡素化し、統一された開発環境を提供することを目的として設計された[15][46]。このフレームワークにおいて、クラス名や関数名の命名規則として「パスカルケース」という用語が公式に採用され、広く認識されるようになった。

一方、より広範な文脈においては、パスカルケースと同様の命名規則を指す際に「アッパーキャメルケース: upper camel case)」という用語が使用される。「キャメルケース: camel case)」とは、単語の「境界」を大文字で区切る命名規則の総称とみなされる場合があり[41][48][注釈 2]、その内の「全ての単語の頭文字を大文字にする」ものを「アッパーキャメルケース」[57][58]、「最初の単語の頭文字を小文字にする」ものを「ローワーキャメルケース: lower camel case)」と分類する[57][59][注釈 3]

「アッパーキャメルケース」という用語は、特定のフレームワークや言語に依存せず、より包括的な文脈で使用可能なため、多くのプログラミング言語やフレームワークにおいて適用可能である。例えば、Java[67]やC++[68]Python[69]などの言語では、クラス名や型名に対してアッパーキャメルケースを使用することが推奨されており[70][71]、これによりコードの一貫性と可読性が向上する。

利点[編集]

利点については、「アッパーキャメルケース」の「利点」項目で説明されている。

パスカルケースについて、利点という点でアッパーキャメルケースの利点と比較して特筆すべき点はないため、このページでは省略する。

適用例[編集]

以下の点について以外は「アッパーキャメルケース」の「適用例」項目で説明されている。

パスカルケースについて、適用例という点でアッパーキャメルケースの適用例と比較して以下の点について以外に特筆すべき点はないため、このページでは省略する。

Pascalは元々、大文字・小文字を区別しない言語であり、またISO規格準拠の標準Pascalでは識別子にアンダースコア_は用いることができない仕様になっているということもあり[72]、単語境界を認識しやすくするために単語先頭を大文字にする慣習があった。規格の文書には標準手続き(: Required Procedure)はwriteln(Write Ln)のように全て小文字で記載されているが、一部のPascal処理系の文書にはWriteLnのようにアッパーキャメルケースが採用されているものもある[73][74]

命名規則一覧[編集]

名称 英語表記 説明 表記例
スネークケース snake case 単語間をアンダースコア(_)で繋ぐ形式。 example_variable
スクリーミングスネークケース screaming snake case 単語間をアンダースコア(_)で繋ぎ、全て大文字にする形式。「アッパースネークケース」(upper snake case) や「コンスタントケース」(constant case) とも呼ばれる[75] EXAMPLE_VARIABLE
キャメルケース camel case 各単語の頭文字を大文字にし、単語を連結する形式(最初の単語のみ頭文字が小文字)。.NETの文脈で使用。 exampleVariable
ローワーキャメルケース lower camel case キャメルケースと同じ形式だが、フレームワークや言語に依存しない表現。 exampleVariable
パスカルケース Pascal case 各単語の頭文字を大文字にし、単語を連結する形式(キャメルケースと似ているが、最初の単語の頭文字も大文字)。.NETの文脈で使用。 ExampleVariable
アッパーキャメルケース upper camel case パスカルケースと同じ形式だが、フレームワークや言語に依存しない表現。 ExampleVariable
ケバブケース kebab case 単語間をハイフン(-)で繋ぎ、各単語の頭文字を小文字にする形式。

「チェインケース/チェーンケース」(chain case) とも呼ばれる[75]

example-variable
トレインケース train case 単語間をハイフン(-)で繋ぎ、各単語の頭文字を大文字にする形式。 Example-Variable
ドットケース dot case 単語間をドット(.)で繋ぐ形式。 example.variable
ローワーケース lower case 全て小文字で単語を連結する形式。 examplevariable
アッパーケース upper case 全て大文字で単語を連結する形式。 EXAMPLEVARIABLE

脚注[編集]

注釈[編集]

  1. ^ パスカルケースと同じ意味でも、他の言語では「アッパーキャメルケース」が用いられる。Java[23][24][25][26]、Python[27][28][29][30]など。
  2. ^ 各辞書で「"通常"、キャメルケースと言う場合ローワーキャメルケースを指す」のように表現されていることから、場合によってはパスカルケース(アッパーキャメルケース)を指すこともある(「総称としての紹介[54]」、「"通常"という表現を用いた紹介[55][56]」が存在する)。
  3. ^ 「ローワー」という読み仮名表記は、「大辞林第四版[60]」「大辞泉[61]」「日本語シソーラス第2版[62]」「コトバンク[63]」「IT用語辞典[64]」「goo辞書[65]」「シマウマ用語集[66]」など、様々な辞書で採用されている表記である。

出典[編集]

  1. ^ a b Programming naming conventions (explained by a snake)” (英語). www.pluralsight.com. 2024年7月1日閲覧。
  2. ^ a b Programming Naming Conventions – Camel, Snake, Kebab, and Pascal Case Explained” (英語). freeCodeCamp.org (2022年8月22日). 2024年7月1日閲覧。
  3. ^ Coding best practices — Research Computing University of Colorado Boulder documentation”. curc.readthedocs.io. 2024年7月1日閲覧。
  4. ^ Most Common Programming Case Types” (英語). www.curiouslychase.com. 2024年7月1日閲覧。
  5. ^ a b c d Java Naming Conventions: PascalCase, camelCase, and more - CRS Info Solutions”. www.crsinfosolutions.com. 2024年7月1日閲覧。
  6. ^ Code Style Guide” (英語). Android Open Source Project. 2024年7月1日閲覧。
  7. ^ JavaScript Style Guide” (英語). www.w3schools.com. 2024年7月1日閲覧。
  8. ^ Follow TypeScript best practices - AWS Prescriptive Guidance”. docs.aws.amazon.com. 2024年7月1日閲覧。
  9. ^ Coding best practices — Research Computing University of Colorado Boulder documentation”. curc.readthedocs.io. 2024年7月1日閲覧。
  10. ^ a b c What is Pascal Case? - Tuple”. www.tuple.nl. 2024年7月1日閲覧。
  11. ^ a b BillWagner (2023年12月15日). “Identifier names - rules and conventions - C#” (英語). learn.microsoft.com. 2024年7月1日閲覧。
  12. ^ Datadog. “Class name should be `PascalCase`”. Datadogでインフラストラクチャーとアプリケーションのモニタリング. 2024年7月1日閲覧。
  13. ^ Kumar, Mukesh. “C# Naming Conventions” (英語). www.c-sharpcorner.com. 2024年7月1日閲覧。
  14. ^ a b Prosise, Jeff (2002) (英語). Programming Microsoft .NET (core Reference). Microsoft Press. ISBN 978-0-7356-1376-8. https://www.google.co.jp/books/edition/Programming_Microsoft_NET_core_Reference/EX99QgAACAAJ?hl=ja 
  15. ^ a b c d Richter, Jeffrey (2012-11-15) (英語). CLR via C#. Pearson Education. ISBN 978-0-7356-6876-8. https://www.google.co.jp/books/edition/CLR_via_C/36tCAwAAQBAJ?hl=ja&gbpv=1&dq=CLR+via+C#&printsec=frontcover 
  16. ^ Esposito, Dino; Saltarello, Andrea (2014-08-28) (英語). Microsoft .NET - Architecting Applications for the Enterprise. Microsoft Press. ISBN 978-0-13-398640-2. https://www.google.co.jp/books/edition/Microsoft_NET_Architecting_Applications/SEVhBAAAQBAJ?hl=ja&gbpv=1&dq=Microsoft+.NET+-+Architecting+Applications+for+the+Enterprise&printsec=frontcover 
  17. ^ a b The Private Life of a Public API”. www.moserware.com. 2024年7月1日閲覧。
  18. ^ Snake Case VS Camel Case VS Pascal Case VS Kebab Case – What's the Difference Between Casings?” (英語). freeCodeCamp.org (2022年11月29日). 2024年7月1日閲覧。
  19. ^ Programming Case Styles : Using The Conventions - ITU Online” (英語) (2024年1月24日). 2024年7月1日閲覧。
  20. ^ ASP.NET - Citus 11.1 documentation” (英語). docs.citusdata.com. 2024年7月1日閲覧。
  21. ^ C# Excellence in .NET Development: Comprehensive Guide to Best Practices and Useful Tips” (英語) (2019年6月10日). 2024年7月1日閲覧。
  22. ^ KathleenDollard (2023年5月18日). “F# coding conventions - .NET” (英語). learn.microsoft.com. 2024年7月1日閲覧。
  23. ^ NamingConventions.UpperCamelCase (DataStax Enterprise Java Driver - Binary distribution 1.9.0 API)”. docs.datastax.com. 2024年7月1日閲覧。
  24. ^ XML Standards and Conventions”. docs.oracle.com. 2024年7月1日閲覧。
  25. ^ Style Guide | SoftConst2x | edX”. courses.edx.org. 2024年7月1日閲覧。
  26. ^ Google Java Style Guide”. google.github.io. 2024年7月1日閲覧。
  27. ^ CS 1110: Notes on Style”. www.cs.cornell.edu. 2024年7月1日閲覧。
  28. ^ BytePlus | Business growth through superior technology”. docs.byteplus.com. 2024年7月1日閲覧。
  29. ^ Coding Style — PyLith 4.1.1 documentation”. pylith.readthedocs.io. 2024年7月1日閲覧。
  30. ^ Conventions — MSOLVE 2024 documentation”. 2023.help.altair.com. 2024年7月1日閲覧。
  31. ^ KrzysztofCwalina (2023年10月3日). “Capitalization Conventions - Framework Design Guidelines” (英語). learn.microsoft.com. 2024年7月1日閲覧。
  32. ^ dotnet-bot. “CodeIdentifier.MakePascal(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年7月1日閲覧。
  33. ^ dotnet-bot. “CodeIdentifier.MakeCamel(String) Method (System.Xml.Serialization)” (英語). learn.microsoft.com. 2024年7月1日閲覧。
  34. ^ Camelcase” (英語). DevX. 2024年7月1日閲覧。
  35. ^ Niklaus Wirth (1970-11). The Programming Language Pascal (Niklaus Wirth). http://archive.org/details/1970-the-programming-language-pascal-wirth 
  36. ^ Wirth, Niklaus (1980) (英語). Algorithms + Data Structures: Programs. Scholars Book Company. https://www.google.co.jp/books/edition/Algorithms_+_Data_Structures/qPmijgEACAAJ?hl=ja 
  37. ^ Pascal Programming: Object, History & Usage” (英語). Vaia. 2024年7月1日閲覧。
  38. ^ Pascal: The Complete Skill Guide”. RoleCatcher. 2024年7月1日閲覧。
  39. ^ Knuth (1973) (英語). The Art of Computer Programming .... https://www.google.co.jp/books/edition/The_Art_of_Computer_Programming/Jp5w0AEACAAJ?hl=ja 
  40. ^ (英語) Structured programming. Acad. Press. (1974). https://www.google.co.jp/books/edition/Structured_programming/q3VtxwEACAAJ?hl=ja 
  41. ^ a b c d Martin, Robert C. (2008-08-01) (英語). Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education. ISBN 978-0-13-608325-2. https://www.google.co.jp/books/edition/Clean_Code/_i6bDeoCQzsC?hl=ja&gbpv=1&dq=Clean+Code:+A+Handbook+of+Agile+Software+Craftsmanship&printsec=frontcover 
  42. ^ Rubenking, Neil J. (1995) (英語). Delphi Programming for Dummies. IDG Books. ISBN 978-1-56884-200-4. https://www.google.co.jp/books/edition/Delphi_Programming_for_Dummies/JJB66Xozm5UC?hl=ja&gbpv=1&bsq=Delphi+Programming+for+Dummies&dq=Delphi+Programming+for+Dummies&printsec=frontcover 
  43. ^ Cantu, Marco (英語). Mastering Delphi - Book. Pearson Education, Limited. ISBN 978-0-273-61958-1. https://www.google.co.jp/books/edition/Mastering_Delphi_Book/xHERAAAACAAJ?hl=ja 
  44. ^ Stroustrup, Bjarne (2000) (ドイツ語). The C++ Programming Language. Pearson Deutschland GmbH. ISBN 978-3-8273-1660-8. https://www.google.co.jp/books/edition/The_C++_Programming_Language/YR5CqZcFJU8C?hl=ja&gbpv=1&dq=The+C+++Programming+Language&printsec=frontcover 
  45. ^ Meyers, Scott Douglas (2003) (英語). Effective C++: 50 Specific Ways to Improve Your Programs and Designs. China Electric Power Press. ISBN 978-7-5083-1498-3. https://www.google.co.jp/books/edition/Effective_C++/87zVQwAACAAJ?hl=ja 
  46. ^ a b Cwalina, Krzysztof; Abrams, Brad (2008-10-22) (英語). Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries. Pearson Education. ISBN 978-0-321-60500-9. https://www.google.co.jp/books/edition/Framework_Design_Guidelines/39d1wZ598ecC?hl=ja&gbpv=1&dq=Framework+Design+Guidelines:+Conventions,+Idioms,+and+Patterns+for+Reusable+.NET+Libraries&printsec=frontcover 
  47. ^ MICROSOFT ® .NET DEVELOPER”. Pearson Education, Inc.. 2024年7月1日閲覧。
  48. ^ a b c d McConnell, Steve (1993) (英語). Code Complete: A Practical Handbook of Software Construction. Microsoft Press. ISBN 978-1-55615-484-3. https://www.google.co.jp/books/edition/Code_Complete/lohA2aY9gu0C?hl=ja&gbpv=1&bsq=Code+Complete:+A+Practical+Handbook+of+Software+Construction&dq=Code+Complete:+A+Practical+Handbook+of+Software+Construction&printsec=frontcover 
  49. ^ A Simple Approach to Optimized Text Compression's Performance”. IEEE. 2024年7月1日閲覧。
  50. ^ Mix, Scott R.; Rice, Mark J.; Sridhar, Siddharth; Schmidt, Charles M.; Raju, Srini; Gonzales-Perez, Carlos; Bharadwaj, Debraj (2021-12-10) (English). Universal Utility Data Exchange (UUDEX) Information Structures - Rev. 1. https://www.osti.gov/biblio/1839617. 
  51. ^ Google Java Style Guide”. checkstyle.org. 2024年7月1日閲覧。
  52. ^ C# namespace annotation” (英語). api-linter. 2024年7月1日閲覧。
  53. ^ JavaScript coding guidelines”. www.zabbix.com. 2024年7月1日閲覧。
  54. ^ camel caseの意味・使い方・読み方 | Weblio英和辞書”. ejje.weblio.jp. 2024年7月2日閲覧。
  55. ^ キャメルケース(camel case)とは? 意味・読み方・使い方をわかりやすく解説 - goo国語辞書”. goo辞書. 2024年7月2日閲覧。
  56. ^ デジタル大辞泉. “キャメルケースとは? 意味や使い方”. コトバンク. 2024年7月2日閲覧。
  57. ^ a b キャメルケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年7月1日閲覧。
  58. ^ デジタル大辞泉. “アッパーキャメルケースとは? 意味や使い方”. コトバンク. 2024年7月1日閲覧。
  59. ^ デジタル大辞泉. “ローワーキャメルケースとは? 意味や使い方”. コトバンク. 2024年7月1日閲覧。
  60. ^ 大辞林第四版”. 三省堂. 2024年7月1日閲覧。
  61. ^ 大辞泉”. 大辞泉. 2024年7月1日閲覧。
  62. ^ 日本語シソーラス 第2版 類語検索辞典”. 大修館書店. 2024年7月1日閲覧。
  63. ^ ローワーキャメルケース”. コトバンク. 2024年7月1日閲覧。
  64. ^ キャメルケース”. IT用語辞典. 2024年7月1日閲覧。
  65. ^ ローワーキャメルケース”. goo辞書. 2024年7月1日閲覧。
  66. ^ キャメルケース”. シマウマ用語集. 2024年7月1日閲覧。
  67. ^ Google Java Style Guide”. google.github.io. 2024年7月1日閲覧。
  68. ^ C & C++ - OpenTitan Documentation”. opentitan.org. 2024年7月1日閲覧。
  69. ^ Python style guidelines [go/cros-pystyle]”. www.chromium.org. 2024年7月1日閲覧。
  70. ^ Camel case - MDN Web Docs Glossary: Definitions of Web-related terms | MDN” (英語). developer.mozilla.org (2024年5月7日). 2024年7月1日閲覧。
  71. ^ Coding conventions | Kotlin” (英語). Kotlin Help. 2024年7月1日閲覧。
  72. ^ Pascal ISO/IEC 7185:1990”. University of Texas at Austin, specifically by Gordon S. Novak Jr.. 2024年7月1日閲覧。
  73. ^ WriteLn”. www.freepascal.org. 2024年7月1日閲覧。
  74. ^ WriteLn - The GNU Pascal Manual”. www.gnu-pascal.de. 2024年7月1日閲覧。
  75. ^ a b スネークケースとは - IT用語辞典”. IT用語辞典 e-Words. 2024年7月7日閲覧。

関連項目[編集]