---
# System prepended metadata

title: 20231220_実務を通じて実感した命名規則
tags: [ブログ記事]

---

# 20231220_実務を通じて実感した命名規則
(例：20210901_LT会を開催しました)
###### tags: `ブログ記事`

- [ ] 公開（ブログ公開担当者がいじるやつ）


太字斜体で書いてある内容を埋めて行ってください．
文章，画像は太字斜体の下の行に入れてください．
最初に書く時はREADMEを読んだら読むといいと思います．


<br>

## 表示されない情報
***書いた人の名前(自己紹介文と同じ名前)***
{
    佐藤昌信
}


***記事の簡単な説明(検索した時にタイトルの下に出てくる文章)***
{
    命名規則の基本的な使い分けについて
}


<br>

## 表示される部分
***サムネイル画像***
{
![のぶ](https://hackmd.io/_uploads/B1zIgHewp.jpg)

}

***カテゴリ***
以下の中から該当しそうなカテゴリを選択してください
※一つだけ選択してください
- [ ] 対外活動
- [ ] 活動の様子
- [ ] メンバーの趣味
- [x] NUTMEG Advent Calendar 2023

***タグ***
以下の中から該当しそうなカテゴリを選択してください．当てはまる物がない場合は適宜追加してください.
言語
- [ ] HTML
- [ ] CSS
- [ ] Python
- [ ] Go
- [ ] Ruby
- [ ] JavaScript
- [ ] TypeScript
- [ ] Dart
- [ ] Rust
- [ ] Kotlin
- [ ] Swift

フレームワーク・ライブラリ
- [ ] Ruby on rails
- [ ] Vue.js
- [ ] Nuxt.js
- [ ] React.js
- [ ] Next.js
- [ ] Gin
- [ ] Flluter

ツール
- [ ] GitHub
- [ ] ターミナル
- [ ] WSL
- [ ] Ubuntu
- [ ] Docker
- [ ] Raspberry Pi
- [ ] Figma

分野
- [x] チームづくり
- [ ] フロントエンド
- [ ] バックエンド
- [ ] インフラ
- [ ] Web-design
- [ ] API関係
 


---

***以下に本文を記載してください***
## はじめに
普段プログラムを書く際に，命名規則は意識していますか？
個人開発の時には，あまり意識なくても大丈夫なものですが，チーム開発において命名規則を決めておくことはとても重要です.
レビューなどでプログラムを読んでもらう際に，命名規則が適当だとプログラムを理解するのに時間がかかってしまい，作業効率が落ちてしまいます．
自分は実務訓練の際に，この命名規則が少し適当だったため，レビューにかなり時間がかかりました．
そのため，本ページでは，開発における命名規則について触れていこうと思います．

## 命名規則
さっそく命名規則について説明していきます．
多くのプログラムで使用されている命名規則は以下の4つです．
- キャメルケース
- パスカルケース
- スネークケース
- ケバブケース

### キャメルケース
キャメルケースとは`camelCase`みたいな感じに複数の単語を一つの綴りにして，接続する2つ目以降の単語の最初の文字を大文字で書くスタイルです．
`camel`とはラクダを意味しますが，単語の先頭が大文字になってラクダのコブのように見えることからキャメルケースと呼ばれています．
キャメルケースは，プログラムにおいて，関数名や変数名に使われます．

### パスカルケース
パスカルケースとは`PascalCase`のように各単語の先頭を大文字で書くスタイルです．プログラミング言語のパスカルで使用されていたことが由来みたいです．パスカルケースはクラス名やモジュール名など，関数よりのさらに大きいくくりの場所の命名に使われています．

### スネークケース
スネークケースとは`snake_case`のように各単語を`_`(アンダースコア)でつなげて書くスタイルです．スネークケースはキャメルケースと同様に関数名や変数名に使われています．
なお，キャメルケースとスネークケースの使い分けは特に厳しく決まっているわけではないため，プロダクトごとに使い分けましょう．

### ケバブケース
ケバブケースとは`kebab-case`のように各単語を`-`(ハイフン)でつなげて書くスタイルです．ケバブケースは`-`を使っている関係上，ファイル名に使われます．

## 名前の付け方
前の章では，命名規則について説明しました．しかし，命名規則を知っただけでは，読みやすいコードをかけるようにはなりません．
命名規則を知ったうえで，下記の項目での名前の付け方を気を付けることでさらに読みやすくなります．
- クラス名
- 関数名
- 変数名

### クラス名
クラス名やモジュール名を決めるにあたって，意識することは「**クラス名は名詞にする**」ということです．
例えば「ユーザを登録するクラス」を作るとしましょう．「ユーザを登録するクラス」を安直に翻訳して`RegisterUsersClass`みたいな感じに命名してはいけません．これだと`UsersClass`を登録するみたいな意味になってしまいます．
そのため，一度「ユーザを登録する」という動詞から「ユーザ登録」という名詞に置きなおしてから翻訳しましょう．そうすると`UsersRegistrationClass`となり，他人が読みやすい形になります．

### 関数名
関数名やメソッド名では，基本的に`動詞+名詞`の形で名前を付ける場合が多いです．`動詞+名詞`の形以外にも`is(has)+名詞`などの形もあります．関数名の決め方については数が多いため，詳細は下記のリンクを参照してください．

[プログラムにおいて命名がうまくいくコツ](https://aimstogeek.hatenablog.com/entry/2023/01/17/121609)

また，関数名に動詞を使用しますが，幅広い意味を持つ動詞はあまり推奨されていません．例えば，`get`や`check`などです．
`get`は何かの変数の値を取得する関数なのかなと予想はできますが，web業界だと外部のAPIから情報を取得するなど，同じプログラム内で意味が少し変わってしまったりしてしまいます．
また，`check`だと変数の値を確認する関数だと予想はできます．しかし，戻り値がbooleanなのか，それともintや変数特有の型なのか判断ができません．
以上のことなどから，幅広い意味をもつ動詞をなるべく使用しないことが読みやすいコードを書くことにつながります．
こちらも詳細は，以下のリンクを参照してください．

[プログラムの命名で使う/使わない単語](https://web-camp.io/magazine/archives/117113)

### 変数名
変数名は基本的に`名詞`で名前を付ける場合が多いです．もちろん名詞を修飾する形も多く存在します．変数名も関数名と同様に決め方が多いため，関数名の章で紹介したサイトを参照してもらうとより理解ができると思います．

## 最後に
さて，これまで命名規則などについて説明してきました．
サークルなどでは，コードの内部を詳細までレビューをしたりしますが，会社ではレビューにあまり時間をされられないため，クラス名(モジュール名)や関数名(メソッド名)だけをみて，あらかた判断したりしている感じです．(動作の確認は単体検査などでしている)
そのため，クラス名(モジュール名)や関数名(メソッド名)からどんな操作がされるかを判断できるようなコードを書くことで，他人が自分のコードを短い時間で理解することができます．
また，他人に理解しやすいコードを書くために多くの英単語を知っておくことで，命名に時間をかけずに済みます．英語の勉強は継続して頑張りましょう．

実務訓練が始まって間もないころ，職場の指導職員からある本を借りて読みました．その本は，大学でも読んだことがある本でした．
**そう，「リーダブルコード」です！**
今後もプログラムとの関りがあると思っているなら，一度は読むことをお勧めします．実務訓練の職場でも多くの人が読んだことがあるみたいです．

[リーダブルコード](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89&qid=1702738236&sr=8-1)

これからも楽しみながら，開発をやっていきましょう！


