🎧
【エンジニア初心者用】命名規則を色々まとめてみた
あまり命名規則一覧と使用例のサイトがなかったので、自分と同じジュニア向けにまとめました。
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,httpServer(Id表記推奨) - .NET:
UserId,HttpServer(先頭大文字)
- Java/TS:
-
複数形:コレクションは明確に(
users,userList,ordersByUserId)。 -
イベント/ハンドラ:
onXxx(プロップ/イベント名),handleXxx(関数名)。 -
プライベート/内部:言語の慣例に従う(JSは先頭
_を避ける傾向/Pythonは_name)。 -
CSSはBEM:
block__element--modifier+ kebab-case。再利用性が上がる。 -
DB制約名:
pk_users,fk_orders_user_id,idx_users_emailのように役割+対象。 -
マイグレーション/リリース名:
YYYYMMDDHHmm_description(ソート性)。 -
テスト名:
should_doX_when_Y(関数名) orGiven_When_Thenスタイル。 -
国際化キー:dot.case + 名詞句(
profile.edit.title)。
Discussion