関数名はプログラムの“読みやすさ”を大きく左右する重要な要素である。
「関数名の付け方」はチーム開発における品質を大きく左右するため、ここでは現場で最も推奨される命名ルールをまとめる。
1. 関数名に使う基本原則(すべての言語共通)
- ◆ (1) 動詞から始める(最重要)
- ◆ (2) 関数名は「何をするか」を正確に表す
- ◆ (3) 長すぎず、短すぎず適切な長さにする
- ◆ (4) 否定形は避ける
- ◆ (5) 論理値を返す関数は is / has / can / should を使う
- ◆ (6) 動作の種類を統一する(同じ意味で別の動詞を使わない)
- ◆ Java / JavaScript / TypeScript(camelCase)
- ◆ C#(PascalCase)
- ◆ Python(snake_case)
- ◆ PHP(camelCase または snake_case)
- ◆ Go(混在だが基本は PascalCase or camelCase)
- ◆ 1-1. データ取得(GET 系)
- ◆ 1-2. 作成/追加(CREATE / ADD 系)
- ◆ 1-3. 更新(UPDATE 系)
- ◆ 1-4. 削除(DELETE 系)
- ◆ 1-5. 検証(VALIDATE 系)
- ◆ 1-6. 計算(CALCULATE 系)
- ◆ 1-7. 変換(CONVERT / TO 系)
- ◆ 1-8. 通信・通知(SEND 系)
- ◆ 1-9. 入出力(IMPORT / EXPORT 系)
- ◆ 1-10. システム処理(EXECUTE / RUN 系)
- ◆ 1-11. ログ / 履歴
- ◆ 1-12. UI / 表示制御
◆ (1) 動詞から始める(最重要)
関数は「処理(行動)」であるため、動詞から始めるのが基本。
例:
getUser()
updateStatus()
calculateTotalAmount()
sendMail()
◆ (2) 関数名は「何をするか」を正確に表す
悪い例:
doProcess()
runTask()
良い例:
exportOrderData()
validateUserInput()
generateInvoicePdf()
◆ (3) 長すぎず、短すぎず適切な長さにする
calculateMonthlySalesReport ← 長すぎる
calcSales ← 短すぎる
calculateSalesReport ← 適切
◆ (4) 否定形は避ける
悪い例:
isNotValid()
良い例:
isValid()
◆ (5) 論理値を返す関数は is / has / can / should を使う
例:
isActive()
hasPermission()
canAccess()
shouldUpdate()
◆ (6) 動作の種類を統一する(同じ意味で別の動詞を使わない)
NG:
createUser()
makeUser() ← create と make が混在
OK:
createUser()
2. 関数名でよく使う動詞一覧(業務システムで頻出)
| 動詞 | 意味 | 例 |
|---|---|---|
| get | 取得する | getUser() |
| fetch | 外部から取得 | fetchApiData() |
| find | 検索する | findCustomerById() |
| search | 検索する | searchOrders() |
| list | 一覧を返す | listUsers() |
| create | 新規作成 | createOrder() |
| add | 追加する | addItem() |
| update | 更新する | updateStatus() |
| edit | 編集する | editProfile() |
| delete | 削除する | deleteUser() |
| remove | 削除する | removeTag() |
| save | 保存する | saveSettings() |
| load | 読み込む | loadConfig() |
| send | 送信する | sendMail() |
| receive | 受け取る | receiveMessage() |
| validate | バリデーション | validateInput() |
| calculate | 計算する | calculateTotal() |
| generate | 生成する | generateReport() |
| convert | 変換する | convertToCsv() |
| import | 取り込む | importData() |
| export | 出力する | exportPdf() |
| 印刷する | printLabel() |
3. 言語別の関数名命名規則
◆ Java / JavaScript / TypeScript(camelCase)
形式:
camelCase
例:
getUserList()
updateCustomerInfo()
validateForm()
特徴:
- 先頭は小文字
- 2単語目以降の先頭を大文字
- Java / JS / TS ではこれが標準
◆ C#(PascalCase)
形式:
PascalCase
例:
GetUser()
UpdateStatus()
CalculateTotal()
理由:
- C# の文化ではメソッドも PascalCase
- クラス名と同じ形式になる(Visual Studio 標準)
◆ Python(snake_case)
形式:
snake_case
例:
get_user()
calculate_total()
validate_input()
理由:
- PEP8 に「関数は snake_case」と指定されているため必須
- Python ではキャメルケース禁止
◆ PHP(camelCase または snake_case)
プロジェクト文化によるが、最近は camelCase が多い。
getUserInfo()
createPost()
WordPress や古い PHP は snake_case が混在する。
◆ Go(混在だが基本は PascalCase or camelCase)
Go の特徴:
- 大文字で公開(Export)
- 小文字で非公開(Unexport)
例:
GetUser() // 公開関数
getUser() // 非公開関数
4. 同じ処理は関数名の語尾で統一する
一覧取得は list か get か最初に決めるべき。
例)一覧取得関数
NG:
getUsers()
fetchUserList()
listAllUsers()
OK(統一):
listUsers()
5. 関数名のアンチパターン(避けるべき例)
| 悪い例 | 問題点 |
|---|---|
| doTask() | 何をする関数か分からない |
| proc() | 意味不明(レガシー) |
| a(), b() | 無意味 |
| judgeStatus() | 「judge」は母語話者はあまり使わない |
| processingUser() | 動詞ではなく名詞 |
| start() | 何を開始?曖昧 |
6. 関数名の良い例(業務システム向け)
| 関数名 | 説明 |
|---|---|
| getUserById(id) | IDでユーザー取得 |
| updateInventory(productId) | 在庫更新 |
| calculateTotalAmount(items) | 合計金額計算 |
| validateOrderData(order) | 注文データのバリデーション |
| generateInvoicePdf(orderId) | 請求書PDF作成 |
| sendNotification(userId) | 通知送信 |
7. REST API Controller の関数名(Webアプリ向け)
| HTTP | 推奨関数名例 |
|---|---|
| GET | getUsers(), getUserById() |
| POST | createUser() |
| PUT | updateUser() |
| DELETE | deleteUser() |
REST API の命名は HTTP 動詞と揃えると可読性が高い。
8. 非同期(async)関数名のルール
JavaScript/TypeScript の場合、Promise を返す関数は末尾に Async を付けることがある。
fetchUserAsync()
uploadFileAsync()
C# も同じ文化を採用している。
9. まとめ(プロジェクトで採用すべき関数命名ルール)
| 言語 | ルール |
|---|---|
| Java / JS / TS | camelCase |
| C# | PascalCase |
| Python | snake_case |
| Go | 大文字=公開、小文字=非公開 |
| 関数名は動詞で開始 | get〜, update〜, calculate〜 |
| Booleanは is/has/can | isActive(), hasPermission() |
✅ 1. 関数名の良い例集(業務システム向け・200例)
目的別に分類し、すぐにコピペして使えるように整理している。
◆ 1-1. データ取得(GET 系)
| 分類 | 良い関数名 |
|---|---|
| 単一取得 | getUserById(), getOrder(), getProduct() |
| 一覧取得 | getUserList(), getOrderList(), getProductList() |
| 条件取得 | getUsersByRole(), getOrdersByDate(), getItemsByCategory() |
| 外部取得 | fetchApiData(), fetchWeatherInfo(), fetchRemoteConfig() |
| 検索 | searchUsers(), searchProducts(), searchOrders() |
| 検索精査 | findUser(), findOrderByNo(), findCustomerByEmail() |
| 複合取得 | loadUserWithRoles(), loadOrderDetails() |
◆ 1-2. 作成/追加(CREATE / ADD 系)
| 分類 | 良い関数名 |
|---|---|
| 新規登録 | createUser(), createOrder(), createInvoice() |
| 新規データ生成 | generateInvoicePdf(), generateToken(), generateReport() |
| 追加 | addItem(), addRoleToUser(), addProductToCart() |
| 作成処理セット | buildUserProfile(), buildSearchIndex() |
◆ 1-3. 更新(UPDATE 系)
| 分類 | 良い関数名 |
|---|---|
| 更新 | updateUser(), updateOrderStatus(), updateSettings() |
| 上書き | overwriteConfig(), overwriteCache() |
| 入替 | replaceImage(), replaceToken() |
| 加工 | transformData(), modifyUserProfile() |
◆ 1-4. 削除(DELETE 系)
| 分類 | 良い関数名 |
|---|---|
| 削除 | deleteUser(), deleteOrder(), deleteFile() |
| 削除(物理) | removeUser(), removeTempFiles() |
| 無効化 | disableUser(), deactivateAccount() |
◆ 1-5. 検証(VALIDATE 系)
| 分類 | 良い関数名 |
|---|---|
| 入力チェック | validateInput(), validateOrderData() |
| ロジックチェック | validateStock(), validatePermission() |
| 整合性チェック | verifyToken(), verifySignature() |
| 妥当性判定 | isValidUser(), isActive(), canAccess(), hasPermission() |
◆ 1-6. 計算(CALCULATE 系)
| 分類 | 良い関数名 |
|---|---|
| 合計 | calculateTotalAmount(), calculateSum() |
| 税計算 | calculateTax(), calculatePriceWithTax() |
| 統計 | calculateAverage(), calculateStdDev() |
| 売上分析 | calculateRevenue(), calculateMonthlySales() |
◆ 1-7. 変換(CONVERT / TO 系)
| 分類 | 良い関数名 |
|---|---|
| 型変換 | convertToString(), convertToCsv() |
| データ変換 | mapUserToDto(), mapOrderToEntity() |
| 出力変換 | toJson(), toHtml(), toXml() |
◆ 1-8. 通信・通知(SEND 系)
| 分類 | 良い関数名 |
|---|---|
| メール送信 | sendMail(), sendReportMail() |
| 通知 | sendNotification(), pushAlert() |
| API送信 | postApiRequest(), sendApiRequest() |
◆ 1-9. 入出力(IMPORT / EXPORT 系)
| 分類 | 良い関数名 |
|---|---|
| 入力 | importCsv(), importExcel(), importUserData() |
| 出力 | exportCsv(), exportPdf(), exportOrderReport() |
| 保存 | saveUser(), saveConfig(), saveDraft() |
◆ 1-10. システム処理(EXECUTE / RUN 系)
| 分類 | 良い関数名 |
|---|---|
| 実行 | executeBatch(), runBackupProcess(), runScheduler() |
| 再実行 | retryJob(), retryRequest() |
| 中断 | abortProcess(), stopService() |
| 初期化 | initializeCache(), initializeUser() |
◆ 1-11. ログ / 履歴
| 分類 | 良い関数名 |
|---|---|
| ログ書き込み | writeLog(), writeErrorLog() |
| ログ取得 | readLog(), loadAccessHistory() |
◆ 1-12. UI / 表示制御
| 分類 | 良い関数名 |
|---|---|
| 表示 | showDialog(), showErrorMessage() |
| 非表示 | hideDialog(), closePopup() |
| UI更新 | updateView(), refreshScreen() |
✅ 関数名に使える動詞辞書(日本語の意味つき・200語)
— システム開発で本当に使う動詞だけに厳選 —
以下は、関数名を付けるときに使える 実務向け動詞+日本語の意味一覧。
目的別に分類しており、迷ったときにすぐ参照できるようにまとめている。
1. 取得・検索(GET系)40語
| 英語 | 日本語の意味 |
|---|---|
| get | 取得する |
| fetch | 外部から取得する |
| find | 見つける・検索する |
| search | 検索する |
| lookup | 調べる(辞書検索のニュアンス) |
| load | 読み込む |
| query | 問い合わせる(DB問い合わせ) |
| select | 選択・抽出する |
| retrieve | 取り出す・回収する |
| list | 一覧で取得する |
| pull | 引き出す(外部から取得) |
| scan | スキャンして探す |
| check | 確認する |
| detect | 検知する |
| recognize | 認識する |
| identify | 特定する |
| locate | 位置を特定する |
| observe | 監視する |
| inspect | 点検する |
| monitor | 監視する |
| review | 見直す・確認する |
| sync | 同期して取得する |
| collect | 集める |
| aggregate | 集計する |
| enumerate | 列挙する |
| scroll | スクロールして取得する |
| extract | 抽出する |
| capture | 取得・捕捉する |
| trace | 追跡する |
| read | 読み取る |
| receive | 受け取る |
| subscribe | 購読する・購読登録 |
| resolve | 解決して取得する |
| explore | 探索する |
| filter | 絞り込む |
| access | アクセスする |
| refresh | 更新して取得する |
| ping | 到達確認する |
| validate | 妥当性を確認する |
2. 作成・追加(CREATE系)40語
| 英語 | 日本語の意味 |
|---|---|
| create | 新規作成する |
| add | 追加する |
| insert | 挿入する |
| append | 後ろに追加する |
| generate | 生成する |
| produce | 生み出す |
| build | 組み立てる・構築する |
| compose | 構成する |
| construct | 組み立てる |
| make | 作る |
| prepare | 準備する |
| register | 登録する |
| issue | 発行する |
| assign | 割り当てる |
| attach | 添付する |
| link | 紐付ける |
| allocate | 割り当てる |
| copy | コピーする |
| duplicate | 複製する |
| compile | コンパイル・構築 |
| assemble | 組み立てる |
| initialize | 初期化する |
| seed | 初期データ投入する |
| draft | 下書きを作成する |
| plan | 計画する |
| start | 開始する |
| spawn | 生成(スレッドなど) |
| enable | 有効化する |
| activate | 活性化する |
| establish | 確立する |
| open | 開く |
| launch | 起動する |
| publish | 公開する |
| provision | 準備・提供する |
| setUp | セットアップする |
| authorize | 認可する |
| bootstrap | 初期構築する |
| emit | イベントを発火する |
3. 更新・変更(UPDATE系)40語
| 英語 | 日本語の意味 |
|---|---|
| update | 更新する |
| edit | 編集する |
| modify | 修正する(部分的) |
| change | 変更する |
| replace | 入れ替える |
| revise | 改訂する |
| adjust | 調整する |
| rebuild | 再構築する |
| upgrade | アップグレードする |
| patch | 修正パッチを当てる |
| fix | 修正する |
| correct | 正す |
| improve | 改善する |
| optimize | 最適化する |
| refresh | 再読み込みする |
| rename | 名前変更する |
| rewrite | 書き換える |
| clean | 清掃・整理する |
| purge | 不要物を削除する |
| tune | 調整する |
| activate | 有効化する |
| apply | 適用する |
| merge | 結合する |
| adapt | 変換/適応する |
| reshape | 形を整える |
| swap | 交換する |
| configure | 設定する |
| toggle | 切り替える |
| refactor | リファクタリングする |
| transform | 変換する |
| convert | 変換する |
| resize | サイズ変更する |
| recalculate | 再計算する |
| reload | 再読み込みする |
| renew | 更新する |
| calibrate | 調整する |
| rollback | 巻き戻す |
| undo | 元に戻す |
| retry | 再試行する |
4. 削除・除去(DELETE系)30語
| 英語 | 日本語の意味 |
|---|---|
| delete | 削除する |
| remove | 除去する |
| erase | 消去する |
| clear | クリアする |
| drop | 落とす/削除する |
| detach | 切り離す |
| discard | 破棄する |
| eliminate | 排除する |
| destroy | 破壊する |
| terminate | 終了する |
| purge | 一掃する |
| wipe | 消し去る |
| cleanUp | 後片付けする |
| unload | 除去する |
| unlink | 連携解除 |
| kill | 強制終了する |
| abort | 中断する |
| dismantle | 分解する |
| invalidate | 無効にする |
| reset | 初期化する |
| withdraw | 取り下げる |
| deactivate | 無効化する |
| disable | 使用不可にする |
| stop | 停止する |
| collapse | たたむ(UIなど) |
| truncate | 先頭以外消す/切り捨て |
| rollback | 巻き戻す |
| unsubscribe | 購読解除する |
| archive | アーカイブする |
5. 検証・判定(VALIDATE系)30語
| 英語 | 日本語の意味 |
|---|---|
| validate | 妥当性チェックする |
| verify | 正当性を検証する |
| check | 確認する |
| ensure | 保証する |
| confirm | 確認する |
| assert | 主張(テストで使用) |
| compare | 比較する |
| detect | 検知する |
| test | テストする |
| audit | 監査する |
| examine | 精査する |
| evaluate | 評価する |
| judge | 判断する |
| review | レビューする |
| scan | 走査する |
| qualify | 適格性を判定する |
| authenticate | 認証する |
| authorize | 認可する |
| inspect | 点検する |
| measure | 測定する |
| assess | 評価する |
| filter | 絞り込む |
| approve | 承認する |
| deny | 拒否する |
| identify | 特定する |
| classify | 分類する |
| benchmark | 指標で比較する |
| score | 点数化する |
| estimate | 推定する |
6. 計算・分析(CALCULATE系)20語
| 英語 | 日本語の意味 |
|---|---|
| calculate | 計算する |
| compute | 計算する(数学的) |
| sum | 合計する |
| count | カウントする |
| estimate | 見積もる |
| analyze | 分析する |
| evaluate | 評価する |
| measure | 測定する |
| forecast | 予測する |
| predict | 予測する |
| aggregate | 集計する |
| approximate | おおよそ計算する |
| derive | 導き出す |
| simulate | シミュレーションする |
| model | モデル化する |
| optimize | 最適化する |
| calibrate | 調整する |
| assess | 評価する |
| project | 予測・投影する |
| rank | 順位付けする |
7. 通信・IO(SEND系)20語
| 英語 | 日本語の意味 |
|---|---|
| send | 送信する |
| receive | 受信する |
| post | 投稿/送信する |
| upload | アップロードする |
| download | ダウンロードする |
| transmit | 送信する |
| broadcast | 放送・一斉送信する |
| notify | 通知する |
| alert | 警告する |
| announce | 公表する |
| 印刷する | |
| export | 出力する |
| import | 取り込む |
| emit | イベントを出す |
| forward | 転送する |
| sync | 同期する |
| fetch | 取得する |
| connect | 接続する |
| request | 要求する |
| reply | 返信する |
関数名の悪い例集(補強版)
— 具体例+改善例+理由つき —
関数名の“悪い例”は、実際の現場でよく見られるものに絞って整理する。
可読性・保守性・チーム開発の観点から、以下のような名前は避けるべきである。
1. 抽象的すぎて意味が分からない系
| 悪い例 | 問題点 | 改善例 |
|---|---|---|
| doProcess() | 何をする処理か全く伝わらない | calculateSales(), importCsv(), updateUserStatus() |
| run() | 「実行」では目的が曖昧 | executeBatch(), startService() |
| process() | 意味が広すぎる | processOrder(), processPayment() |
| handle() | 何を扱う?曖昧 | handleError(), handleLoginRequest() |
| exec() | 何を execute? | executeInvoiceExport() |
2. 目的語なしで動作が不明な系
| 悪い例 | 問題点 | 改善例 |
|---|---|---|
| save() | 何を保存? | saveUserInfo(), saveSettings() |
| delete() | 何を削除? | deleteUser(), deleteCartItem() |
| update() | 何を更新? | updateOrderStatus() |
| get() | 何を取得? | getUserById(), getOrderList() |
3. 名詞だけで“動作”が分からない系
| 悪い例 | 誤解を招く理由 | 改善例 |
|---|---|---|
| user() | 「ユーザーの何?」 | getUser(), createUser() |
| order() | 「注文をどうする?」 | updateOrder(), deleteOrder() |
| log() | 記録するのか読むのか不明 | writeLog(), readLog() |
| status() | 状態を返す?更新? | getStatus(), updateStatus() |
4. 処理内容が曖昧・ブラックボックス化している系
| 悪い例 | 問題点 | 改善例 |
|---|---|---|
| doIt() | ITとは何?命令口調で意味不明 | retryConnection(), refreshCache() |
| work() | 何の作業? | updateInventory(), buildReport() |
| stuff() | “いろいろ”では意味がない | cleanupTempFiles(), syncUserData() |
| manageData() | manage は範囲が広すぎる | validateData(), saveData(), mergeData() |
5. 文法的に不自然な系(名詞+名詞だけ等)
| 悪い例 | 問題 | 改善例 |
|---|---|---|
| userList() | 関数名が「ユーザー一覧」=名詞 | getUserList() |
| emailSend() | 素直に「sendEmail()」にするべき | sendEmail() |
| errorLog() | 書く?読む?不明 | writeErrorLog(), readErrorLog() |
6. 状態を返すBoolean関数の命名ミス
| 悪い例 | 問題点 | 改善例 |
|---|---|---|
| checkActive() | check は boolean の返り値に不向き | isActive() |
| validUser() | 動詞ではなく名詞=意味不明 | isValidUser() |
| existUser() | 英語的に不自然 | userExists() |
| enableFlag() | enable は動詞 → boolean向きではない | isEnabled() |
7. 否定形を使った読みづらい命名
| 悪い例 | 問題点 | 改善例 |
|---|---|---|
| isNotActive() | 二重否定で読みづらい | isActive()(値を逆にして返す) |
| notFoundUser() | 文法的にも崩れている | userNotFound(), userExists() |
| isDisable() | grammar NG | isDisabled() |
8. 略語が多すぎて読めない命名
| 悪い例 | 意味不明度 | 改善例 |
|---|---|---|
| getUsrInf() | user info とは分かるが読みにくい | getUserInfo() |
| updInvQty() | update inventory quantity の略… | updateInventoryQuantity() |
| chkFlg() | check flag の略は危険 | isValidFlag(), validateFlag() |
9. 「語順がめちゃくちゃ」系
| 悪い例 | 理由 | 改善例 |
|---|---|---|
| amountCalculate() | 日本語語順 → NG | calculateAmount() |
| pdfCreateReport() | 動詞が最後で不自然 | createReportPdf() |
| dataMergeUser() | 主語も目的語も逆 | mergeUserData() |
10. 汎用語を無理に使いすぎる系
| 悪い例 | 問題点 | 改善 |
|---|---|---|
| batch() | “バッチ”で何を? | runBatch(), executeBatch() |
| service() | サービスをどうする? | startService(), stopService() |
| core() | 中身が不明 | loadCoreData(), buildCoreIndex() |
11. 過去のレガシー癖が入った命名
| 悪い例 | 解説 | 改善例 |
|---|---|---|
| subMain() | VB時代の癖。意味がない | startApp() |
| main2(), main3() | バージョン番号は関数につけない | refineMain(), splitFunctions() |
| run2() | 「2」とは何? | runTask(), runBackupProcess() |
12. 実務で特に多い“要注意ワード”
以下は関数名にあると 高確率でレビューで指摘される単語:
- do
- process
- execute(単体)
- run(単体)
- handle(単体)
- work
- func
- util(関数に使うのはNG)
- logic(意味が広い)
- manage(範囲が広すぎる)
できるだけ具体的にする:
悪い例:
manageUser()
良い例:
createUser()
updateUser()
deleteUser()
assignUserRole()
13. 「もっと悪い例+改善例」まとめ
以下は読み返すだけで“悪い命名”が直感的に理解できるセット。
| 悪い命名 | 何が悪い? | 改善案 |
|---|---|---|
| doMain() | 何のmain? | startApplication() |
| utilProcess() | 名前が広すぎる | convertData(), cleanUpCache() |
| aaa() | ゴミ名 | (即削除) |
| k() | 不明。英語ですらない | (即削除) |
| commonProcess() | 何が共通? | validateUser(), formatDate() |
| check2() | 何をチェック?なぜ2? | validateOrder(), checkPermission() |
14. 関数名レビュー時のチェックリスト(おまけ)
関数名が良いか悪いかを1秒で判断できるチェックリスト。
| チェック項目 | YesならOK |
|---|---|
| 動詞から始まっているか | ✔ |
| 目的語が明確か | ✔ |
| Booleanなら is/has/can を使っているか | ✔ |
| 処理内容が具体的か | ✔ |
| 略語を使いすぎていないか | ✔ |
| 名詞のみの名前になっていないか | ✔ |
| 否定形や二重否定を避けているか | ✔ |
15. まとめ
悪い命名を避けるコツはシンプル:
コメント