パスカルケースへの変換方法とクラス名の命名規約
パスカルケース(アッパーキャメルケース)は、最初の語を含めて各語の頭文字を大文字にします。クラス、コンポーネント、型、列挙型で使われ、変数に使うローワーキャメルケースと対になります。
パスカルケースを使う場面
React のコンポーネントをまとめて作るときは、コンポーネント名、ファイル名、props の型名を同時に決めます。user profile card は UserProfileCard、型は UserProfileCardProps です。手で書くとカード・一覧・詳細で大文字小文字がずれ、読み手を迷わせます。
Java や C# のクラス名、TypeScript の interface と type、ORM のエンティティ、自動生成されるモデルクラスもパスカルケースです。テーブル名や業務の言葉をまとめて変換し、接尾辞を揃えて足すほうが、1 件ずつ考えるより速く、表記も揃います。
- React のコンポーネント名と同名のファイル
- クラス、インターフェース、型、列挙型の名前
- テーブル名からエンティティ名をまとめて作る
- 設定用のオブジェクトや型に名前を付ける
変換の規則と見落としやすい 3 点
規則はキャメルケースと同じで、全体を小文字にし、英数字以外の文字の直後の文字を大文字にし、最後に先頭を大文字にします。違うのは最後の 1 手順だけなので、user profile、user_profile、user-profile はどれも UserProfile になり、区切りの痕跡は残りません。
1 点目、既存のパスカルケースは平坦になり、UserProfile は小文字化で区切りが消えて Userprofile になります。2 点目、略語は URL、ID、API が Url、Id、Api になるため戻します。3 点目、先頭が数字だと 3d model は 3DModel ではなく 3dModel になります。
- 入力は普通の英語フレーズにし、既存のパスカルケースを貼らない
- URL、ID、HTTP などの略語は変換後に修正する
- 数字で始まる名前は要確認(3d は 3D にならない)
- 漢字は削除されるため、先に英語へ翻訳する
- フレームワークの命名規約と突き合わせる
言語ごとの違いとツールの限界
C# は公開クラス、メソッド、プロパティにパスカルケースを使います。Java はクラス名に使い、メソッド名はローワーキャメルケース、Go は先頭の大文字で公開範囲を示します。Python はクラスにパスカルケース、関数に snake_case を使います。同じ名前でも言語が変われば書き換えが必要です。
略語の扱いに世界共通の正解はありません。.NET のガイドラインは 2 文字の略語をすべて大文字(IO)、3 文字以上は頭だけ大文字(Http、Xml)とし、Google の Java スタイルもほぼ同じです。ツールは文字を組み替えるだけで、重複の確認も語義の判断も行いません。
- Java、C#、TypeScript の型はパスカルケース
- Python のクラスはパスカルケース、関数は snake_case
- 略語は 2 文字なら全大文字、3 文字以上は頭だけ大文字
- 重複確認はしないため、反映前に自分で検索する
よくある質問
パスカルケースとキャメルケースの違いは何ですか?
違いは最初の語の頭文字だけです。camelCase は userName、PascalCase は UserName と書き、残りは同じです。JavaScript では変数とメソッドに前者、クラスに後者を使い、C# ではメソッドやプロパティにもパスカルケースを使います。
3d model が 3DModel ではなく 3dModel になるのはなぜですか?
大文字化は英字にだけ作用し、数字の 3 には大文字小文字がないためです。3DModel にしたい場合は変換後に d を手で大文字にしてください。数字で始まる識別子が使える言語かどうかも併せて確認が必要です。
React のコンポーネント名は大文字で始める必要がありますか?
必要です。JSX では小文字で始まるタグは HTML の要素として扱われるため、<myCard /> は自作コンポーネントではなく未知のタグになります。コンポーネント名も import 時の変数名も大文字で始める必要があり、ここでパスカルケースが好まれます。
関連ツール:パスカルケース変換