命名に悩んだ時に使うツール

## 前置き

チーム開発や、（好ましくないものの）人がよく入れ替わるプロジェクトなどにおいてドキュメントのメンテナンス具合や検索のしやすさは新規参画者のオンボーディングをスムーズにする上でとても重要です。

我々エンジニアについては、もちろんコーディングをするのでソースコードの読みやすさも同等に重要です。

よく、綺麗なコーディングという意味で以下のような書籍があります。

### 良いコード／悪いコードで学ぶ設計入門―保守しやすい　成長し続けるコードの書き方

https://www.amazon.co.jp/%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89-%E6%82%AA%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%AD%A6%E3%81%B6%E8%A8%AD%E8%A8%88%E5%85%A5%E9%96%80-%E2%80%95%E4%BF%9D%E5%AE%88%E3%81%97%E3%82%84%E3%81%99%E3%81%84-%E6%88%90%E9%95%B7%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9-%E4%BB%99%E5%A1%B2/dp/4297127830

### リーダブルコード

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?crid=2MIMH905B52QY&dib=eyJ2IjoiMSJ9.Or_xhooRUepvN3zSufFigU6c1SrgBJGTQiAGGNozvtz3_GTj_g3U9PKBlAMRRSQLT2f_AJqdU3AHnFq_b-zg51mgANtSyBUraxjYuWsUhFHtUUnYe_WnCbpZ-5v_i35e9P8eMvhWeZqH7DKo-0gFfgKp1P7-2rZuz809JzfzB6601YeQfZ3rTV73gXKFm-W-IUw-MdP-mSaVptaEvN9hiyHMQG9DFPKtduiVl-F_hbk.MlqXbznQtAwjVnDjoMbunCa_o5HMx8903ixteYNSCX8&dib_tag=se&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=1733024266&s=books&sprefix=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%2Cstripbooks%2C1035&sr=1-1

### Good Code, Bad Code ～持続可能な開発のためのソフトウェアエンジニア的思考

https://www.amazon.co.jp/Good-Code-Bad-%EF%BD%9E%E6%8C%81%E7%B6%9A%E5%8F%AF%E8%83%BD%E3%81%AA%E9%96%8B%E7%99%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E7%9A%84%E6%80%9D%E8%80%83/dp/4798068160/ref=sr_1_2_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3FCLR7MT7UJNL&dib=eyJ2IjoiMSJ9.lXQXGHIujiDligncoOwQ-S1xN8upT7BWCH1-OaR8xXVbELI-L9e4LsB3pmuAMz8C1nnhjKjYQNsIlAlP2-NMYSvMxpir2gaUya99tkufKx3nLoGdpt2htEKKNWlWxM8vdgFb-2lJtpisKO1g8Qritw.h0cLhXL6dIonS8VChYRUkMVKf7oPLxKkRjRFvzgg64M&dib_tag=se&keywords=%E3%82%AA%E3%83%A9%E3%82%A4%E3%83%AA%E3%83%BC+%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2&qid=1733024326&sprefix=%E3%82%AA%E3%83%A9%E3%82%A4%E3%83%AA%E3%83%BC+%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%2Caps%2C176&sr=8-2-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1

「良いコード」に関する議論をすると沼にハマっていきそうですが、やはり「命名の適切さ」は欠かせません。

また、昔のように「変数は極力短い方がいい」という思想は薄れており、近年は「多少長くてもいいからわかりやすいもの」が推奨されています。

## 基本的な命名の注意点

命名をする際に、基本的には以下のことに気をつけるようにと書籍やブログで散見されます。
（他にも色々な角度からの意見はあるのであくまで一例）

- 抽象度の高い命名は避ける（fetchItemInfoとかは何の？としか思えない）
- 処理内容の要約のようになるようなラベル付をする
- 逆にラベル以上のことをしないように実装は気を配る
- 二重否定をしない（isNotDisabledはisEnabledと言い換えられる）

また、以下の記事も定番のメソッド名についての解説があります

https://qiita.com/Koki_jp/items/f3d3e824f98d182d4100#%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E5%90%8D%E3%81%AF%E5%8B%95%E8%A9%9E%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8B

#### 一部抜粋

※ 全概要は上記記事を閲覧してください

| 動詞名        | 日本語表現          | 主な戻り値                        |
|---------------|---------------------|-----------------------------------|
| Get           | 取得する           | オブジェクト                      |
| Set           | 設定する           | void                              |
| Update        | 更新する           | void (updateした件数返す場合も)   |
| Delete        | 削除する           | void (deleteした件数返す場合も)   |
| Insert        | 挿入する           | void                              |
| Select        | 選択する           | オブジェクト                      |
| Find          | 選択する           | オブジェクト                      |
| Add           | 追加する           | void                              |
| Remove        | 削除する           | オブジェクト                      |
| Clear         | クリアする         | void                              |


## 困った時にはツールに頼ってみる

もちろん、自分の知識をつけていくことがとても大切なのですが、AIやツールの頼むのも良いと思います。
有名どころでいうと、ChatGPT, Codicなどがあります。

いくつかの日本語をそれぞれcodicとChatGPTに渡してみた回答を見てみましょう。
なお、ChatGPTはモデル「GPT-4」とします。

前提として、codicは1つの結果しか返しませんが各項目で別の候補があれば以下のように提示してくれます。


![画面収録 2024-12-01 15.06.15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/735195/8184f2a2-5701-76c5-723a-d8b2bc5f75ad.gif)




### 例題
#### 1. 顧客一覧に含まれる

```
codic: contain_to_customer_list
ChatGPT4: isCustomerInList, checkCustomerExists, findCustomerInDatabase, customerLookup
```

#### 2. メールを送信済みのユーザーか

```
codic: email_sent_user_is
ChatGPT4: hasSentEmail, isEmailSent, checkEmailStatus, userEmailConfirmation
```

#### 3. 履歴に登録済みかどうか

```
codic: history_registered
ChatGPT4: isRegisteredInHistory, isInHistory, hasHistoryEntry, checkHistoryStatus
```


いかがでしょうか？
以前codicは推奨されていましたが、ChatGPTの方が比較的良い候補を出してくれる印象がありますね。

GeminiやClaudeのように他のAIチャットのツールもあると思いますが、困った場合は活用してみてください。