私的IT用語辞典「VO, DI, DTOって何?クラス設計に出てくる略語・用語1行まとめ」

コンピュータ

個人的によく目にして、検索する用語をを記事にまとめました。

クラス名によく使われる用語

Factory
オブジェクトの生成処理を担当するクラス。初期化や依存注入の調整を担う。生成のみ → Factory
Loader
ファイルやネットワークなど外部リソースから読み込む。I/Oやファイル操作含む → Loader
Repository(DDD)
ドメイン層とインフラ層をつなぐインターフェイスで、データアクセスを抽象化する。I/Oを抽象化して再利用したい → Repository
Service(DDD)
Entity単体では表現できない振る舞いを担う、処理のロジック集。
UseCase
ユーザーの操作や要求を実現する、アプリケーションの実行単位。
Controller(MVC)
外部からの入力を受け取り、適切なユースケースやサービスに振り分ける役割。
ViewModel(MVC,MVVM)
UIに最適化されたデータを提供し、Viewとのバインディングを担う。
Model(MVC,MVVM)
アプリケーション内のデータ構造や状態を表すクラス。文脈により意味が異なる。
Store
ストック(stock)する場所。対価を支払い物品を提供する場所。
Adapter
異なるインターフェイスを接続するための変換クラス。外部仕様との整合に使う。
Handler
イベントや入力に応じた具体的な処理を行う小さな実行ユニット。
Manager
複数のオブジェクトや状態をまとめて管理する統括役。ステートフルなことが多い。
Context
操作中に保持される共有情報(ユーザー、設定、状態など)のコンテナ。
Helper
ある処理の補助を目的とした小さな関数群。UIやAPI補佐などに用いる。
Utility
ドメインに依存しない技術的な共通処理をまとめた静的クラス群。
Interface
契約としての型。依存関係の逆転や実装の切り替えを容易にする鍵となる。
Provider(プロバイダ)
プログラマの世界では「何かをくれる人(クラス)」のこと。設定をくれるConfigurationProvider、データをくれるDataProvider、認証をくれるAuthProviderなど、名乗ればだいたい許される。
Lazy
遅延評価のこと。C#などの言語で用いられ、`Lazy` クラスを使うと、初めてアクセスされたときにのみ値を生成する仕組みが実装できる。高負荷なオブジェクトの生成や、必要になるまで初期化したくない場面で使われる。

クラスの設計に関する用語

Entity(DDD)
識別子と状態を持ち、時間とともに変化するドメインの中核的な存在。
ValueObject(DDD)
同じ値であれば同一とみなす、意味を持った不変の小さなオブジェクト。
POCO(Plain Old CLR Object)
.NETにおける依存のない素朴なクラス。構造的特徴を示す用語で、名前にはあまり使われない。
DTO(Data Transfer Object)
層やプロセス間でデータをやり取りするための専用オブジェクト。読み取り専用の場合が多い。
DI(Dependency Injection)
依存するオブジェクトを外部から注入することで、柔軟性とテスト性を高める設計手法。

略語系

ORM(Object-Relational Mapping)
オブジェクトとリレーショナルデータベースの橋渡しをする仕組み。
MVC(Model-View-Controller)
データとUIと制御を分離して構成するアーキテクチャパターン。
MVVM(Model-View-ViewModel)
双方向バインディングを用いたUI構築パターン。WPFやReactで多用される。
API(Application Programming Interface)
ソフトウェア同士が連携するための入り口・契約。
SDK(Software Development Kit)
APIやライブラリを使いやすくする開発用パッケージ一式。
IDE(Integrated Development Environment)
コード編集、補完、デバッグなどを統合した開発ツール。
CLI(Command Line Interface)
コマンド入力で操作するUI。対義語はGUI。
GUI(Graphical User Interface)
視覚的に操作できるユーザーインターフェース。
CPU(Central Processing Unit)
中央演算装置。いわゆる「頭脳」部分。
GPU(Graphics Processing Unit)
画像処理・並列演算に特化した演算ユニット。
DSL(Domain Specific Language)
特定分野に特化した言語。例:SQLや正規表現。

デザインパターン

Singleton
アプリケーション全体で1つだけのインスタンスを保証するパターン。
Factory Method
サブクラスに生成処理を委ねることで、柔軟なオブジェクト生成を可能にする。
Abstract Factory
関連する一連のオブジェクト群を、具体クラスを指定せずに生成する仕組み。
Builder
複雑なオブジェクトを段階的に構築するパターン。構築手順を分離できる。
Prototype
元となるオブジェクトを複製(クローン)して新しいインスタンスを作成する。
Adapter
互換性のないインターフェイスを変換して接続する“変換器”。
Bridge
実装と抽象を分離して、両者を独立に拡張できるようにする構造。
Composite
個々のオブジェクトとそれらの集合を同一視して扱える構造を作る。
Decorator
既存のオブジェクトに新しい機能を動的に追加する。
Facade
複雑なサブシステムの使い方を簡略化する外窓口(まとめ役)。
Observer
オブジェクトの状態変化を購読者に通知する仕組み(Pub-Subとも)。
Strategy
振る舞いを切り替え可能なアルゴリズム単位としてカプセル化する。
Command
処理の要求(命令)をオブジェクトとして切り出し、実行を遅延・記録可能にする。
State
オブジェクトの内部状態に応じて振る舞いを変えるパターン。
Template Method
アルゴリズムの骨組みをスーパークラスで定義し、詳細をサブクラスに任せる。
Visitor
構造を変えずに新しい操作を定義できる。構文木などで活躍。
Proxy
元のオブジェクトへのアクセス制御・遅延評価・ログなどを代行する。

プログラムの流れと制御に関する用語

順次処理
コードを上から順番に実行する、最も基本的な処理の流れ。
分岐処理
条件に応じて処理の流れを変える(if、switchなど)。
ループ処理
同じ処理を繰り返す構造(for、while、foreachなど)。
並列処理
複数の処理を同時に実行することで全体の処理時間を短縮する手法。
並行処理(Concurrency)
見かけ上同時に複数の処理が動いているように見える制御。CPUコア数とは無関係に使える。
非同期処理
時間のかかる処理を待たずに次の処理を進め、完了後に結果を受け取る流れ。
同期処理
ひとつの処理が終わるまで次の処理を待つ、直列的な実行方式。
マルチスレッド
1つのプログラム内で複数のスレッドを並行実行する仕組み。
マルチプロセス
複数の独立したプロセスで処理を分担する手法。クラッシュの影響が小さい。
パイプライン処理
処理を複数の段階に分け、出力を次の入力とするバケツリレー方式。
キュー(Queue)
処理を順番に管理するデータ構造で、FIFO(先入れ先出し)で使われることが多い。
スタック(Stack)
LIFO(後入れ先出し)で管理するデータ構造。関数の呼び出しに使われる。
イベントループ
非同期処理の実行順序を管理するループ構造。JavaScriptやNode.jsで重要。
コールバック
処理完了後に呼び出される関数。非同期処理の通知や継続に使われる。
スレッドセーフ
複数スレッドから同時にアクセスされても動作が破綻しない設計。
プリフェッチ(Prefetch)
今後使いそうなデータを先回りして読み込むことで処理を高速化する技術。

設計・コーディング原則

KISS(Keep It Simple, Stupid)
設計やコードは可能な限り単純であるべきという原則。
DRY(Don’t Repeat Yourself)
同じコードや情報を繰り返さず、再利用性を高める設計指針。
YAGNI(You Aren’t Gonna Need It)
将来必要になるかもしれない機能は今は実装しないという考え方。
PIE(Prototype, Iterate, Evolve)
試作→反復→進化によってソフトウェアを発展させる開発スタイル。
SLAP(Single Level of Abstraction Principle)
メソッド内のコードは同じ抽象度に揃えるという原則。
OCP(Open/Closed Principle)
ソフトウェアは拡張に開かれ、修正に閉じているべきという設計原則。

懐古・インターネット老人会

かつてよく使われていた用語。古い世代とのコミュニケーション用

ROM(Read Only Memory)
読み込み専用メモリ。最近見なくなった。カセット交換式ゲーム機
ROM(Read Only Member)
掲示板などを「読むだけ」の人。2ちゃんねる(現5ch)などで使われたネットスラング。ROM専とも。
RAM(Random Access Memory)
読み書き可能な揮発性メモリ。かつてはROMとの対比でよく使われていたが、ROMという言葉が使われなくなったことで、RAMという言葉自体もあまり意識されなくなった。
5インチベイ
DVDドライブやHDDトレイを入れる場所。今では廃止されたPCケースも多いが、我が家ではいまだに現役。
BIOS(Basic Input/Output System)
UEFIに名称変更されましたが、機能的にそれほど違いを感じない。古参のPCユーザーが使いがち。

コメント