🎧

【エンジニア初心者用】命名規則を色々まとめてみた

に公開

あまり命名規則一覧と使用例のサイトがなかったので、自分と同じジュニア向けにまとめました。

1. 英単語の結合パターンによる命名規則

名称 区切り 別名/備考
camelCase userName, getData 大文字で単語境界 LowerCamelCase
PascalCase UserName, GetData 大文字で単語境界 UpperCamelCase
snake_case user_name, get_data _
SCREAMING_SNAKE_CASE MAX_SIZE _ + 全大文字 定数・環境変数
kebab-case user-name - spinal-case
Train-Case User-Name - + 各語頭大文字 見出し/一部URL
dot.case user.name . 設定キー等
path/case user/name / ルーティング/パス
flatcase username なし 短い識別子
Title Case User Name 空白 見出し
Sentence case User name 空白 UI文言
StudlyCaps / InterCaps eMail, iPhone 大小混在 ブランド系

2. 命名規則ごとの使用用途(実務の定番)

対象/分野 推奨規則 代表例
JS/TS 変数・関数 camelCase userName, fetchData
JS/TS クラス/型/Enum PascalCase class UserService, type UserId
React コンポーネント PascalCase UserCard
React フック camelCase + use接頭 useUser, useFetch
TS 型エイリアス/インターフェース PascalCase type Order, interface User
TS/JS 定数(不変値) SCREAMING_SNAKE_CASE API_BASE_URL
Python 変数・関数 snake_case user_name, get_data()
Python クラス PascalCase class UserService:
Python 定数 SCREAMING_SNAKE_CASE MAX_RETRY
Java/Kotlin/C# フィールド/メソッド camelCase maxSize, getUser()
Java/Kotlin/C# クラス/Enum PascalCase UserService, Status.OK
C/C++/Rust 変数・関数 snake_case max_size, get_data
C/C++/Rust 定数/マクロ SCREAMING_SNAKE_CASE MAX_SIZE, BUFFER_LEN
Go(慣例) 小文字=非公開 / 大文字=公開 type User struct{}, func NewUser()
Ruby/PHP 変数・メソッド snake_case user_name, get_data
SQL(テーブル/カラム) snake_case user_profile, created_at
環境変数 SCREAMING_SNAKE_CASE DATABASE_URL
URL/ファイル名/スラッグ kebab-case or lowercase user-profile, terms-of-service
CSS クラス kebab-case(BEM推奨) .btn--primary, .card__title
YAML/TOML キー snake_case or kebab-case max_retries: 3
JSON キー camelCase(JS連携前提) { "userName": "..." }
GraphQL 型/フィールド Type: Pascal / Field: camel type User { userName: String }
Terraform/Cloud 名称 snake_case(リソースID)/ kebab-case(タグ) aws_s3_bucket.app_logs

3. 補足)ハンガリアン記法のプレフィックスの例

※「型そのもの」を付ける古典式は現代では非推奨。単位・意味のタグを付ける“論理ハンガリアン”は有用。

3.1 クラシック(参考)

意味 接頭辞
int i iCount
bool b bEnabled
float/double f / d fRatio, dScore
string(C) sz szName
pointer p pBuffer
handle h/hwnd hFile, hwndMain
unsigned u uCount

3.2 論理(実務で有用)

意味タグ 用途
単位 pxWidth, msDelay, kmDist 単位の混同防止
型ロール fnHandler, elButton, refInput JS/TSの役割明示
集合型 arrUsers, mapById, setIds 誤用防止
ドメイン usrId, ordTotal, taxIncl ビジネス文脈の明示
可変/不変 mutableState, constConfig 設計意図共有
フラグ isReady, hasToken, canEdit 可読性定番(※is/has/can)

注意

  • 静的型言語では物理型プレフィックスは不要
  • TS/型安全DBでは**idの型ごとにブランド型/opaque type**で区別するのがより堅牢(UserId, OrderId)。

4. 実務補足(ベストプラクティス抜粋)

  • 一貫性 > 嗜好:プロジェクト内でルールを固定(言語の標準スタイルガイド優先)。

  • ブールは肯定形is/has/should/can。否定は変数でなく条件で否定!isEnabled)。

  • 略語/Acronym:言語規約に合わせる。

    • Java/TS:userId, httpServerId表記推奨)
    • .NET:UserId, HttpServer(先頭大文字)
  • 複数形:コレクションは明確に(users, userList, ordersByUserId)。

  • イベント/ハンドラonXxx(プロップ/イベント名), handleXxx(関数名)。

  • プライベート/内部:言語の慣例に従う(JSは先頭_を避ける傾向/Pythonは_name)。

  • CSSはBEMblock__element--modifier + kebab-case。再利用性が上がる。

  • DB制約名pk_users, fk_orders_user_id, idx_users_email のように役割+対象

  • マイグレーション/リリース名YYYYMMDDHHmm_description(ソート性)。

  • テスト名should_doX_when_Y(関数名) or Given_When_Thenスタイル。

  • 国際化キー:dot.case + 名詞句(profile.edit.title)。

Discussion