保存版！プログラミング英単語リファレンス大全

この記事はNuco Advent Calendar 2024の22日目の記事です。
 # **保存版！プログラミング英単語リファレンス大全**
::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=e943df404b56f1126)まで。
:::

プログラミングをやっていると、特に初級から中級者のうちは、英語での単語の選び方という問題に必ず突き当たります。自分でコードを書くときや他人のコードを読むとき、英語の表現に誤りがあると気になるものです。
また、IT業界に入ったばかりの頃、チーム開発を行っていると、ミーティング中に飛び交うカタカナや英単語に「何を話しているのか全然わからない…」と戸惑った経験が多くの方にあるのではないでしょうか。
本記事では、コードをより明確で保守性の高いものにするための英単語の使い方を、包括的に解説していきます。初心者からベテランまで、すべての開発者に役立つ実践的なリファレンスです。

**本ガイドの特徴**
・動詞、名詞、形容詞から略語まで、カテゴリ分けして体系的に整理しました
・実際のコーディングシーンに即して使い分けられるよう具体例と解説を記しました
・チーム開発での共通理解を促進する命名紹介
・技術領域別の専門用語集

このガイドは、美しいコードを書きたい方やチームの開発効率を向上させたい方に向けて、英単語選びのレベルアップを目指します。これを通じて、他の開発者にも理解しやすい適切な英単語を使ったコードを書く手助けができれば幸いです。

# 目次
- [動詞編](#動詞編)
- [名詞編](#名詞編)
- [形容詞・状態表現編](#形容詞・状態表現編)
- [略語編](#略語編)
- [慣用句編](#慣用句編)
- [実践的な命名編](#実践的な命名編)
- [コミュニケーション編
](#コミュニケーション編
)
- [技術領域別用語編](#技術領域別用語編)
- [その他](#その他)

## 動詞編
動詞はプログラムの機能や目的を明確に示すため、重要な役割を果たします。また、オブジェクト指向においてメソッド名に使われます。以下に動作とその意味を表にまとめています。命名に関する実例を後述します。
| 単語        | 意味                                                |
|-------------|-----------------------------------------------------|
| get         | 値を取得する                                       |
| set         | 値を設定する                                       |
| add         | 要素を追加する                                     |
| remove      | 要素を削除する                                     |
| is          | (オブジェクトが)期待する状態になっているか        |
| can         | (オブジェクトが)期待する動作をできるか           |
| should      | (呼び出し側が)ある命令を実行したほうがよいか     |
| has         | (オブジェクトが)期待するデータ・プロパティを持っているか |
| needs       | (呼び出し側が)ある命令を実行する必要があるか     |
| create      | 新しいオブジェクトや要素を作成する                |
| update      | 既存の値やデータを更新する                         |
| delete      | データやオブジェクトを完全に削除する               |
| check       | 条件や状態を確認する                               |
| validate    | データや入力の妥当性を検証する                     |
| initialize  | オブジェクトや変数を初期化する                     |
| convert     | あるデータ型や形式から別のものに変換する          |
| compare     | 2つの値や要素を比較する                            |
| find        | 特定の条件に合致する要素を探す                     |
| filter      | 特定の条件に基づいて要素を絞り込む                 |
| merge       | 複数のデータや要素を結合する                       |
| sort        | データや要素を特定の順序に並べ替える              |
| parse       | テキストやデータを解析し、構造化する               |
| clone       | オブジェクトや要素の完全なコピーを作成する        |
| reset       | 値や状態を初期状態に戻す                           |
| duplicate    | オブジェクトや要素の複製を作成する                |
| synchronize | 複数のデータや要素を同期させる                    |
| aggregate   | 複数のデータをまとめて集計する                     |
| iterate     | 要素を繰り返し処理する                             |
| encapsulate | データや機能をカプセル化する                       |
| expose      | データや機能を外部に公開する                       |
| expand      | データや要素を拡張する                             |
| contract    | データや要素を縮小する                             |
| traverse    | データ構造を横断する                               |
| optimize    | 処理やデータを最適化する                           |
| cache       | データをキャッシュする                             |
| encrypt     | データを暗号化する                                 |
| decrypt     | データを復号化する                                 |
| notify      | 状態や変更を通知する                               |
| schedule    | ある処理をスケジュールする                         |
| batch       | 複数の処理をまとめて実行する                       |
| archive      | データをアーカイブする                             |
| restore     | データを復元する                                   |
| implement   | 機能や処理を実装する                               |
| simulate    | 処理や状況をシミュレーションする                   |
| analyze     | データや状況を分析する                             |
| deprecate    | 古い機能などの使用を非推奨にする |
| improve      | 改善する    |
| extract      | 必要なデータを抽出する    |
| avoid        | コードの実行などを避ける      |
| define       | 変数や関数、クラスなどの構造や仕様を定義する    |
| rewrite      | 既存のコードやドキュメントを改善するために書き直す    |
| drop         | データベースのテーブルや列、コードの不要な部分などを削除する    |
| terminate         | (ネットワークへの接続などを)終わらせる    |
| generate         | 生成する    |
| suspend         | 処理を一時中断する    |
| break     | 中断する(一連の処理から抜け出したいとき) |

## 名詞編
名詞は、データやオブジェクトの状態や属性を示すために使われます。
また、オブジェクト指向においてクラス名に使われます。
以下に名詞とその意味を表にまとめています。命名編で実際にどう使われているかを紹介します。
| 単語        　| 意味                                     |
|-------------------|------------------------------------------|
| array              | 同じデータ型の要素を格納するデータ構造   |
| list               | 順序付けられた要素の集合                 |
| queue              | 先入れ先出し（FIFO）方式のデータ構造     |
| class             | オブジェクト指向プログラミングの設計図   |
| interface         | クラスが実装すべきメソッドの定義         |
| inheritance       | あるクラスが別のクラスの特性を引き継ぐこと |
| server            | クライアントからのリクエストに応じてサービスを提供するコンピュータ |
| client             | サーバーからサービスを受け取る側のコンピュータ |
| database           | データを整理して保存するシステム         |
| date_created      | 作成日                                   |
| timestamp          | 特定の時点を示すデータ                    |
| UTC                | 協定世界時（Coordinated Universal Time） |
| object             | データと機能を持つ実体                   |
| property           | オブジェクトが持つ属性                   |
| method              | オブジェクトが持つ機能                   |
| function            | 特定の処理を実行する手続き               |
| variable            | 値を格納するための名前付きのメモリ領域   |
| constant            | 値が変更されない定数                     |
| exception         | エラーや異常を示すオブジェクト           |
| module            | 関連する機能やデータをまとめた単位       |
| framework         | アプリケーション開発の基盤となる構造    |
| prototype          | オブジェクトの雛形                       |
| algorithm        | 特定の問題を解決するための手順や計算方法 |
| library          | 再利用可能なコードの集まり               |
| cache              | データの一時的な保存場所                 |
| stack             | 後入れ先出し（LIFO）方式のデータ構造     |
| transaction        | 一連の処理を管理する単位                 |
| schema            | データベースの構造を定義する設計図      |
| query            | データベースに対する要求                 |
| index             | データの検索を効率化するための構造       |
| session           | ユーザーとサーバー間の一時的な接続情報  |
| protocol         | データ通信のルール                        |
| endpoint          | APIやサービスにおける接続点              |
| response         | サーバーからの返答                       |
| request          | サーバーに送る要求                       |
| payload          | メッセージやデータの本体                 |
| identifier       | 特定のオブジェクトを識別するための値     |
| resource         | 利用可能なデータやサービス               |
| attribute       | オブジェクトの特性を示す情報             |
|configuration     | システムの設定や構成                     |
| dependency      | 他の要素に依存する関係                   |
| lifecycle       | オブジェクトやプロセスの生存期間         |
| callback        | 処理が完了した後に呼び出される関数      |
| event           | 発生する出来事                             |
| handler        | イベントを処理するための関数             |
| listener        | イベントを監視するための関数             |


## 形容詞・状態表現編
形容詞は、プログラムの機能や特性を具体的に説明するために重要です。
また、オブジェクト指向において、クラスやオブジェクトの属性を定義する際に使われます。
以下に形容詞や状態表現とその意味を表にまとめています。
| 単語        | 意味                                   |
|-------------|----------------------------------------|
| available   | 利用可能                               |
| valid       | 有効                                   |
| enabled     | 有効化された                           |
| invalid     | 無効                                   |
| corrupt     | 破損した                               |
| broken      | 壊れた                                 |
| fast        | 速い                                   |
| efficient    | 効率的                                 |
| optimized   | 最適化された                           |
| redundant   | 冗長な                                 |
| secure      | 安全な                                 |
| unstable    | 不安定な                               |
| consistent   | 一貫した                               |
| flexible    | 柔軟な                                 |
| resilient    | 回復力のある                           |
| scalable    | 拡張可能な                             |
| accessible  | アクセス可能な                         |
| transparent | 透明な                                 |
| synchronous | 同期的な                               |
| asynchronous | 非同期的な                             |
| compatible  | 互換性のある                           |
| persistent  | 永続的な                               |
| dynamic     | 動的な                                 |
| static      | 静的な                                 |
| modular     | モジュール化された                     |
| interactive | インタラクティブな                     |
| comprehensive | 包括的な                             |
| intuitive   | 直感的な                               |
| robust      | 堅牢な                                 |
| lightweight  | 軽量な                               |
| portable    | 移植可能な                             |
| critical    | 重要な                                 |
| trivial     | 些細な                                 |
| mandatory   | 義務的な                               |
| optional    | 任意の                                 |
| temporary   | 一時的な                               |
| permanent    | 永久的な                               |
| logical     | 論理的な                               |
| arbitrary    | 任意の                                 |
| volatile    | 揮発性の                               |

## 略語編
略語はプログラムや技術における用語を簡潔に表現するために重要な役割を果たします。特に、開発者間のコミュニケーションを円滑にする役割を果たします。以下に一般的な略語とその意味を表にまとめています。
| 単語   | 正式名称                                      | 意味                                       |
|--------|-----------------------------------------------|--------------------------------------------|
| var    | Variable                                      | 変数                                       |
| func   | Function                                      | 関数                                       |
| param  | Parameter                                     | パラメータ                                 |
| HTTP   | HyperText Transfer Protocol                    | ハイパーテキスト転送プロトコル            |
| API    | Application Programming Interface              | アプリケーションプログラミングインターフェース |
| JSON   | JavaScript Object Notation                     | JavaScriptオブジェクト表記                 |
| URL    | Uniform Resource Locator                       | 統一資源識別子                             |
| XML    | eXtensible Markup Language                    | 拡張可能なマークアップ言語                 |
| CSS    | Cascading Style Sheets                         | カスケーディングスタイルシート              |
| SQL    | Structured Query Language                      | 構造化クエリ言語                           |
| DOM    | Document Object Model                          | ドキュメントオブジェクトモデル            |
| IDE    | Integrated Development Environment             | 統合開発環境                               |
| OOP    | Object-Oriented Programming                   | オブジェクト指向プログラミング            |
| MVC    | Model-View-Controller                          | モデル-ビュー-コントローラー               |
| SDK    | Software Development Kit                        | ソフトウェア開発キット                     |
| REST   | Representational State Transfer                | 表現状態遷移                               |
| CRUD   | Create, Read, Update, Delete                  | 作成、読み取り、更新、削除                 |
| SSL    | Secure Sockets Layer                           | セキュアソケットレイヤー                   |
| TLS    | Transport Layer Security                       | トランスポート層セキュリティ              |
| VPN    | Virtual Private Network                        | 仮想プライベートネットワーク               |
| IoT    | Internet of Things                             | モノのインターネット                       |
| AI     | Artificial Intelligence                        | 人工知能                                   |
| ML     | Machine Learning                               | 機械学習                                   |
| DB     | Database                                       | データベース                               |
| KPI    | Key Performance Indicator                      | 重要業績評価指標                           |
| UX     | User Experience                                | ユーザーエクスペリエンス                   |
| UI     | User Interface                                 | ユーザーインターフェース                   |
| CLI    | Command Line Interface                         | コマンドラインインターフェース            |
| SaaS   | Software as a Service                          | サービスとしてのソフトウェア               |
| PaaS   | Platform as a Service                          | サースとしてのプラットフォーム           |
| IaaS   | Infrastructure as a Service                   | サービスとしてのインフラストラクチャー    |
| NoSQL  | Not Only SQL                                  | SQLだけではない                            |
| RAM    | Random Access Memory     | ランダムアクセスメモリ                     |
| CPU    | Central Processing Unit                | 中央処理装置               |
| GPU    | Graphics Processing Unit     | グラフィックス処理装置                     |
| RFID   | Radio-Frequency Identification    | 無線周波数識別                            |
| DHCP   | Dynamic Host Configuration Protocol | 動的ホスト構成プロトコル                  |
| DNS    | Domain Name System                 | ドメインネームシステム                     |
| FTP    | File Transfer Protocol              | ファイル転送プロトコル             
| SPA    |Single Page Application              | 一つのページで動作するウェブアプリケーション |
|  CMS   |Content Management System            | コンテンツを管理するためのシステム       |


## 慣用句編
慣用句はプログラムや技術において特定の意味を持つ表現であり、開発者間で共通理解を深め、コードの意図や動作を明確に伝えるために役立ちます。以下に慣用句とその意味を表にまとめています。
| 単語       | 意味                                         |
|------------|----------------------------------------------|
| callback   | 処理が完了した際に呼び出される関数         |
| timeout    | 処理が一定時間内に完了しなかった場合の状態 |
| workflow   | 一連の処理の流れを表す                     |
| boilerplate| 繰り返し使われるコードのひな形             |
| event loop | 非同期処理を管理する仕組み                  |
| promise    | 処理の完了を表すオブジェクト                |
| middleware | リクエストとレスポンスの間で処理を行う機能 |
| deadlock   | 複数のプロセスが互いに待ち状態になること   |
| race condition | 複数のプロセスが同時にリソースにアクセスする状態 |
| API gateway| APIのエンドポイントを管理するコンポーネント |
| load balancer | トラフィックを分散させる仕組み         |
| version control | ソースコードの変更履歴を管理するシステム |
| dependency injection | 依存関係を外部から注入する手法   |
| sandbox    | 安全にコードを実行するための環境          |
| heuristic  | 経験則に基づく問題解決の手法              |
| fallback   | 失敗時に実行される代替処理                |
| throttling | 処理速度を制限する手法                    |
| debouncing | 繰り返し発生するイベントを抑制する手法    |
| hotfix     | 緊急の修正を行うためのパッチ              |
| versioning | 異なるバージョンを管理する手法            |
| concurrency | 同時に処理を行うこと                     |
| encapsulation | データとメソッドをまとめること        |
| abstraction | 重要な情報だけを提示すること              |
| polymorphism | 同じインターフェースで異なる処理を行う  |
| scalability | 拡張性を持つこと                         |
| redundancy  | 冗長性を持たせること                      |
| encapsulate | 特定の機能を隠すこと                      |
| latency     | 処理の遅延                                 |
| integration  | 異なるシステムやコンポーネントを結合すること |
| encapsulated | 隠蔽されている状態                        |
| iteration   | 繰り返し処理                               |
| strategy    | 特定の目標を達成するための計画           |
| simplification | 複雑なものを単純化すること              |


## 実践的な命名編
適切な命名はコードの可読性を向上させ、他の開発者が意図を理解しやすくします。以下に、動詞や名詞を含め、状況別に用いられるメソッド名、クラス名、NG例の単語とその使用例をまとめています。

### メソッド名
#### 真偽値を返すメソッド
真偽値を返すメソッドは、呼び出し元のコードに判断を任せる役割を果たすため、わかりやすい命名が重要です。以下のポイントに注意してメソッドを命名しましょう。

・対象を明確にする
何についての真偽値かを具体的に表現します。曖昧な名前ではなく、命令や状態を正確に示す名前を使用しましょう。
・文法的に自然な命名を心がける
メソッド名は、質問文や文章の一部のように読めると直感的です。例えば、「isEnabled」は「有効かどうか？」という質問として自然に理解できます。
・プレフィックスの選択
以下の単語(プリフィックス)を使い分けることで、メソッドの意図が明確になります。

| 単語   | 意味                                                  | 例               |
|--------|-------------------------------------------------------|------------------|
| needs  | (呼び出し側が)ある命令を実行する必要があるかどうか | needsUpdate       |
| can    | (オブジェクトが)期待する動作をできるかどうか         | canExecute        |
| has    | (オブジェクトが)期待するデータ・プロパティを持っているかどうか | hasChildren       |
| should | (呼び出し側が)ある命令を実行したほうがよいかどうか | shouldProceed     |
| is     | (オブジェクトが)期待する状態になっているかどうか     | isAvailable       |
| was    | (オブジェクトが)過去に特定の状態であったかどうか   | wasInitialized     |

#### 必要に応じてしか実行されない処理をするメソッド
このカテゴリのメソッドは、処理の条件に柔軟性を持たせる役割を果たします。特に、失敗の可能性がある処理や、状況に応じて実行がスキップされる処理では、明確な命名がコードの意図を伝える助けになります。以下のポイントに注意してメソッドを命名しましょう。

・実行条件や失敗時の動作を明確にする
名前に条件や挙動を反映することで、メソッドがどのように動作するかを示します。
・期待される挙動を表す
メソッドを呼び出す側が処理結果を予測しやすくなるように、結果や失敗時の挙動を明確にしましょう。
| 単語     | 意味                                                | 例               |
|----------|-----------------------------------------------------|------------------|
| might    | (オブジェクトが)可能性があるかどうか                    | mightFetch        |
| force    | 強制的に実行を試みる。エラーは例外ないし返り値で表す | forceUpdate       |
| OrElse   | 実行を試み、失敗した場合は引数で指定した値を返す | findOrElse        |
| IfNeeded | 必要なら実行し、必要なければ何もしない           | processIfNeeded   |
| OrDefault | 実行を試み、失敗した場合は既定値を返す       | retrieveOrDefault  |
| try      | 実行を試み、失敗した場合は例外を飛ばすか、エラーコードを返す | tryConnect        |
| mightFail| 実行するが、失敗の可能性がある                   | mightFailOperation|

#### 非同期処理に関連するメソッド
このカテゴリのメソッドは、非同期処理に関連した挙動や操作を明確に表現するものです。非同期処理は並列性を活用するために広く使われていますが、命名規則を統一することで、コードの意図や振る舞いを直感的に理解しやすくなります。以下のポイントに注意してメソッドを命名しましょう。

・非同期性を明示
非同期処理であることをメソッド名に明示することで、同期的処理との違いをわかりやすくします。また、以下のポイントに注意しましょう。
・状態や挙動を反映
非同期処理の開始、実行、停止など、処理の状態を表現する名前を使用します。
・背景のコンテキストを補足
バックグラウンドでの実行や、スレッドのブロッキングなど、具体的な挙動を命名に反映させます。
| 単語     | 意味                                                  | 例               |
|----------|-------------------------------------------------------|------------------|
| Async    | 非同期メソッド                                        | uploadAsync       |
| Sync     |（対応する非同期メソッドが存在する）同期メソッド   | downloadSync      |
| execute  | 非同期処理を実行する                               | executeCommand    |
| run      | 非同期タスクを実行する                               | runTask           |
| start    | 非同期処理を開始するメソッド   | startProcess      |
| await    | 非同期処理の完了を待つ                             | awaitResponse     |
| stop     | 非同期処理を中止するメソッド              | stopService       |
| cancel   | 非同期処理の実行を止める                           | cancelOperation   |
| InBackground | バックグラウンドスレッドで実行されるメソッド   | runInBackground   |
| schedule | ジョブやタスクをキューに積む                     | scheduleTask      |
| blocking | スレッドをブロックするメソッド                     | blockingFetchData |
| post     | 非同期処理をキューに追加し、指定された処理を後で実行するためのメソッド| postNotification   |

#### コールバックメソッド
コールバックメソッドは、特定の処理やイベントの前後、成功や失敗時に実行される追加の処理を記述するためのメソッドです。これらのメソッドはコードの拡張性やカスタマイズ性を高めるために広く使われています。以下のポイントに注意してコールバックメソッドを命名しましょう。

・処理のタイミングを明示
メソッド名で、その処理が「前」「後」「成功時」など、どのタイミングで実行されるかを明確にします。
・イベントに応じた命名
何がトリガーでそのメソッドが実行されるかを、命名の中で表現します。
・汎用性と一貫性
コールバックメソッドは複数箇所で使用されることが多いため、一貫性のある命名規則を採用することで、可読性と理解のしやすさが向上します。

| 単語     | 意味                                                  | 例               |
|----------|-------------------------------------------------------|------------------|
| should   | 何かを起こしてもいいか確認するとき実行される       | shouldRetry      |
| pre      | 処理が始まる前に実行される                          | preProcess       |
| will     | 処理が始まる予定の時に実行される                    | willSave         |
| post     | 処理が完了した後に実行される                        | postSubmit       |
| on       | 特定のイベントが発生した時に実行される              | onError          |
| after    | 特定の処理が終わった後に実行される                  | afterLoad        |
| did      | 処理が完了した後に実行される                        | didFinish        |
| before    | 特定の処理が始まる前に実行される                    | beforeRender      |
| onSuccess| 処理が成功した時に実行される                        | onSuccess        |
| onFailure| 処理が失敗した時に実行される                        | onFailure        |


#### コレクションの操作に関するメソッド
コレクション操作に関連するメソッドは、リストや配列、辞書などのコレクションデータ構造に対して要素を追加・削除する操作を行うために使用されます。これらのメソッドは、操作の具体的な内容を命名で明確にすることが重要です。
| 単語      | 意味                                                  | 例               |
|-----------|-------------------------------------------------------|------------------|
| push      | スタックの先頭に追加する                            | pushData         |
| insert    | n番目に追加する                                    | insertElement     |
| append    |コレクションの末尾に要素を追加する      | appendToList     |
| prepend    |コレクションの先頭に要素を追加する      | appendToList     |
| remove    | 要素を削除する                                     | removeUser       |
| find      | 条件にあうものを探す                               | findElement      |
| enqueue   | 行列末尾に追加する                               | enqueueRequest    |
| pop       | スタックの先頭を取り出して取り除く                | popElement       |
| dequeue   | 行列先頭を取り出して取り除く                     | dequeueMessage    |
| contains  | 指定したものと同じオブジェクトを持っているかどうか | containsItem     |
| put       | キーに対応する要素を追加する                       | putEntry         |
| peek      | スタックの先頭を取り出す(スタックからは取り除かない) | peekValue        |
| clear     | コレクション内の全ての要素を削除する               | clearCollection   |

#### 状態に関するメソッド
状態に関するメソッドは、オブジェクトやシステムの現在の状態が正しいかどうかをチェックするためのメソッドです。これらは、オブジェクトの整合性を保つためや、システムが期待通りに動作しているかを確認する際に使われます。状態に関するメソッドは、エラーを防ぐために早期に不整合を発見したり、条件が満たされていない場合に適切な処理を行うために重要です。
| 単語             | 意味                                                  | 例      |
|------------------------|-------------------------------------------|---------|
| validate     | 正しい状態かどうかをチェックし、そうでない場合は例外を投げるかエラーコードを返す | validateData    |
| ensure   | 期待する状態かどうかをチェックし、そうでない場合は例外を投げるかエラーコードを返す | ensureValidState  |
| isValid  | 現在の状態が有効かどうかを確認する                   | isValidUser      |

#### オブジェクトのライフサイクルを扱うメソッド
オブジェクトのライフサイクルを扱うメソッドは、オブジェクトの生成から破棄までの一連の処理を管理するためのメソッドです。オブジェクトが適切に初期化され、使用され、最後に適切にクリーンアップされることを保証します。これらのメソッドは、リソースを効率的に使用し、メモリリークや予期しない動作を防ぐために重要です。
| 単語        | 意味                                                  | 例               |
|-------------|-------------------------------------------------------|---------------|
| destroy     | オブジェクトを完全に削除する                          | destroyInstance    |
| dispose     | リソースを解放し、オブジェクトを使用不可にする           | disposeResources   |
| abandon     | デストラクタの代替                                  | abandonResource    |
| initialize  | 初期化。遅延初期化のメソッドとしても。            | initializeObject  |
| finalize    | 最終処理を行う                                     | finalizeProcess    |

#### ファクトリーメソッド
ファクトリーメソッドは、オブジェクトを生成する責任を持つメソッドです。これにより、オブジェクト生成のロジックを一元化し、クライアントコードがどのようにインスタンスを作成するかに依存しないようにします。特に、シングルトンパターンや特定の条件に応じて異なる型のオブジェクトを生成する場合に役立ちます。
| 単語        | 意味                                                  | 例               |
|-------------|------------------------------------------------|------------------|
| create      | 新しいインスタンスを生成する                         | createInstance    |
| build       | オブジェクトを組み立てる                             | buildProduct      |
| getInstance  | シングルトンインスタンスを取得する                  | getInstance       |
| factory     | 特定の条件に基づいてインスタンスを生成する         | factoryMethod     |
| initialize   | 初期化されたインスタンスを生成する                  | initializeObject  |


#### データに関するメソッド
データに関するメソッドは、データの作成、保存、更新、変換などを行うためのメソッドです。これらのメソッドはデータを永続化したり、データを変換する際に使用されます。システムが扱う情報を管理するために重要な役割を果たします。以下のポイントに注意してデータに関するメソッドを命名しましょう。

・処理内容の明示
メソッド名にデータの操作内容（作成、更新、変換など）を表現します。
・データの流れを意識
どのデータソースからどのデータに変換・更新・保存されるのかを明確にします。

| 単語     | 意味                                                  | 例               |
|----------|-------------------------------------------------------|------------------|
| update   | 既存のものを書き換える                             | updateProfile    |
| from     | 既存のものから新しく作る、あるいは別のデータから新しく作る | fromJson         |
| create   | 新しく作る                                          | createOrder      |
| save     | 保存する                                            | saveDocument     |
| to       | 変換する                                            | toXml            |
| fetch    | (リモートから)読み込む                             | fetchData        |
| load     | 読み込む                                            | loadSettings     |
| delete   | 削除する                                          | deleteFile       |
| remove   | 削除する                                          | removeItem       |
| new      | 新しく作る                                          | newProduct       |
| store    | 保存する                                            | storePreferences  |
| commit   | 保存する                                           | commitTransaction |
| apply    | 保存・適用する                                     | applySettings    |
| clear    | データを消す、あるいは初期状態に戻す              | clearCache       |
| reset    | データを消す、あるいは初期状態に戻す              | resetConfig      |
| export   | データをエクスポートする                           | exportData       |
| import   | データをインポートする                             | importData       |

#### 例外処理に関するメソッド
例外処理に関するメソッドは、プログラムの実行中に発生したエラーを捕捉し、適切に処理するためのメソッドです。これらのメソッドはエラーが発生した場合に、システムが予期せぬ動作をしないようにするために使用されます。例外処理の目的は、エラーを適切に扱い、システムの安定性を保つことです。以下のポイントに注意して例外処理に関するメソッドを命名しましょう。

・処理の目的を明示
エラーを捕捉する、投げる、処理するなど、何を行うかをメソッド名に含めます。
・エラーハンドリングの流れを意識
エラーを試み、捕捉し、最後に必ず実行する処理など、エラーハンドリングのフローに沿った命名を行います。
| 単語        | 意味                                                  | 例               |
|-------------|----------------------------------------------------|------------------|
| catch       | 例外を捕捉する                                      | catchException    |
| throw       | 例外を投げる                                        | throwError        |
| tryCatch    | 実行を試み、失敗時に例外を捕捉するメソッド         | tryCatchBlock     |
| handle      | 例外を処理する                                      | handleError       |
| finally     | 最後に必ず実行される処理                            | finallyCleanup     |

#### デリゲートメソッド
デリゲートメソッドは、処理を他のメソッドやオブジェクトに委譲するためのメソッドです。これらのメソッドは特定の処理を他の部分に任せることによって、コードの責任分担を明確にし、再利用性を高めるために使用されます。以下のポイントに注意してデリゲートメソッドを命名しましょう。

・委譲先の目的を示す
どの処理がどこに委譲されるのかをメソッド名で示します。
・処理の流れを意識する
メソッドが他の処理を呼び出す場合、その呼び出しがどのように行われるのかを明確にします。
・簡潔で明確な命名
委譲や転送、代理の役割をするメソッド名は簡潔で、意味がすぐにわかるように命名します。
| 単語        | 意味                                                  | 例               |
|-------------|----------------------------------------------------|------------------|
| delegate     | 他のメソッドやオブジェクトに処理を委譲する         | delegateTask      |
| forward      | メソッドの呼び出しを別のメソッドに転送する         | forwardRequest    |
| proxy        | 代理として機能するメソッド                           | proxyMethod       |
| handle       | イベントやリクエストを処理する                       | handleEvent       |
| call         | 指定されたメソッドを呼び出す                         | callDelegate      |

#### リフレクションに関するメソッド
リフレクションに関するメソッドは、プログラム実行時にオブジェクトの構造やプロパティ、メソッドなどのメタデータを動的に取得・操作するためのメソッドです。これらのメソッドは動的なクラス操作や柔軟なプログラミングを実現するために使われます。リフレクションを利用することで、型やメソッド、フィールドの情報を実行時に確認・変更することが可能です。以下のポイントに注意してリフレクション関連のメソッドを命名しましょう。

・目的に応じた命名
メソッドがどのようなリフレクションの操作を行うのか（プロパティ取得、メソッド呼び出し、型情報の取得など）を明確にします。
・動的性を示す
リフレクションは動的に情報を扱うため、メソッド名に「reflect」や「invoke」といった動的操作を示すキーワードを使用します。
| 単語        | 意味                                                  | 例               |
|-------------|-----------------------------------------------------|------------------|
| reflect     | オブジェクトのメタデータを取得する                  | reflectProperties  |
| invoke      | メソッドを動的に呼び出す                            | invokeMethod      |
| getType     | オブジェクトの型情報を取得する                      | getTypeInfo      |
| getField    | 特定のフィールドの情報を取得する                    | getFieldValue     |
| setProperty  | プロパティの値を設定する                            | setPropertyValue  |

#### プライベートメソッド
プライベートメソッドは、クラスやモジュール内でのみ使用され、外部からのアクセスを制限するメソッドです。これにより、クラスの外部コードが内部実装に依存しないようになり、コードの保守性や拡張性が向上します。プライベートメソッドは多くのプログラミング言語で、特定の命名規則やアクセス制御を使用して実装されます。以下のポイントに注意してプライベートメソッドを命名しましょう。

・内部処理を明示
メソッドが内部処理専用であることを示す名前を付けます。
・意味を持った名前
メソッドが担う役割（例えば補助的な処理や隠された機能）を名前に反映させます。
| 単語        | 意味                                                  | 例               |
|-------------|----------------------------------------------------|------------------|
| internal   | 内部処理専用のメソッド                               | internalLogic    |
| private    | 外部からアクセスできないプライベートメソッド       | privateHelper    |
| hidden     | 隠された機能を持つメソッド                          | hiddenFunction   |
| secret     | 特定の条件下でのみ利用されるメソッド                | secretOperation  |
| utility    | 便利な内部処理を提供するプライベートメソッド       | utilityMethod    | 


### クラス名
クラス名は、オブジェクト指向プログラミングにおいて、オブジェクトの役割や責任を明確に示すために使われます。クラス名は通常、そのクラスが持つ責任や提供する機能に基づいて命名され、可読性や理解しやすさを高めます。以下のポイントに基づいてクラス名を命名しましょう。

・役割の明示
クラスが何を管理・処理・提供するのかを名前で示します。
・名詞を使用
クラスは通常、名詞で表現され、オブジェクトの種類やその性質を示します。
・一般的な命名規則に従う
クラス名はキャメルケース（PascalCase）で始め、大文字で区切ります。
| 単語     | 意味                                              | 例               |
|----------|---------------------------------------------------|------------------|
| Manager  | 管理を行うオブジェクト                            | SessionManager    |
| Handler  | 特定の処理を担当するオブジェクト                  | ErrorHandler      |
| Service  | サービスを提供するオブジェクト                    | NotificationService|
| Repository | データの永続化を管理するオブジェクト              | UserRepository    |
| Controller | ユーザーの入力を処理するオブジェクト             | UserController    |
| State    | 状態を表すオブジェクト                            | ApplicationState  |
| Status   | 処理の状態を表すオブジェクト                      | TaskStatus        |
| Configuration | 設定を管理するオブジェクト                    | AppConfiguration   |
| Context  | 処理の文脈や環境を表すオブジェクト                | ExecutionContext   |
| Model    | データモデルを表すオブジェクト                    | UserModel        |
| Entity   | 特定のデータを表すオブジェクト                    | ProductEntity     |
| DTO      | データ転送オブジェクト                            | UserDTO          |
| Collection | 複数のデータを扱うオブジェクト                  | UserCollection    |
| Factory  | オブジェクトの生成を担当するクラス                | ConnectionFactory  |
| Provider | 特定のリソースを提供するオブジェクト              | ServiceProvider    |
| Adapter  | インターフェースの変換を行うオブジェクト          | DatabaseAdapter    |
| Listener | イベントを監視するオブジェクト                    | ClickListener      |


### NGな例
#### 使ってはいけない言葉
変数名やメソッド名は、明確で具体的な意味を持つことが重要です。曖昧で抽象的な名前を使用すると、コードの理解が難しくなり、結果として、メンテナンス性や拡張性を損なう可能性があります。以下に、そのような避けるべき言葉をまとめます。
| 単語        | 理由                                               | 改善例               |
|-------------|------------------------------------------------|----------------------|
| tmp        | 一時的な変数やメソッドを示すが、意味が不明確      | 	temporaryVariable|
| tempData    | 一時的なデータを示すが、具体性が欠ける             | sessionData          |
| foo         | 一時的な名前として使われるが、理解が困難           | calculateTotal       |
| bar         | 一時的な名前として使われるが、理解が困難          | fetchUserDetails     |
| thing       | 何を指しているのか不明で、意味が曖昧               | userProfile          |
| stuff       | 何を指しているのか不明で、意味が曖昧          | processOrder         |
| doSomething | 行動が不明確で、メソッドの目的が分からない         | executeTransaction   |
| data        | 抽象的すぎて、具体性に欠ける                       | userData             |

#### 使わないほうがよい言葉
使わないほうがよい言葉には、あまりにも抽象的で具体的な用途が見えづらいものがあります。これらの言葉は、文脈によって意味が変わることが多く、コミュニケーションを難しくします。以下に、そのような避けたほうがよい言葉をまとめます。
| 単語        | 理由                                               | 改善例               |
|-------------|-----------------------------------------------|----------------------|
| util        | 曖昧で、具体的な機能が不明                         | helperFunctions      |
| helper      | 曖昧で、具体的な機能が不明                         | stringFormatter      |
| process     | 曖昧で、具体的な機能が不明                | validateInput        |
notificationHandler   |
| widget      | 曖昧で、具体的な機能が不明                     | dashboardWidget      |
| generic     | 一般的すぎて、特定の用途に結びつかない             | userRepository       |
logError             |
| item        | 何を指すのか不明で、具体性に欠ける                 | orderItem            |


## コミュニケーション編
質の高いシステムを構築するには、コミュニケーションが重要です。
コードレビューや技術ドキュメントの作成、GitHubなどでのやり取りにおいて、適切な表現や用語を使用することで、円滑な協力を促進します。
### コードレビューでよく使う表現
コードレビューは、ソフトウェア開発において品質を確保するための重要なプロセスです。同僚やクライアントとコードレビューを行う際、またはプログラムや技術を通じてコミュニケーションをとる際に頻出する用語があります。テキストベースでの指摘やフィードバックが行われることも多く、特にGitHubなどのコードホスティングサービスではその傾向が顕著です。こうした用語に対する理解が不足していると「なんのことだろう」と戸惑うことがあるため、知識を持っておくことが重要です。以下に、コードレビューでよく使われる表現とその意味を説明します。


| 単語          | 意味                                             |
|---------------|--------------------------------------------------|
| refactor      | プログラムの内部構造を整理すること                   |
| bug           | プログラムのエラーや不具合                       |
| linting       | コードのスタイルや品質をチェックするプロセス     |
| review        | コードの品質やパフォーマンスを評価する行為       |
| syntax        | プログラムの文法や構文                           |
| documentation | コードの使用法や機能を説明する文章               |
| dependency    | プログラムが動作するために必要な外部ライブラリ     |
| assertion     | 条件が真であることを確認するためのテスト         |
| issue         | プロジェクト内の問題や課題                       |
| code smell    | 改善が必要なコードの兆候                         |
| test case     | 特定の条件下でのプログラムの動作を確認するためのテスト |
| coverage      | テストがコードのどの部分をカバーしているかの指標 |
| iteration     | 改善や変更を繰り返すプロセス                     |
| performance   | プログラムの効率や速度に関する評価               |
| scalability   | システムが負荷に応じて拡張できる能力             |
| framework     | 特定の目的のために設計されたソフトウェアの基盤   |
| algorithm     | 問題を解決するための手順や計算方法               |
| repository    | コードやファイルを管理する場所                    |
| syntax error  | 文法に関するエラー                               |
| configuration | プログラムの設定や環境に関する情報               |
| patch         | プログラムの修正を加えるための変更               |
| feature       | プログラムに追加される新しい機能                 |
| integration    | 他のシステムやモジュールとの統合                 |
| load testing  | システムの負荷テスト                             |
| user story    | ユーザーの要求やニーズを表現したストーリー       |
| debugging      | プログラムのエラーを見つけて修正する行為         |
| workflow      | 作業の流れや手順                                 |
| best practice  | 最も効果的な方法や手法                           |                      
| fatal  | システムの動作を停止させる致命的なエラーや障害を指す |


### 技術ドキュメントでよく使うフレーズ
技術ドキュメントでは、特定の情報を明確に伝えるために標準的なフレーズがよく使われます。以下は、よく使われるフレーズとその意味です。
| フレーズ                | 意味                                       |
|-------------------------|--------------------------------------------|
| Table of Contents       | ドキュメント内の各セクションのリスト     |
| Overview                | ドキュメントの内容を簡潔にまとめた説明   |
| Prerequisites           | 特定の操作や機能を使用するために必要な条件 |
| Installation Steps      | ソフトウェアやツールのインストール方法   |
| Usage Example           | 特定の機能やメソッドの具体的な例         |
| Note                    | 特定の操作に関する警告や留意点           |
| References              | 他のドキュメントやリソースへのリンク     |
| Version Information      | ソフトウェアやドキュメントのバージョンに関する情報 |
| Contributing            | ドキュメントの改善や修正に関与すること   |
| Test Cases              | 機能やプログラムの動作を確認するための条件 |
| Change Log              | ドキュメントの変更履歴                   |
| Glossary                | 特定の用語の説明や定義                   |
| Specifications          | ソフトウェアやシステムの機能や要件の詳細 |
| Implementation          | 機能を実装するプロセス                     |
| Limitations             | システムや機能の制約や限界                 |
| Compatibility           | ソフトウェアやシステムの互換性            |
| Deployment              | ソフトウェアを運用環境に配置すること       |
| Configuration           | プログラムの設定に関する情報               |
| Architecture            | システムやソフトウェアの構造               |
| Performance Metrics     | システムのパフォーマンスを測定する指標     |
| Troubleshooting          | 問題解決のための手順や方法                 |
| Security Considerations  | セキュリティに関する考慮事項               |
| Best Practices          | 最も効果的な方法や手法                     |
| Use Case                | 特定のシナリオにおけるシステムの使用例     |
| Workflow                | 作業の流れや手順                           |
| System Requirements      | ソフトウェアが動作するために必要な条件     |
| Release Notes           | リリースに関する情報や変更点               |
| API Documentation       | APIの使用法や仕様に関する情報               |
| Integration Testing      | システムの統合に関するテスト               |
| Customization           | ソフトウェアの設定や変更                   |
| End User License Agreement | エンドユーザー向けのライセンス契約       |
| Data Migration          | データを新しいシステムに移行するプロセス   |
| Scalability             | システムが負荷に応じて拡張できる能力       |
| User Acceptance Testing  | ユーザーによる受け入れテスト               |
| Documentation Standards  | ドキュメント作成のための基準               |

### GitHub等でのやり取りで使う単語
GitHubやその他のバージョン管理プラットフォームでのやり取りでは、チームやプロジェクトの進行をスムーズにするために特定の用語が使われます。これらの用語は、リポジトリの管理やコードの変更、タスクの追跡など、ソフトウェア開発におけるコラボレーションを効率化するために重要です。以下に、その代表的な単語とその意味を説明します。
| 単語                  | 意味                                       |
|-----------------------|--------------------------------------------|
| Repository            | コードやファイルを管理する場所            |
| Branch                | コードの変更を行うための分岐              |
| Commit                | 変更をバージョン管理システムに保存すること |
| Merge                 | 異なるブランチの変更を統合すること        |
| Pull Request          | 変更を提案するためのリクエスト            |
| Review                | 提案された変更を評価する行為              |
| Clone                 | リモートリポジトリをローカルにコピーすること |
| Fork                  | 他のリポジトリをコピーして独自の変更を行うこと |
| Issue                 | プロジェクト内の問題や課題                |
| Label                 | IssueやPull Requestにタグを付けること      |
| Milestone             | プロジェクトの特定の目標や期限を設定すること |
| Conflict              | 異なる変更が衝突する状態                  |
| Changelog             | 変更履歴を記述したドキュメント            |
| Tag                   | 特定のバージョンを示すマーク               |
| CI/CD                 | 継続的インテグレーション/継続的デリバリー   |
| Webhook               | イベントに基づいて自動的に通知を送る仕組み |
| Pull                  | リモートリポジトリから最新の変更を取得すること |
| add| ワーキングツリーからステージングエリアに追加すること |
| Push                  | ローカルでの変更をリモートリポジトリに送信すること |
| revert  | 変更を元に戻すこと|
| Rebase                | ブランチの基点を変更すること               |
| Action                | GitHub Actionsで自動化されたプロセス       |
| Contribution          | プロジェクトへの貢献や参加                 |
| Collaborator          | プロジェクトに参加する他のユーザー         |
| Notifications         | 更新や変更に関する知らせ                   |
| README                | プロジェクトの概要や使用法を説明するファイル |
| Pull Request Template  | プルリクエスト作成時のひな形               |
| Code Review           | コードの品質を評価するためのレビュー       |
| Issues Tracker        | 問題や課題を管理するためのツール           |
| Branch Protection      | 特定のブランチに対する保護設定             |
| Git Flow              | ブランチの運用方法に関する手法             |
| Semantic Versioning    | バージョン番号を意味的に管理する方法       |
| Submodule             | 他のリポジトリをリポジトリ内に含めること   |
| Codebase              | プロジェクト全体のソースコード              |
| Dependency Management  | 依存関係の管理方法                         |
| Release               | ソフトウェアの公式な配布版                 |
| Project Board         | プロジェクトの進行状況を可視化するボード   |
| Code Owners           | 特定のファイルやディレクトリに対する責任者  |


### スラング
プログラミングやソフトウェア開発のコミュニティでは、コード例や説明を簡単にするために、特定の役割を持たないサンプル名や略語を使うことが一般的です。これらの名前や言葉は、コードの本質や実際の内容を隠すことなく示すために便利です。以下に、その代表的なスラングを示します。
| スラング        | 意味                                       |
|-----------------|--------------------------------------------|
| Hoge            | サンプルコードやプレースホルダーとして使われる名前 |
| Foo             | 一般的に使われるプレースホルダー名            |
| Bar             | Fooと一緒に使われることが多いプレースホルダー名 |
| Baz             | Foo、Barと同様に使われるプレースホルダー名     |
| Quux            | さらなる例として使われるプレースホルダー名      |
| Pwn             | 「やっつける」や「制圧する」という意味のスラング  |
| L33t            | 「リータースピーチ」とも呼ばれる、特定の文字を数字や記号で置き換える言葉 |
| TL;DR           | 「Too Long; Didn't Read」の略、長文の要約を示す  |
| YMMV            | 「Your Mileage May Vary」の略、結果が異なる可能性を示す |
| Borked          | 何かが壊れた、または機能しなくなった状態を表す   |
| WIP             | 「Work In Progress」の略、進行中の作業を示す    |
| FOMO            | 「Fear Of Missing Out」の略、何かを逃すことへの恐れ |
| Sudo            | 「Super User Do」の略、管理者権限でコマンドを実行すること |
| Stack Overflow   | プログラミングに関する質問と回答のコミュニティサイトの名前で、問題解決の場としても使われる |


## 技術領域別用語編
技術領域ごとの特有用語は、それぞれの分野での理解を深める上で重要な役割を果たします。以下に、データベース関連、アプリケーション開発、インフラストラクチャに関する用語をまとめます。

### データベース
データベース関連の用語は、システム設計や開発、運用において頻繁に使用されるため、正確な理解が求められます。データベースは、情報を構造化して管理・操作するための基盤であり、適切に設計・運用することで、システム全体のパフォーマンスを大きく向上させることができます。以下に、データベースに関する基本的な用語とその意味をまとめています。
| 用語                  | 意味                                       |
|-----------------------|--------------------------------------------|
| Schema                | データベースの構造や設計を定義するもの    |
| Foreign Key           | 他のテーブルの主キーを参照するカラム       |
| Normalization         | データの冗長性を減らすための設計手法      |
| Primary Key           | テーブル内の各レコードを一意に識別するカラム |
| Index                 | 検索を高速化するためのデータベースの構造   |
| Query                 | データベースに対する問い合わせや命令       |
| Join                  | 複数のテーブルを結合してデータを取得する操作 |
| Transaction           | データベースへの一連の操作をまとめたもの   |
| ACID                  | データベーストランザクションの特性（Atomicity, Consistency, Isolation, Durability） |
| View                  | テーブルのデータを基にした仮想的なテーブル   |
| Stored Procedure      | データベース内に保存されたSQL文の集まり     |
| Trigger               | 特定のイベントに応じて自動的に実行される処理 |
| Data Warehouse        | 大量のデータを蓄積し、分析するためのデータベース |
| OLAP                  | Online Analytical Processingの略、データ分析のための技術 |
| Relational Database    | テーブル形式でデータを管理するデータベース    |
| Data Mart             | 特定のビジネスニーズに特化したデータウェアハウスのサブセット |
| Denormalization       | データを冗長にして検索を高速化する手法      |
| Entity-Relationship Diagram | データベースの設計を視覚化する図        |
| SQL                   | Structured Query Languageの略、データベース操作用の言語 |
| NoSQL                 | 非リレーショナルデータベースの総称          |
| Restore               | バックアップからデータを復元するプロセス     |
| Data Integrity        | データの正確性と一貫性を保つための特性     |
| Sharding              | データベースを分割してスケーラビリティを向上させる手法 |
| CAP Theorem           | 一貫性、可用性、分断耐性に関する理論        |
| Materialized View     | 事前に計算された結果を保存するビュー        |
|  ETL  |データを抽出、変換、ロードするプロセス (Extract, Transform, Load)  |

### アプリケーション開発
#### API関連
アプリケーション開発において、APIはシステム同士が連携するための重要な役割を果たします。特に、Webアプリケーションでは、フロントエンドとバックエンド、または異なるシステム間でのデータのやり取りを効率的に行うために、APIが多用されます。API関連の用語を正しく理解することは、アプリケーションの設計や開発、デバッグを行う際に欠かせません。以下に、API関連に関する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Request Method           | HTTPリクエストの種類（GET, POST, PUT, DELETEなど） |
| JSON                     | データ交換フォーマットとして広く使われる軽量なテキスト形式 |
| OAuth                    | 認証を委譲するためのオープンなプロトコル      |
| REST                     | Webサービスの設計スタイルで、リソースをHTTPで操作する |
| SOAP                     | XMLベースのプロトコルで、Webサービス間の通信に使用される |
| API Endpoint             | APIが特定の機能を提供するURLのこと         |
| Rate Limiting            | APIの使用回数を制限することで、リソースを保護する手法 |
| Webhook                  | 特定のイベントが発生した際にHTTPリクエストを送信する仕組み |
| GraphQL                  | クライアントが必要なデータを正確に要求できるクエリ言語 |
| SDK                      | 特定のプラットフォームやサービス用のソフトウェア開発キット |
| Authentication           | ユーザーやシステムの身元を確認するプロセス   |
| Authorization            | ユーザーに特定のリソースへのアクセス権を付与するプロセス |
| CORS                     | 異なるオリジン間でのリソース共有を制御する仕組み |
| API Documentation        | APIの利用方法や仕様を記述した文書           |
| Throttling               | サービスへのリクエストを制限する手法       |
| JSON Schema              | JSONデータの構造を定義するためのスキーマ    |

#### テスト関連用語
ソフトウェア開発におけるテストは、コードの品質を確保し、潜在的なバグや問題を早期に発見するために欠かせない工程です。テストは開発プロセスのさまざまな段階で実施され、それぞれに目的やスコープが異なります。テストを効率的に実施するためには、基礎的な用語や概念を理解しておくことが重要です。以下に、テストに関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Test Case                | ソフトウェアの機能をテストするための具体的な条件や手順 |
| Framework                | テストを効率的に行うための基盤やライブラリ     |
| Coverage                 | テストがコードのどの程度を網羅しているかを示す指標 |
| Unit Test                | 個々のモジュールや関数をテストするためのテスト |
| Integration Test         | 複数のモジュールが正しく連携するかを確認するテスト |
| End-to-End Test          | システム全体のフローをテストすること         |
| Regression Test          | 新しい変更が既存の機能に影響を与えないか確認するテスト |
| Performance Test         | システムのパフォーマンスを評価するテスト      |
| Smoke Test               | 基本的な機能が動作するかを確認するための簡易テスト |
| Black Box Testing        | 内部の実装を考慮せず、入力と出力のみでテストする方法 |
| White Box Testing        | 内部の実装を考慮してテストを行う方法          |
| Acceptance Test          | ユーザーが受け入れ可能な機能を確認するためのテスト |
| Exploratory Testing      | 仕様に従わず、自由にテストを行う手法         |
| Load Testing             | システムが特定の負荷に耐えられるかを測定するテスト |
| Stress Testing           | システムが限界を超えた負荷に耐えられるかを確認するテスト |
| Usability Testing        | ユーザーエクスペリエンスを評価するためのテスト |

#### デザインパターン
ソフトウェア設計において、デザインパターンは再利用可能な解決策として、特定の設計上の課題に対処するためのテンプレートを提供します。これらのパターンは、オブジェクト指向設計におけるさまざまなシナリオで役立ち、開発者が効率的かつ一貫性のある方法でコードを書くのを助けます。以下に、デザインパターンに関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Singleton                | クラスのインスタンスが一つだけであることを保証するデザインパターン |
| Factory                  | オブジェクト生成を専門に扱うデザインパターン   |
| Observer                 | オブジェクトの状態変化を他のオブジェクトに通知するデザインパターン |
| Strategy                 | アルゴリズムをカプセル化し、動的に選択できるデザインパターン |
| Decorator                | オブジェクトに動的に機能を追加するデザインパターン |
| Command                  | 操作をオブジェクトとしてカプセル化するデザインパターン |
| Adapter                  | 互換性のないインターフェースをつなぐデザインパターン |
| Proxy                    | 他のオブジェクトへのアクセスを制御するデザインパターン |
| Composite                | 複数のオブジェクトを一つのオブジェクトとして扱うデザインパターン |
| Builder                  | 複雑なオブジェクトを構築するためのデザインパターン |
| Iterator                 | コレクションの要素を順次アクセスするためのデザインパターン |
| Mediator                 | オブジェクト間の通信を仲介するデザインパターン |
| State                    | オブジェクトの状態に応じて振る舞いを変えるデザインパターン |
| Template Method          | アルゴリズムの骨組みを定義し、具体的な処理をサブクラスに委譲するデザインパターン |
| Visitor                  | オブジェクトの構造を変更せずに新しい操作を追加するデザインパターン |
| Chain of Responsibility  | リクエストを処理するためのオブジェクトの連鎖を形成するデザインパターン |

#### エラーハンドリング関連
エラーハンドリングは、ソフトウェア開発において欠かせない要素の一つです。プログラムの実行中に発生する予期しないエラーや異常状態に適切に対処することで、システムの安定性や信頼性を向上させることができます。また、エラーの原因を迅速に特定し、修正につなげるための重要な手段でもあります。以下に、エラーハンドリングに関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Exception                | プログラムの実行中に発生するエラーや異常状態  |
| Try-Catch                | 例外を捕捉し、適切な処理を行う構文        |
| Log                      | プログラムの実行状況やエラーを記録するデータ |
| Throw                    | 例外を発生させること                      |
| Finally                  | 例外の有無にかかわらず実行されるブロック   |
| Stack Trace              | エラー発生時の呼び出し履歴を示す情報      |
| Error Code               | エラーの種類を示す番号や文字列            |
| Assertion                | 条件が真であることを確認するための文       |
| Graceful Degradation      | システムが部分的に機能する状態を保つこと  |
| Fault Tolerance          | エラーが発生してもシステムが正常に機能し続ける能力 |
| Retry Logic              | 一時的なエラーに対して再試行を行うロジック  |
| Custom Exception         | アプリケーション特有のエラーを表現するための例外 |
| Logging Level            | ログの詳細度を制御するためのレベル設定     |
| User-Friendly Error Message | ユーザーにわかりやすいエラーメッセージを表示すること |
| Exception Handling Policy | 例外をどのように扱うかの方針              |

#### ユーザーエクスペリエンス（UX）
ユーザーエクスペリエンス（UX）は、製品やサービスを通じてユーザーが得る体験全体を指します。魅力的で直感的なデザインは、見た目だけでなく、使いやすさや効率性、満足感など、さまざまな要素を総合的に考慮する必要があります。以下に、ユーザーエクスペリエンスに関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Interaction Design       | ユーザーとシステムの相互作用を設計するプロセス |
| Prototyping              | 仕様やデザインを視覚化するための試作品作成 |
| Usability Testing        | ユーザビリティを評価するためのテスト      |
| User Journey             | ユーザーが製品を使用する過程の視覚化      |
| Wireframe                | ウェブページやアプリのレイアウトを示す設計図 |
| Persona                  | ターゲットユーザーの典型的なプロファイル   |
| A/B Testing              | 二つのバージョンを比較して効果を測定する手法 |
| Affordance               | ユーザーがオブジェクトの機能を直感的に理解できること |
| User Flow                | ユーザーがシステム内を移動する過程の視覚化 |
| Heuristic Evaluation      | エクスペリエンスを専門家が評価する方法    |
| Emotional Design         | ユーザーの感情に訴えるデザインの原則      |
| Accessibility            | 障害を持つユーザー向けの設計原則          |

### インフラストラクチャ
インフラストラクチャとは、システムやサービスを支える基盤であり、サーバー、ネットワーク、セキュリティ、ツールなど、多岐にわたる要素を指します。これらの要素を適切に活用することで、効率的かつ安全な運用を実現できます。以下では、インフラストラクチャに関連する重要な分野を取り上げ、それぞれの用語についてまとめています
#### IDE・開発ツール
ソフトウェア開発における統合開発環境（IDE）や関連ツールは、コードの記述、デバッグ、ビルドを効率化し、開発者の生産性を向上させるために必要不可欠です。これらのツールは、初心者から熟練の開発者まで、幅広い層に利用されており、プロジェクトの進行をスムーズにする役割を果たします。以下に、IDE・開発ツールに関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Plugin                   | 開発環境に機能を追加するための拡張モジュール   |
| Shortcut                 | 操作を迅速に行うためのキーボード操作         |
| Console                  | コマンドラインインターフェース               |
| Debugger                 | プログラムのエラーを特定するためのツール     |
| Version Control System    | ソースコードの変更履歴を管理するシステム     |
| Code Editor              | ソースコードを編集するためのツール           |
| Terminal                 | コマンドライン操作を行うためのインターフェース |
| Build Tool               | プロジェクトを自動的にビルドするためのツール |
| Linter                   | コードの文法やスタイルをチェックするツール    |
| Package Manager          | ソフトウェアパッケージを管理するツール       |
| Code Formatter           | コードのフォーマットを整えるツール           |
| Snippet Manager          | コードスニペットを管理するためのツール       |
| Source Control Client    | リポジトリへのアクセスを提供するクライアント   |
| Test Runner              | テストを実行するためのツール                 |
| Documentation Generator  | ソースコードから自動的にドキュメントを生成するツール |
| Visual Studio Code       | クロスプラットフォームのコードエディタ       |
| IntelliJ IDEA            | Javaおよび他の言語のための統合開発環境      |
| Xcode                    | macOSおよびiOSアプリケーション開発のためのIDE |
| Eclipse                  | JavaやC++などの多言語に対応したIDE          |
| Atom                     | 設定やプラグインを変更できるテキストエディタ  |
| Sublime Text             | 高速で軽量なコードエディタ                  |
| Notepad++                | Windows向けの人気のあるテキストエディタ     |
| Homebrew                 | macOS用のパッケージ管理ツール                |
| Chocolatey               | Windows用のパッケージ管理ツール              |

#### セキュリティ関連
セキュリティは、情報システムやサービスの運用において最も重要な要素の一つです。システムを守るためのセキュリティ対策は、データの保護、不正アクセスの防止、脆弱性の早期検知など、多岐にわたります。特に開発段階からセキュリティを意識することは、運用段階でのトラブルを未然に防ぐために効果的です。以下に、セキュリティ関連に関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Firewall                 | ネットワークのトラフィックを制御するためのシステム |
| Malware                  | 悪意のあるソフトウェア                     |
| Phishing                 | 偽のサイトを利用して個人情報を盗む詐欺手法   |
| Encryption               | データを暗号化して安全性を高める技術       |
| Antivirus                | マルウェアを検出・除去するためのソフトウェア |
| Authentication           | ユーザーの身元を確認するプロセス           |
| Access Control           | リソースへのアクセス権を管理する仕組み      |
| Vulnerability            | システムの弱点や欠陥                       |
| Data Breach              | セキュリティ侵害によりデータが漏洩すること |
|  MFA | 複数の確認手段を用いた認証プロセス(Multi-Factor Authentication) |
| Security Patch           | システムの脆弱性を修正するためのアップデート |
| Threat Assessment        | 潜在的な脅威を評価するプロセス             |
| IDS | 不正侵入を監視するシステム  (Intrusion Detection System)       |
| Incident Response Plan   | セキュリティインシデントに対する対応計画   |
| DDoS  | 大量のトラフィックでサービスを妨害する攻撃(Distributed Denial of Service) |
| Ransomware               | 身代金を要求するマルウェア                 |
| Social Engineering       | 人間の心理を利用して情報を盗む手法         |
| Patch Management         | ソフトウェアのアップデートを管理するプロセス |
| Security Audit           | システムのセキュリティを評価する調査       |
| Zero-Day Vulnerability   | 公開前に発見された脆弱性                   |
| Tokenization             | データをトークンに置き換えて保護する技術   |
| SIEM | セキュリティ情報とイベントの管理(Security Information and Event Management) |
| Digital Forensics        | デジタルデータの調査・分析技術             |
| IAM  | 身元とアクセスを管理する仕組み(Identity and Access Management)   |
| Endpoint Security        | ネットワークのエンドポイントを保護する技術 |
| Cloud Security           | クラウドサービスのセキュリティ対策         |
| Application Security      | アプリケーションのセキュリティを確保する技術 |
| Network Security         | ネットワークを保護するための技術と手法     |
| Security Awareness Training | セキュリティ意識を高めるための教育       |

#### プロジェクト管理関連の用語
プロジェクト管理は、複雑なタスクを効率よく進行させるために必要不可欠なスキルです。特にIT分野においては、タスクの進捗管理、チーム間の調整、リスク管理など、さまざまな側面からプロジェクトを成功に導くためのツールやプロセスが求められます。以下に、プロジェクト管理に関連する基本的な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Gantt Chart              | プロジェクトのスケジュールを視覚化するツール |
| Resource Management       | プロジェクトに必要なリソースを最適化するプロセス |
| Scope Management          | プロジェクトの範囲を定義し、管理するプロセス |
| Timeline                  | プロジェクトの全体的な時間の流れを示す図 |
| Stakeholder Management     | プロジェクトに関与する利害関係者との関係を管理するプロセス |
| Progress Management       | プロジェクトの進捗状況を監視・評価するプロセス |
| Communication Plan       | プロジェクトにおける情報の流れを計画する文書 |
| Team Building             | プロジェクトチームの結束を高める活動 |
| Project Charter           | プロジェクトの目的や範囲を明確にする文書 |
| Benchmarking              | 他のプロジェクトと比較して性能を評価する手法 |
| Agile Management          | 短いスプリントでの反復的なプロジェクト管理手法 |
| Project Review            | プロジェクトの進捗と成果を評価するための会議 |

## その他
### AI・機械学習関連の用語
AIと機械学習は、データをもとに学習し、予測や分類を行う技術であり、近年の技術革新の中心的な分野です。これらの技術を活用することで、問題解決の効率化や自動化が進み、さまざまな業界でその応用が広がっています。以下では、AIや機械学習に関連する主要な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Dataset                  | 機械学習モデルのトレーニングに使用されるデータの集合 |
| Model                    | データから学習したパターンを表現する数学的構造 |
| Training                 | モデルをデータセットを使って学習させるプロセス |
| Testing                  | 学習したモデルの性能を評価するためのプロセス |
| Overfitting              | モデルが訓練データに過剰に適合し、一般化能力が低下する現象（過学習） |
| Underfitting             | モデルがデータのパターンを十分に学習できず、性能が低い状態（未学習） |
| Feature                  | モデルが学習するためのデータの特性や属性 |
| Label                    | データポイントに関連付けられた出力の値（ラベル） |
| Supervised Learning      | ラベル付きデータを用いてモデルを学習させる手法（教師あり学習） |
| Unsupervised Learning    | ラベルなしデータを用いてモデルを学習させる手法（教師なし学習） |
| Reinforcement Learning    | 環境との相互作用を通じて学習する手法（強化学習） |
| Neural Network           | 人間の神経回路を模倣した計算モデル（ニューラルネットワーク） |
| Deep Learning            | 多層のニューラルネットワークを用いた学習手法（深層学習） |
| Hyperparameter           | モデルの学習過程を制御するためのパラメータ（ハイパーパラメータ） |
| Cross-Validation         | モデルの性能を評価するためのデータ分割手法（交差検証） |
| Gradient Descent         | モデルのパラメータを最適化するための最適化手法（勾配降下法） |
| Loss Function            | モデルの予測と実際の値の差を測定する関数（損失関数） |
| Clustering               | データを類似性に基づいてグループ化する手法（クラスタリング） |
| Dimensionality Reduction  | データの次元を減少させる手法（次元削減） |
| Transfer Learning        | 既存のモデルを新しいタスクに適用する手法（転移学習） |
| Regularization           | モデルの複雑さを制御し、過学習を防ぐ手法（正則化） |
| Ensemble Learning        | 複数のモデルを組み合わせて性能を向上させる手法（アンサンブル学習） |
| Decision Tree            | データを分岐させて分類・回帰を行うモデル（決定木） |
| Random Forest            | 複数の決定木を組み合わせたアンサンブル手法 |
| SVM                   | データを分類するための線形モデル (Support Vector Machine） |
| KNN                      | データポイントの近傍を利用した分類手法（K最近傍法, K-Nearest Neighbors） |
| PCA                      | データの次元を削減する手法（主成分分析, Principal Component Analysis） |
| CNN                      | 画像データ処理に特化したニューラルネットワーク（畳み込みニューラルネットワーク, Convolutional Neural Network） |
| RNN                      | 時系列データ処理に特化したニューラルネットワーク（再帰型ニューラルネットワーク, Recurrent Neural Network） |
| Batch Normalization      | 学習の安定性を向上させるための手法（バッチ正規化） |
| Data Augmentation        | 学習データを増やすための手法（データ拡張） |
| Outlier Detection        | 異常値を特定するための手法（外れ値検出） |
| Feature Engineering      | モデルの性能向上のための特徴量の作成 |
| Model Evaluation         | モデルの性能を評価するための手法（モデル評価） |
| Confusion Matrix         | 分類モデルの性能を視覚化するための行列（混同行列） |
| ROC Curve                | モデルの性能を視覚化するための曲線（ROC曲線） |
| AUC                      | ROC曲線の下の面積でモデルの性能を評価する指標（曲線下面積, Area Under Curve） |
| Scikit-learn             | Pythonの機械学習ライブラリ |
| TensorFlow               | Googleが開発した機械学習フレームワーク |
| PyTorch                  | Facebookが開発した機械学習フレームワーク |
| Keras                    | TensorFlowの上に構築された高レベルAPI |
| Natural Language Processing | 自然言語処理 |
| Generative Adversarial Network | 生成モデルの一種で敵対的に学習する |
| Feature Selection        | モデルにとって重要な特徴量を選択する手法（特徴選択） |

### クラウド・DevOps関連
クラウド技術とDevOpsは、現代のソフトウェア開発と運用を効率化し、迅速なリリースと高い信頼性を実現するための手法やプロセスです。クラウドは、インフラを柔軟かつスケーラブルに提供し、DevOpsは開発と運用の連携を促進します。これにより、ビジネス要件の変化に迅速に対応できるシステムの構築が可能になります。以下に、クラウドやDevOpsに関連する重要な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| Orchestration            | 複数のサービスやコンポーネントを統合し、自動化するプロセス|
| Scaling                  | システムのリソースを増減させ、負荷に応じて性能を調整する手法 |
| Continuous Integration    | コードの変更を自動でテスト・統合するプロセス  |
| Continuous Deployment     | アプリケーションを自動的に本番環境に展開するプロセス  |
|  IaC | インフラストラクチャをコードとして管理する手法 (Infrastructure as Code) |
| Containerization         | アプリケーションをコンテナにパッケージ化する手法|
| Microservices            | アプリケーションを小さな独立したサービスに分割するアーキテクチャ |
| Load Balancing           | トラフィックを複数のサーバーに分散させる手法  |
| Monitoring               | システムの性能や稼働状況を監視するプロセス  |
| Disaster Recovery         | システム障害からの回復を計画・実行する手法  |
|  SLA | サービス提供者と顧客の間で合意されたサービスの品質基準 (Service Level Agreement) |
| DevOps                   | ソフトウェア開発と運用を統合する文化や手法  |
| Cloud Computing          | インターネットを通じて提供されるコンピュータリソース  |
| Serverless Architecture  | サーバー管理を不要にするアーキテクチャスタイル |


### ドメイン固有の用語
ドメイン・ドリブン・デザイン（DDD）は、特定のビジネス領域を理解し、その知識をソフトウェア設計に反映させるためのアプローチです。この手法では、ドメインモデルを中心にシステムを構築し、ビジネスロジックを明確かつ一貫性を持って管理することを重視します。以下に、ドメイン・ドリブン・デザインにおける主要な用語とその意味をまとめています。
| 用語                     | 意味                                       |
|--------------------------|--------------------------------------------|
| DDD  | ドメインモデルを中心にシステムを設計する手法 (Domain-Driven Design)|
| Domain Model           | 特定のビジネス領域を表現するための概念やデータ構造 |
| Entity             | ドメイン内の重要なオブジェクトやデータの実体 |
| Value Object           | 状態を持たず、属性の集合として扱われるオブジェクト |
| Aggregate             | 一貫性を保ちながら管理されるエンティティの集合  |
| Service                 | ビジネスロジックを実装するクラスやモジュール  |
| Domain Event         | ドメイン内で発生する出来事を表現するオブジェクト  |
| System Boundary             | システムと外部とのインターフェースや境界を定義する  |
| Storming         | プロジェクトに関与する利害関係者  |
| Event Storming     | ドメインイベントを視覚化し、ビジネスロジックを整理する手法 |



# 参考にしたサイト
[クラス名のアンチパターン](https://qiita.com/magicant/items/8134edf969f9629fa66e)
[ネイティブと働いて分かった英語コミットメッセージの頻出動詞10つ](http://qiita.com/gogotanaka/items/b65e1b081fa976e5d754)
[GitHubで使われている実用英語コメント集](https://qiita.com/shikichee/items/a5f922a3ef3aa58a1839)
[IT英単語の発音とスペル](https://qiita.com/bezeklik/items/ad32492b5c247399dca9)
[英語コミットコメントに使えるオシャレフレーズ集](http://qiita.com/ken_c_lo/items/4cb49f0fb74e8778804d)
[プログラマなのに知らなかったら恥ずかしい英単語集](http://qiita.com/usatie/items/b41adf8114188406d2b8)
[今更聞けないIT英語](http://ascii.jp/elem/000/000/061/61358/)
[関数名によく使われる英単語の意味とニュアンス](http://php-archive.net/php/words-in-function-names/)
[プログラミングでよく使う英単語のまとめ](https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923)

::: note
弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。
また、Nucoでは一緒に働く仲間も募集しています！興味をお持ちいただける方は、[こちら](https://www.recruit.nuco.co.jp/?qiita_item_id=e943df404b56f1126)まで。
:::